chromium系列(6) -- Blink MediaPlayer的实现

本文详细探讨了Chromium系列中的Blink MediaPlayer实现,涵盖了Media相关知识,包括MUX和DEMUX、编码和解码。重点讲解了MediaPlayer的使用、Pipeline的主要模块和工作流程,特别是与FFmpeg的集成,以及数据缓存、音频和视频解码的过程。此外,还介绍了WebMediaPlayerImpl的创建流程和不同SurfaceLayerMode下的渲染模式。
摘要由CSDN通过智能技术生成

chromium系列(6) – Blink MediaPlayer的实现

Media相关知识

MUX和DEMUX

Mux 是 Multiplex 的缩写,意为“多路传输”,其实就是“混流”、“封装”的意思,与“合成”的意思相似就是指把视频素材和音频素材封装到一个单独的文件中。
通过 muxing(混流),可以将视频流、音频流甚至是字幕流捆绑到一个单独的文件中,作为一个信号进行传输,等传输完毕,就可以通过 demuxing(分离) 将里面的视频、音频或字幕分解出来各自进行解码和播放。
要点:
在 muxing 与 demuxing 的整个过程,都不对原来的视频、音频或字幕重新编码。混流(封装、打包)后的文件,可以通过分离(分解、解包)操作,获得与原始素材一模一样的独立的视频、音频和字幕文件。

视频的分离与合成,编码和解码

对媒体流的处理分为两种:“编码(encoding)”和“解码(decoding)”。编码指的是通过一定协议或规则把一段声音或图像转化成计算机数字文件的过程。而解码恰恰是编码的反面——把编码过的媒体文件重新转化成声音或图像。
用来执行编码工作的软件叫“编码器”(Coder 或 Encoder);
用来执行解码工作的软件叫“解码器”(Decoder)
“编码器”与“解码器”合称“编解码器”(“Codec”)。
声音与图像是两种不同的媒体,它们分别对应人的两种不同感官。作为不同的媒体,我们只能用专门针对声音的软件或是专门针对视频的软件去分别分析处理音频流(Audio Stream)与视频流(Video Stream)。
用来编码音频流的软件叫作“音频编码器”(Audio Encoder)
用来编码视频流的软件叫作“视频编码器”(Video Encoder)
用来解码音频流的软件叫作“音频解码器”(Audio Decoder)
用来解码视频流的软件叫作“视频解码器”(Video Decoder)
音频流与视频流的处理必须分别进行,即:
“音频编码器”编码出单个音频文件,
“视频编码器”编码出单个视频文件,
“音频解码器”单独对音频文件进行解码还原,
“视频解码器”单独对视频文件进行解码还原。
既然音频处理和视频处理必须单独运行,那为什么我们平时看的RMVB、AVI格式的电影都是既包含声音又包含图像的单个文件呢?那是因为我们在通过摄像机获得单独的音频流和视频流后不仅对它们进行了“编码”,还对它们进行了“合成”(Synthesis)。通过合成,音频与视频就打包到一起,生成一个单独的文件。可以说,所有既有声音又有图像的视频文件,100%都是通过某种合成器(Synthesizer)合成过的。(注意:“合成”与“合并”不同,见最后的参考帖子。)
然而必须知道的是:尽管通过合成器可以把音频流和视频流打包成一个文件,但是正如人的眼睛不可能听、人的耳朵不可能看,音频流和视频流是不可能完全地混杂到一起的,是注定“分离”的。因此,所谓“合成”,只是把音频流和视频流用一个容器文件(Container)封装起来,其实里面还是各自独立的。我们在播放视频文件的时候总是先调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值