日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

播放器的基本原理

發布時間:2024/1/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 播放器的基本原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


轉載地址:

http://blog.csdn.net/iloveyin/article/details/24366129


播放器解決了視頻播放的問題。通常來說,解決問題最好的辦好就是大而化小,小而化無。因為整個播放過程是一個復雜的過程,所以播放器也采用分而治之的辦法。

簡單來說,這個大問題可以分解為四個小問題。

1,數據接收;

2,數據解析;

3,數據解碼;

4,數據輸出。

我會對mplayer和vlc這兩個開源播放器的代碼結構來說明這四個問題。

一,數據接收(access)

自然,我們不能無中生有,要處理數據,總要有數據來源才行。但是數據來源的渠道有很多種。

可能是硬盤文件,可能是dvd光盤,也可能是http/httplive數據包,也可能是rtp數據包(vod),或者ftp,廣播電視的ts流等等。

所以第一步我們要處理的問題就是如何把不同的數據來源統一一個接口。這需要不同數據包解析器,也就是實現不同的協議來滿足這個需求。

對于mplayer,相關的代碼在strearm,

對于vlc,相關的代碼在/modules/access

查看代碼目錄,里面文件名可以和我們前面說的一些數據來源一一對應。所以如果我們需要實現某種協議,大抵是可以從這里獲取一些實現思路的。

二,數據解析(demux)

有了數據了,我們還要解析這些數據。

為了方便媒體文件的傳輸,我們要把音頻,圖像,同步信息等等一堆信息放到一起(就是上一篇說的容器),這個過程就是mux(multiplex)。

但是為了方便媒體文件的處理,我們又需要解復用demux(Demultiplexer)

Container是為了解決的傳輸而誕生的,demux就是為了解析而誕生的。

不同的容器需要不同的解析器,就是不同的demux接口,為了方便編程,我們同樣需要統一接口。我們來看看mplayer和vlc是如何做的。

mplayer把相關代碼放在了libmpdemux里面。

vlc把相關代碼放在/modules/demux里面。

這兩個代碼統一各種容器的解析方式(就是我們常見的avi,ts,mkv的解析)。

不過需要注意的是,這些代碼很大一部分都是warp的ffmpeg/libavformat里面的代碼。

三,解碼(decode)

上面那個過程把音視頻數據分離,我們得到的數據可能是mpeg-2/h.264壓縮的視頻,也可能是mp3/aac/ac-3等音頻數據。

但是這些數據都是壓縮過的,我們知道,屏幕是由一個一個的點結成的,這一個一個點又是由rgb來描述的,聲卡是處理一個一個音頻幀的。

這個過程我們要解決的問題就是把壓縮過的數據還原出來。如何還原?沒錯,靠我們的解碼器。

上一篇說了不同的解碼標準,現實中的情況是,我們有了一個標準,但是我們可能根據這個標準來實現不同的解碼器。就像我們有一張桌子的草圖,但是我們做的桌子卻有不同的顏色一個。標準有了,實現可以不同。

mplayer把這塊代碼放到libmpcodecs里

vlc把這塊代碼放到/modules/codec里

不過要指出的是,這兩塊代碼同樣大部分是在warp ffmpeg/libavcodec。

ffmpeg真是做為神一樣庫而存在啊。

四,數據輸出(render)

準備好了解碼后的數據,就差最好一步輸出了。

視頻通常會解碼為yuv數據,音頻通常會解碼為pcm數據。然后我們把這些數據分別放到屏幕和聲卡里,播放過程就算完成了。

同樣,數據輸出也有很多渠道,也需要統一。

圖像可能會輸出到sdl,x11或者framebuffer,或者directfb,也可能是wingdi。

音頻可能會出到oss,alsa,等等。

為了統一這些,vlc和mplayer同樣warp了一些庫,

mplayer放到libvo與libao

vlc放到/modules/audio_out與/modules/video_out。



總結

以上是生活随笔為你收集整理的播放器的基本原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。