音视频方案,音视频扩展内容(编码解码器) (笔记)2
?視頻方案,雷霄驊的專欄- http://blog.csdn.net/leixiaohua1020
> LAV Filter
? LAV Filter 是一款開源的DirectShow視頻分離和解碼軟件,他的分離器LAVSplitter封裝了FFMPEG中的libavformat,解碼器LAVAudio和LAVVideo則封裝了FFMPEG中的libavcodec。它支持十分廣泛的視音頻格式。
? LAV Filter- https://github.com/Nevcairiel/LAVFilters http://code.google.com/p/lavfilters/
LAV Filter支持狀況:
?封裝格式:MKV/WebM, AVI, MP4/MOV, MPEG-TS/PS (including basic EVO support), FLV, OGG, 以及其他ffmpeg支持的格式!
?視頻編碼:H264, VC-1, MPEG-2, MPEG4-ASP (Divx/Xvid), VP8, MJPEG 等。
?音頻編碼:AAC, AC3, DTS(-HD), TrueHD, MP3/MP2, Vorbis, LPCM 等。
?字幕編碼:VOB, DVB Subs, PGS, SRT, SSA/ASS, Text
? 流媒體數(shù)據(jù)傳輸中的時延和抖動是可以通過緩存的辦法減少影響,所以流媒體業(yè)務(wù)可以允許在一定范圍內(nèi)的時延和抖動。但丟包會對流媒體數(shù),據(jù)播放質(zhì)量造成極其重大的影響。丟包率會造成視頻和音頻質(zhì)量嚴重惡化,小的丟包率會造成圖像的失真和語音的間歇中斷,過高的丟包率甚至可以導(dǎo)致業(yè)務(wù)的中斷。網(wǎng)絡(luò)設(shè)計的目標是丟包率為零,但顯然不存在這樣的理想網(wǎng)絡(luò)。所以丟包的大小將直接決定流媒體業(yè)務(wù)質(zhì)量的好壞。
? LAV Filter 是一款視頻分離和解碼軟件,他的分離器封裝了FFMPEG中的libavformat,解碼器則封裝了FFMPEG中的libavcodec。它支持十分廣泛的視音頻格式。LAV Filter 中最著名的就是 LAV Splitter,支持Matroska /WebM,MPEG-TS/PS,MP4/MOV,FLV,OGM / OGG,AVI等其他格式,廣泛存在于各種視頻播放器(暴風影音這類的)之中。
源代碼位于GitHub或Google Code:https://github.com/Nevcairiel/LAVFilters http://code.google.com/p/lavfilters/
?LAV Filter整個解決方案由8個工程組成,以下為一部分:
? baseclasses:DirectShow基類,在DirectShow的SDK中也有,是微軟為了簡化DirectShow開發(fā)而提供的。
? Demuxers:解封裝的基類,LAVSplitter需要調(diào)用其中的方法完成解封裝操作。
? LAVAudio:音頻解碼Filter。封裝了libavcodec。
? LAVSplitter:解封裝Filter。封裝了libavformat。
? LAVVideo:視頻解碼Filter。封裝了libavcodec。
? libbluray:藍光的支持。
? LAV Video 是使用很廣泛的DirectShow Filter。它封裝了FFMPEG中的libavcodec,支持十分廣泛的視頻格式的解碼。
? Media Player Classic - Home Cinema
? Dolphin播放器(Dolphin Player)是一款開源的音頻和視頻播放器,它支持大多數(shù)的音頻和視頻文件模式,也支持大部分的字幕文件格式。它是基于ffmpeg的。http://code.google.com/p/dolphin-player/。live555是使用十分廣泛的開源流媒體服務(wù)器。
> DirectShow Filter
? DirectShow Filter,字幕疊加(FilterTitleOverlay)。DirectShow的視頻播放器。DirectShow是一個龐大的框架,可以在Windows下實現(xiàn)多種多樣的視頻處理需求。
> ffdshow
? ffdshow封裝了多個視音頻解碼器,比如libmpeg2,libavcodec,xvid等等。其中最重要的是libavcodec,這個是ffmpeg提供的解碼器,在ffdshow中起到了“挑大梁”的作用。
? fdshow支持很多種濾鏡,可以支持多種視頻和音頻的后期效果。例如OSD濾鏡支持在視頻的左上角顯示視頻相關(guān)的信息。而可視化濾鏡則支持顯示視頻每一幀的運動矢量以及量化參數(shù)。位圖覆蓋(Bitmap)濾鏡(Filter)。
> SDL播放視頻的技術(shù)
?實際上SDL本身并不提供視音頻播放的功能,它只是封裝了視音頻播放的底層API。在Windows平臺下,SDL封裝了Direct3D這類的API用于播放視頻;封裝了DirectSound這類的API用于播放音頻。因為SDL的編寫目的就是簡化視音頻播放的開發(fā)難度,所以使用SDL播放視頻(YUV/RGB)和音頻(PCM)數(shù)據(jù)非常的容易。
?SDL(Simple DirectMedia Layer)是一套開放源代碼的跨平臺多媒體開發(fā)庫,使用C語言寫成。SDL提供了數(shù)種控制圖像、聲音、輸出入的函數(shù),讓開發(fā)者只要用相同或是相似的代碼就可以開發(fā)出跨多個平臺(Linux、Windows、Mac OS X等)的應(yīng)用軟件。目前SDL多用于開發(fā)游戲、模擬器、媒體播放器等多媒體應(yīng)用領(lǐng)域。純音頻,不包含視頻的那種。SDL播放音頻,一般情況下不會有問題。
FFMPEG+SDL的簡單播放器,FFMPEG用于編解碼,SDL用于視頻渲染。Github:https://github.com/leixiaohua1020/simplest_ffmpeg_player
常用編碼軟件簡單使用記錄 2 : 非自主編碼器- https://blog.csdn.net/leixiaohua1020/article/details/39510759
> 最簡單的視頻編碼器:編譯(libx264,libx265,libvpx),?
?x264,x265,vpx這三個開源的視頻編碼器可以說是當今“最火”的視頻編碼器。x264現(xiàn)在占據(jù)著H.264視頻編碼器的半壁江山;x265則是目前實現(xiàn)H.265標準最好的開源視頻編碼器,并且在未來可能接替x264;而vpx則是Google推出的開源視頻編碼器,它提出的VP9編碼標準的性能也不錯。
?1.最簡單的視頻編碼器:基于libx264(編碼YUV為H.264)
?“輕量級”的編碼器。因為它不再包含F(xiàn)Fmpeg的代碼,直接調(diào)用libx264完成編碼。因此項目的體積非常小巧。該編碼器可以將輸入的YUV數(shù)據(jù)編碼為H.264碼流文件。
?2.最簡單的視頻編碼器:基于libx265(編碼YUV為H.265),H.265(HEVC)
?“輕量級”的編碼器。因為它不再包含F(xiàn)Fmpeg的代碼,直接調(diào)用libx265完成編碼。因此項目的體積非常小巧。該編碼器可以將輸入的YUV數(shù)據(jù)編碼為H.265碼流文件。
?3.最簡單的視頻編碼器:基于libvpx(編碼YUV為VP8),基于libvpx的VP8視頻編碼器
? 與H.264不同,VP8的裸流(即不包含封裝格式的純視頻數(shù)據(jù)流)是不能播放的。換言之,VP8的裸流必須存放在容器中才可以播放。官方示例代碼中存儲VP8視頻流的封裝格式是IVF。
? Dan Grois等人在論文《Performance Comparison of H.265/MPEG-HEVC, VP9, andH.264/MPEG-AVC Encoders》中,比較了下一代編碼標準HEVC,VP9的以及當前主流編碼標準H.264之間的性能。
?選用的編碼器如下:HEVC:HM;VP9:libvpx;H.264:x264。
?Google ?VP8/Vorbis/WebM (統(tǒng)稱為 WebM)?;贖EVC(H.265)的的應(yīng)用級別的編碼器發(fā)展的速度很快。所說的應(yīng)用級別,就是指速度比較快的,有實際應(yīng)用價值的編碼器。目前可以直接使用的有兩個:x265,DivX265。DivX265是DivX發(fā)布的HEVC編碼器,不開源,但是免費,是基于控制臺的。
> libVLC的視頻播放器
? 最簡單的基于libVLC的視頻播放器。VLC Media Player是一款優(yōu)秀的播放器,但是由于它的源代碼編譯的難度比較大,一直沒有深入研究過它的開發(fā)方面的技術(shù)。最簡單的基于libVLC的視頻播放器(圖形界面版)。最簡單的基于libVLC的推流器。
> YUV/RGB播放器,既支持YUV又支持RGB的播放器
?與RGB每個像素點的每個分量取值范圍為0-255不同(每個分量占8bit),YUV取值范圍有兩種:
(1)以Rec.601為代表(還包括BT.709 / BT.2020)的廣播電視標準中,Y的取值范圍是16-235,U、V的取值范圍是16-240。FFmpeg中稱之為“mpeg”范圍。
(2)以JPEG為代表的標準中,Y、U、V的取值范圍都是0-255。FFmpeg中稱之為“jpeg” 范圍。
原版項目地址:https://sourceforge.net/projects/raw-yuvplayer/
修改版源碼地址:https://github.com/leixiaohua1020/YUVplayer
> RTMP播放器
?基于Flash的RTMP播放器/推流器才能算得上是RTMP技術(shù)中的“正規(guī)軍”。RTMP本身設(shè)計出來就是用于Flash平臺之間通信的,而且RTMP最大的優(yōu)勢——“無插件直播”,也是得益于廣泛安裝在客戶端的Flash Player。
? 基于Flash的網(wǎng)頁播放器相比于其他網(wǎng)頁播放器來說最大的優(yōu)勢就是“免插件安裝”了,這一點可以很大的提高用戶的體驗質(zhì)量。早些時候網(wǎng)絡(luò)視頻(尤其是直播)一般都使用ActiveX控件作為視頻播放器,而這些控件并不普及,所以終端用戶必須下載相關(guān)的插件才能收看節(jié)目,因而對很多不熟悉電腦的用戶造成了很大的障礙。直到Flash網(wǎng)頁播放器的出現(xiàn),這一障礙才得到了解決。
?-- RTMP Sample Player VideoJS,Video.js官網(wǎng):http://www.videojs.com/
?注:Video.js是一個基于JavaScript的HTML5視頻播放器,本身是開源的。
? RTMP Sample Player VideoJS是基于Video.js的RTMP播放器。其中包含兩個播放器:
1.Sample Player VideoJS:HTTP點播網(wǎng)頁播放器
2.RTMP Sample Player VideoJS:RTMP網(wǎng)頁播放器
?-- RTMP Sample Player Flowplayer,FlowPlayer官網(wǎng):http://flash.flowplayer.org/
注:FlowPlayer有兩個版本:HTML5版本和Flash版本,本文中使用的是Flash版本。
? RTMP Sample Player Flowplayer是基于FlowPlayer的網(wǎng)頁播放器。其中包含兩個播放器:
Sample Player Flowplayer:HTTP點播網(wǎng)頁播放器
RTMP Sample Player Flowplayer:RTMP網(wǎng)頁播放器
?-- RTMP Sample Player JWPlayer,JW Player官網(wǎng):http://www.jwplayer.com
?注:最新版的JW Player似乎不能免費使用RTMP播放功能了,這里使用的是舊版的JW Player
? RTMP Sample Player JWPlayer是基于JW Player的RTMP播放器。其中包含兩個播放器:
Sample Player JWPlayer:HTTP點播網(wǎng)頁播放器
RTMP Sample Player JWPlayer:RTMP網(wǎng)頁播放器
總結(jié)
以上是生活随笔為你收集整理的音视频方案,音视频扩展内容(编码解码器) (笔记)2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7月VR大数据:Quest 2占比突破5
- 下一篇: dnf服务器预更新状态,DNF:95版本