视频播放器开发 - 基本原理

在做视频播放器之前,我们先了解一些基本定义。

基本定义

视频

连续的图像变化每秒超过24帧画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫做视频。

帧率

指的是视频格式每秒钟播放的静态画面数量。典型的画面更新率由早期的每秒6或8张(frame per second,简称fps)至现今的每秒120张不等。

编解码

我们知道,其实视频就是一帧一帧的图片。计算一下,一部25帧每秒,90分钟,分辨率为1024*768,24位真彩色的视频,没有经过压缩,大小为

1Byte(字节) = 8bit(位)
一帧大小 = 1024 * 768 * 24 = 18874368(bit) = 2359296(Byte)
总帧数 = 90 * 60 * 25 = 135000
总大小 = 一帧大小 * 总帧数 = 2359296 * 135000 = 318504960000(Byte)= 303750(MB)≈ 296(GB)

从上面的计算可以看出,我们储存一部90分钟没压缩的电影需要296GB的,2部电影便可占满我们电脑整个硬盘。所以我们需要对视频进行压缩,这种视频压缩技术就是我们所说的编码。解码就是将编码的视频解压缩处理。

封装格式

封装格式指的是压缩过的视频数据和音频数据打包成一个文件的规范。我们常见的mp4,flv,avi,rmvb,mkv等,都是代表视频的封装格式。

基本原理

播放视频的基本流程是:解协议 → 解封装 → 解码 → 视音频同步

解协议

就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。

解封装

就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。

解码

就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。

视音频同步

就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

参考资料

[总结]视音频编解码技术零基础学习方法
百度百科 - 视频

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程设计: 1.概述 本课程旨在介绍如何开发一个基于web的视频播放器。通过学习本课程,学生将能够掌握HTML5、CSS3和JavaScript等前端技术,了解视频编解码原理,掌握常见视频格式和协议,以及了解常用的视频播放器框架和API。 2.课程内容 2.1 前端技术 2.1.1 HTML5和CSS3 HTML5和CSS3是前端开发的基础技术,是开发web应用和网页的必备技能。本课程将介绍HTML5和CSS3的相关知识,包括语法、标签、样式、布局等内容。 2.1.2 JavaScript JavaScript是一种动态脚本语言,用于开发web应用和网页的交互效果。本课程将介绍JavaScript的相关知识,包括语法、变量、函数、对象、事件等内容。 2.2 视频编解码原理 2.2.1 视频编解码原理 视频编解码是将视频信号转换为数字信号,并将数字信号转换为视频信号的过程。本课程将介绍视频编解码的基本原理,包括采样、量化、编码、解码等内容。 2.2.2 常见视频格式和协议 本课程将介绍常见的视频格式和协议,包括MPEG、AVI、FLV、H.264、RTMP等内容。 2.3 视频播放器框架和API 2.3.1 常见视频播放器框架 本课程将介绍常见的视频播放器框架,包括Video.js、JW Player、Flowplayer等内容。 2.3.2 视频播放器API 本课程将介绍视频播放器API,包括播放、暂停、停止、快进、快退、音量控制等内容。 3.课程目标 通过学习本课程,学生将能够: - 掌握HTML5、CSS3和JavaScript等前端技术; - 了解视频编解码原理,掌握常见视频格式和协议; - 了解常用的视频播放器框架和API; - 开发一个基于web的视频播放器。 4.教学方法 本课程采用理论讲解和实践操作相结合的教学方法。理论讲解主要介绍相关概念和知识,实践操作主要通过编写代码实现视频播放器开发。 5.考核方式 本课程考核方式为实验报告和视频播放器开发项目。实验报告要求学生对课程内容进行总结和归纳,视频播放器开发项目要求学生独立完成一个基于web的视频播放器,并提交完整的源代码和演示视频。 6.参考书目 - 《HTML5与CSS3基础教程》 - 《JavaScript高级程序设计》 - 《视频编码技术与标准》 - 《流媒体技术与应用》 - 《Web前端开发技术

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值