• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            [總結(jié)]FFMPEG視音頻編解碼零基礎(chǔ)學(xué)習(xí)方法

            http://blog.csdn.net/leixiaohua1020/article/details/15811977

            在CSDN上的這一段日子,接觸到了很多同行業(yè)的人,尤其是使用FFMPEG進(jìn)行視音頻編解碼的人,有的已經(jīng)是有多年經(jīng)驗(yàn)的“大神”,有的是剛開始學(xué)習(xí)的初學(xué)者。在和大家探討的過程中,我忽然發(fā)現(xiàn)了一個(gè)問題:在“大神”和初學(xué)者之間好像有一個(gè)不可逾越的鴻溝。“大神”們水平高超,探討著深?yuàn)W的問題;而初學(xué)者們還停留在入門階段。究竟是什么原因造成的這種“兩極分化”呢?最后,我發(fā)現(xiàn)了問題的關(guān)鍵:FFMPEG難度比較大,卻沒有一個(gè)循序漸進(jìn),由簡單到復(fù)雜的教程。現(xiàn)在網(wǎng)上的有關(guān)FFMPEG的教程多半難度比較大,不太適合剛接觸FFMPEG的人學(xué)習(xí);而且很多的例子程序編譯通不過,極大地打消了學(xué)習(xí)的積極性。我自己在剛開始學(xué)習(xí)FFMPEG的時(shí)候也遇到了很大的困難。為了幫助更多的人快速成為“大神”,我想總結(jié)一個(gè)學(xué)習(xí)FFMPEG的方法,方便大家循序漸進(jìn)的學(xué)習(xí)FFMPEG。

            PS:有不少人不清楚“FFmpeg”應(yīng)該怎么讀。它讀作“ef ef em peg”


            0. 背景知識

            本章主要介紹一下FFMPEG都用在了哪里(在這里僅列幾個(gè)我所知的,其實(shí)遠(yuǎn)比這個(gè)多)。說白了就是為了說明:FFMPEG是非常重要的。

            使用FFMPEG作為內(nèi)核視頻播放器:

            Mplayer,ffplay,射手播放器,暴風(fēng)影音,KMPlayer,QQ影音...

            使用FFMPEG作為內(nèi)核的Directshow Filter:

            ffdshow,lav filters...

            使用FFMPEG作為內(nèi)核的轉(zhuǎn)碼工具:

            ffmpeg,格式工廠...

            事實(shí)上,F(xiàn)FMPEG的視音頻編解碼功能確實(shí)太強(qiáng)大了,幾乎囊括了現(xiàn)存所有的視音頻編碼標(biāo)準(zhǔn),因此只要做視音頻開發(fā),幾乎離不開它。

            對于完全沒有視音頻技術(shù)背景的人來說,在學(xué)習(xí)FFmpeg之前最好先了解一下幾種最基本的視音頻數(shù)據(jù)的格式,可以參考下面的文章:

            [總結(jié)]視音頻編解碼技術(shù)零基礎(chǔ)學(xué)習(xí)方法

            視音頻數(shù)據(jù)處理入門:RGB、YUV像素?cái)?shù)據(jù)處理

            視音頻數(shù)據(jù)處理入門:PCM音頻采樣數(shù)據(jù)處理

            視音頻數(shù)據(jù)處理入門:H.264視頻碼流解析

            視音頻數(shù)據(jù)處理入門:AAC音頻碼流解析

            視音頻數(shù)據(jù)處理入門:FLV封裝格式解析

            視音頻數(shù)據(jù)處理入門:UDP-RTP協(xié)議解析


            1. ffmpeg程序的使用(ffmpeg.exe,ffplay.exe,ffprobe.exe)


            【視頻資源】

            本文中第1,2章是FFmpeg編程最基礎(chǔ)的內(nèi)容。這部分的內(nèi)容我在給大二同學(xué)代課的時(shí)候錄制成了視頻,有時(shí)間的話可以看一下《基于 FFmpeg + SDL 的視頻播放器的制作》課程的視頻


            本章主要介紹一下ffmpeg工程包含的三個(gè)exe的使用方法。

            ffmpeg的官方網(wǎng)站是:http://ffmpeg.org/

            編譯好的windows可用版本的下載地址(官網(wǎng)中可以連接到這個(gè)網(wǎng)站,和官方網(wǎng)站保持同步): http://ffmpeg.zeranoe.com/builds/

            該網(wǎng)站中的FFMPEG分為3個(gè)版本:Static,Shared,Dev。

            前兩個(gè)版本可以直接在命令行中使用,他們的區(qū)別在于:Static里面只有3個(gè)應(yīng)用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每個(gè)exe的體積都很大,相關(guān)的Dll已經(jīng)被編譯到exe里面去了。Shared里面除了3個(gè)應(yīng)用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe之外,還有一些Dll,比如說avcodec-54.dll之類的。Shared里面的exe體積很小,他們在運(yùn)行的時(shí)候,到相應(yīng)的Dll中調(diào)用功能。

            Dev版本是用于開發(fā)的,里面包含了庫文件xxx.lib以及頭文件xxx.h,這個(gè)版本不包含exe文件。

            打開系統(tǒng)命令行接面,切換到ffmpeg所在的目錄,就可以使用這3個(gè)應(yīng)用程序了。

            1.1 ffmpeg.exe

            ffmpeg是用于轉(zhuǎn)碼的應(yīng)用程序。

            一個(gè)簡單的轉(zhuǎn)碼命令可以這樣寫:

            將input.avi轉(zhuǎn)碼成output.ts,并設(shè)置視頻的碼率為640kbps

            [plain] view plain copy
            1. ffmpeg -i input.avi -b:v 640k output.ts  
            具體的使用方法可以參考: ffmpeg參數(shù)中文詳細(xì)解釋

            詳細(xì)的使用說明(英文):http://ffmpeg.org/ffmpeg.html

            1.2 ffplay.exe

            ffplay是用于播放的應(yīng)用程序。

            一個(gè)簡單的播放命令可以這樣寫:

            播放test.avi

            [plain] view plain copy
            1. ffplay test.avi  
            具體的使用方法可以參考:ffplay的快捷鍵以及選項(xiàng)

            詳細(xì)的使用說明(英文):http://ffmpeg.org/ffplay.html

            1.3 ffprobe.exe

            ffprobe是用于查看文件格式的應(yīng)用程序。

            這個(gè)就不多介紹了。

            詳細(xì)的使用說明(英文):http://ffmpeg.org/ffprobe.html


            2. ffmpeg庫的使用:視頻播放器

            本章開始介紹使用ffmpeg的庫進(jìn)行開發(fā)。

            2.1 ffmpeg庫的配置

            http://ffmpeg.zeranoe.com/builds/網(wǎng)站上

            1.下載Dev版本,里面包含了ffmpeg的xxx.h頭文件以及xxx.lib庫文件。

            2.下載Shared版本,里面包含了ffmpeg的dll文件。

            3.將這兩部分文件拷貝到VC工程下面就可以了

            注:可能會出現(xiàn)問題,參見:FFMPEG 庫移植到 VC 需要的步驟

            如果不想自己手動配置,可以下載已經(jīng)配置好的工程:最簡單的基于FFMPEG+SDL的視頻播放器

            2.2 最簡單的視頻播放器

            學(xué)習(xí)文章100行代碼實(shí)現(xiàn)最簡單的基于FFMPEG+SDL的視頻播放器中的代碼,這是ffmpeg做視頻播放器最簡單的代碼了,是我自己精簡出來的,已經(jīng)不能再簡化了,每一行都很重要。

            原版是基于SDL1.2的視頻播放器,后來更新了基于SDL2.0的最簡單的視頻播放器:最簡單的基于FFMPEG+SDL的視頻播放器 ver2 (采用SDL2.0)

            上述播放器使用libavformat和libavcodec兩個(gè)類庫完成了視頻的解碼工作。實(shí)際上解碼工作只需要libavcodec就可以了。因此更新了一個(gè)“純凈”的解碼器。該解碼器只使用libavcodec完成解碼工作: 最簡單的基于FFmpeg的解碼器-純凈版(不包含libavformat)

            ffmpeg的函數(shù)介紹:ffmpeg函數(shù)介紹

            注1:播放視頻或音頻數(shù)據(jù)的時(shí)候會用到SDL。有關(guān)SDL可以參考:SDL介紹

                     SDL參考文檔:SDL GUIDE 中文譯本

            注2:如果想查看解碼后的數(shù)據(jù),需要用到 YUV播放器:YUV播放器源代碼YUV Player Deluxe都可以

            2.3 相關(guān)結(jié)構(gòu)體的研究

            ffmpeg的結(jié)構(gòu)體之間的關(guān)系參考文章:FFMPEG中最關(guān)鍵的結(jié)構(gòu)體之間的關(guān)系

            結(jié)構(gòu)體中每個(gè)變量的分析,參考文章:

            FFMPEG結(jié)構(gòu)體分析:AVFrame

            FFMPEG結(jié)構(gòu)體分析:AVFormatContext
            FFMPEG結(jié)構(gòu)體分析:AVCodecContext
            FFMPEG結(jié)構(gòu)體分析:AVIOContext
            FFMPEG結(jié)構(gòu)體分析:AVCodec
            FFMPEG結(jié)構(gòu)體分析:AVStream
            FFMPEG結(jié)構(gòu)體分析:AVPacket


            3. ffmpeg庫的使用:音頻播放器

            3.1 最簡單的音頻播放器

            學(xué)習(xí)文章最簡單的基于FFMPEG+SDL的音頻播放器 中的代碼,和最簡單的視頻播放器一樣,這是最簡單的音頻播放器,每一行代碼都很重要。

            原版是基于SDL1.2的音頻播放器,后來更新了一個(gè)基于SDL2.0的最簡單的音頻播放器:最簡單的基于FFMPEG+SDL的音頻播放器 ver2 (采用SDL2.0)


            注:如果想要查看解碼后的數(shù)據(jù)(PCM數(shù)據(jù)),需要用到Audition。

            4. ffmpeg庫的使用:一個(gè)真正的播放器——ffplay

            4.1 真正的播放器

            ffplay流程圖如文章FFplay源代碼分析:整體流程圖 所示。ffplay代碼比較復(fù)雜,但是其核心代碼和100行代碼實(shí)現(xiàn)最簡單的基于FFMPEG+SDL的視頻播放器 是一樣的。可以兩個(gè)工程結(jié)合著學(xué)習(xí)。

            ffplay代碼簡介資料:如何用FFmpeg編寫一個(gè)簡單播放器

            ffplay使用說明:ffplay的快捷鍵以及選項(xiàng)

            ffplay已經(jīng)移植到VC下的工程:ffplay_vc2005(別人做的,質(zhì)量很不錯(cuò))

            ffplay移植到MFC下的工程,包含了簡單的圖形界面和一些控制按鈕:ffplay播放器移植VC的工程:ffplay for MFC

            上述軟件的代碼簡介:ffplay for mfc 代碼備忘

            ffplay.c函數(shù)結(jié)構(gòu)簡單分析:ffplay.c函數(shù)結(jié)構(gòu)簡單分析(畫圖)

            5. ffmpeg庫的使用:編碼

            5.1 編碼

            ffmpeg編碼我自己研究的不是很多,可以參考文章 :使用FFmpeg類庫實(shí)現(xiàn)YUV視頻序列編碼為視頻

            上面那篇文章是用的類庫比較舊,新版類庫的的使用可以參考下面幾篇文章。

            圖像的編碼可以參考:最簡單的基于FFMPEG的圖像編碼器(YUV編碼為JPEG)

            音頻的編碼可以參考:最簡單的基于FFMPEG的音頻編碼器(PCM編碼為AAC)

            視頻的編碼可以參考:最簡單的基于FFMPEG的視頻編碼器(YUV編碼為H.264)

            HEVC(H.265)視頻編碼可以參考:最簡單的基于FFmpeg的視頻編碼器-更新版(YUV編碼為HEVC(H.265))

            上述編碼器使用libavformat和libavcodec兩個(gè)類庫完成了視頻的編碼工作。實(shí)際上編碼工作只需要libavcodec就可以了。因此更新了一個(gè)“純凈”的編碼器。該編碼器只使用libavcodec完成編碼工作: 最簡單的基于FFmpeg的編碼器-純凈版(不包含libavformat)

            5.2 轉(zhuǎn)碼

            轉(zhuǎn)碼實(shí)際上是先解碼然后編碼。

            不進(jìn)行轉(zhuǎn)碼,只進(jìn)行封裝格式轉(zhuǎn)換的程序可參考:最簡單的基于FFMPEG的封裝格式轉(zhuǎn)換器(無編解碼)

            轉(zhuǎn)碼程序可參考:最簡單的基于FFMPEG的轉(zhuǎn)碼程序

            比較復(fù)雜的轉(zhuǎn)碼程序可以參考ffmpeg.c,它移植到MFC下的工程:ffmpeg轉(zhuǎn)碼器移植VC的工程:ffmpeg for MFC

            ffmpeg.c函數(shù)結(jié)構(gòu)簡單分析:ffmpeg.c函數(shù)結(jié)構(gòu)簡單分析(畫圖)


            6. ffmpeg源代碼分析

            通曉了ffmpeg庫的使用以后,可以看一下ffmpeg的源代碼。注意ffmpeg的源代碼只有在Linux下才能編譯,在windows下可以使用MinGW進(jìn)行編譯。推薦使用Eclipse查看ffmpeg的源代碼。

            有一個(gè)很完整的ffmpeg源代碼的分析文檔:ffdoc


            FFmpeg的庫函數(shù)源代碼分析文章列表如下:


            架構(gòu)圖】

            FFmpeg源代碼結(jié)構(gòu)圖 - 解碼

            FFmpeg源代碼結(jié)構(gòu)圖 - 編碼

            【通用】

            FFmpeg 源代碼簡單分析:av_register_all()

            FFmpeg 源代碼簡單分析:avcodec_register_all()

            FFmpeg 源代碼簡單分析:內(nèi)存的分配和釋放(av_malloc()av_free()等)

            FFmpeg 源代碼簡單分析:常見結(jié)構(gòu)體的初始化和銷毀(AVFormatContextAVFrame等)

            FFmpeg 源代碼簡單分析:avio_open2()

            FFmpeg 源代碼簡單分析:av_find_decoder()av_find_encoder()

            FFmpeg 源代碼簡單分析:avcodec_open2()

            FFmpeg 源代碼簡單分析:avcodec_close()

            【解碼】

            圖解FFMPEG打開媒體的函數(shù)avformat_open_input

            FFmpeg 源代碼簡單分析:avformat_open_input()

            FFmpeg 源代碼簡單分析:avformat_find_stream_info()

            FFmpeg 源代碼簡單分析:av_read_frame()

            FFmpeg 源代碼簡單分析:avcodec_decode_video2()

            FFmpeg 源代碼簡單分析:avformat_close_input()

            【編碼】

            FFmpeg 源代碼簡單分析:avformat_alloc_output_context2()

            FFmpeg 源代碼簡單分析:avformat_write_header()

            FFmpeg 源代碼簡單分析:avcodec_encode_video()

            FFmpeg 源代碼簡單分析:av_write_frame()

            FFmpeg 源代碼簡單分析:av_write_trailer()

            【其它】

            FFmpeg源代碼簡單分析:日志輸出系統(tǒng)(av_log()等)

            FFmpeg源代碼簡單分析:結(jié)構(gòu)體成員管理系統(tǒng)-AVClass

            FFmpeg源代碼簡單分析:結(jié)構(gòu)體成員管理系統(tǒng)-AVOption

            FFmpeg源代碼簡單分析:libswscalesws_getContext()

            FFmpeg源代碼簡單分析:libswscalesws_scale()

            FFmpeg源代碼簡單分析:libavdeviceavdevice_register_all()

            FFmpeg源代碼簡單分析:libavdevicegdigrab

            【腳本】

            FFmpeg源代碼簡單分析:makefile

            FFmpeg源代碼簡單分析:configure

            偏底層的libavcodec的源代碼分析文章列表如下:

            【解碼- libavcodec H.264 解碼器】

            FFmpeg的H.264解碼器源代碼簡單分析:概述

            FFmpeg的H.264解碼器源代碼簡單分析:解析器(Parser)部分

            FFmpeg的H.264解碼器源代碼簡單分析:解碼器主干部分

            FFmpeg的H.264解碼器源代碼簡單分析:熵解碼(EntropyDecoding)部分

            FFmpeg的H.264解碼器源代碼簡單分析:宏塊解碼(Decode)部分-幀內(nèi)宏塊(Intra)

            FFmpeg的H.264解碼器源代碼簡單分析:宏塊解碼(Decode)部分-幀間宏塊(Inter)

            FFmpeg的H.264解碼器源代碼簡單分析:環(huán)路濾波(LoopFilter)部分

            【解碼-libavcodec HEVC 解碼器】

            FFmpeg的HEVC解碼器源代碼簡單分析:概述

            FFmpeg的HEVC解碼器源代碼簡單分析:解析器(Parser)部分

            FFmpeg的HEVC解碼器源代碼簡單分析:解碼器主干部分

            FFmpeg的HEVC解碼器源代碼簡單分析:CTU解碼(CTUDecode)部分-PU

            FFmpeg的HEVC解碼器源代碼簡單分析:CTU解碼(CTU Decode)部分-TU

            FFmpeg的HEVC解碼器源代碼簡單分析:環(huán)路濾波(LoopFilter)



            7.FFmpeg其它幾個(gè)類庫的使用

            7.1.libavfilter(加特效)

            AVFilter可以給視音頻添加各種濾鏡效果。有兩個(gè)例子,一個(gè)是給視頻添加水印:

            最簡單的基于FFmpeg的AVfilter例子(水印疊加)

            另一個(gè)是給YUV數(shù)據(jù)加特效:

            最簡單的基于FFmpeg的AVfilter的例子-純凈版

            7.2.libavdevice(讀設(shè)備)

            AVDevice可以讀取電腦的多媒體設(shè)備的數(shù)據(jù),或者輸出數(shù)據(jù)到指定的多媒體設(shè)備上。

            直接使用ffmpeg.exe命令行工具的文章:FFmpeg獲取DirectShow設(shè)備數(shù)據(jù)(攝像頭,錄屏)

            編程方面做了2個(gè)有關(guān)的例子:

            讀取攝像頭:最簡單的基于FFmpeg的AVDevice例子(讀取攝像頭)

            屏幕錄制:最簡單的基于FFmpeg的AVDevice例子(屏幕錄制)

            7.3.libswscale(圖像拉伸,像素格式轉(zhuǎn)換)

            Swscale類庫可以轉(zhuǎn)換像素?cái)?shù)據(jù)的格式,同時(shí)可以拉伸圖像的大小。

            libswscale的使用示例: 最簡單的基于FFmpeg的libswscale的示例(YUV轉(zhuǎn)RGB)

            此外,這個(gè)示例還附帶了一個(gè)程序,用于生成測試圖片: 最簡單的基于FFmpeg的libswscale的示例附件:測試圖片生成工具

            8.FFmpeg封裝格式的處理

            使用FFmpeg進(jìn)行封裝格式的處理,主要是通過AVFormat完成。有關(guān)封裝格式的處理,做了3個(gè)例子:

            封裝格式轉(zhuǎn)換器:最簡單的基于FFMPEG的封裝格式轉(zhuǎn)換器(無編解碼)

            視音頻分離器簡化版(demuxer-simple):最簡單的基于FFmpeg的封裝格式處理:視音頻分離器簡化版(demuxer-simple)

            視音頻分離器(demuxer):最簡單的基于FFmpeg的封裝格式處理:視音頻分離器(demuxer)

            視音頻復(fù)用器(muxer):最簡單的基于FFmpeg的封裝格式處理:視音頻復(fù)用器(muxer)

            9.FFmpeg流媒體方面的應(yīng)用

            使用FFmpeg進(jìn)行流媒體方面的應(yīng)用,主要是流媒體的發(fā)送和接收。

            直接使用ffmpeg.exe命令行工具的文章:

            FFmpeg發(fā)送流媒體的命令(UDP,RTP,RTMP)

            編程方面做了一個(gè)例子:

            基于FFmpeg的推流器:最簡單的基于FFmpeg的推流器(以推送RTMP為例)


            10.FFmpeg的其他雜項(xiàng)

            使用FFmpeg讀寫內(nèi)存(而非文件)的例子:

            內(nèi)存播放器:最簡單的基于FFmpeg的內(nèi)存讀寫的例子:內(nèi)存播放器

            內(nèi)存轉(zhuǎn)碼器:最簡單的基于FFmpeg的內(nèi)存讀寫的例子:內(nèi)存轉(zhuǎn)碼器


            11. ffmpeg在其它平臺下的應(yīng)用

            把FFmpeg應(yīng)用于AndroidiOS、Windows Phone的示例程序可以參考:

            最簡單的基于FFmpeg的移動端例子:Android HelloWorld

            最簡單的基于FFmpeg的移動端例子:Android 視頻解碼器

            最簡單的基于FFmpeg的移動端例子:Android 視頻解碼器-單個(gè)庫版

            最簡單的基于FFmpeg的移動端例子:Android 推流器

            最簡單的基于FFmpeg的移動端例子:Android 視頻轉(zhuǎn)碼器

            最簡單的基于FFmpeg的移動端例子附件:Android 自帶播放器

            最簡單的基于FFmpeg的移動端例子附件:SDL Android HelloWorld

            最簡單的基于FFmpeg的移動端例子:IOS HelloWorld

            最簡單的基于FFmpeg的移動端例子:IOS 視頻解碼器

            最簡單的基于FFmpeg的移動端例子:IOS 推流器

            最簡單的基于FFmpeg的移動端例子:IOS 視頻轉(zhuǎn)碼器

            最簡單的基于FFmpeg的移動端例子附件:IOS自帶播放器

            最簡單的基于FFmpeg的移動端例子:Windows PhoneHelloWorld



            12. ffmpeg相關(guān)工程的學(xué)習(xí)

            學(xué)習(xí)完成ffmpeg,還可以了解一下基于ffmpeg的相關(guān)的多媒體開源工程,在這里推薦以下幾個(gè):

            12.1 ffdshow

            ffdshow是基于ffmpeg的解碼器類庫libavcodec的DirectShow Filter。廣泛安裝在PC上。


            有關(guān)ffdshow的源代碼分析文章(更新中):

            ffdshow 源代碼分析1 : 整體結(jié)構(gòu)
            ffdshow 源代碼分析 2: 位圖覆蓋濾鏡(對話框部分Dialog)

            ffdshow 源代碼分析 3: 位圖覆蓋濾鏡(設(shè)置部分Settings)
            ffdshow 源代碼分析 4: 位圖覆蓋濾鏡(濾鏡部分Filter)
            ffdshow 源代碼分析 5: 位圖覆蓋濾鏡(總結(jié))
            ffdshow 源代碼分析 6: 對解碼器的dll的封裝(libavcodec)
            ffdshow 源代碼分析 7: libavcodec視頻解碼器類(TvideoCodecLibavcodec)
            ffdshow 源代碼分析 8: 視頻解碼器類(TvideoCodecDec)
            ffdshow 源代碼分析 9: 編解碼器有關(guān)類的總結(jié)

            12.2 LAV filters

            LAV Filter是基于ffmpeg的解碼器類庫libavcodec,以及解封裝器類庫libavformat的DirectShow Filter。廣泛安裝在PC上。

            有關(guān)LAV Filter的源代碼分析文章:

            LAV Filter 源代碼分析 1: 總體結(jié)構(gòu)

            LAV Filter 源代碼分析 2: LAV Splitter

            LAV Filter 源代碼分析 3: LAV Video (1)

            LAV Filter 源代碼分析 4: LAV Video (2)


            12.3 Mplayer

            Mplayer是linux下使用最廣泛的播放器,也有Windows版本的。其中使用了ffmpeg。


            有關(guān)Mplayer的源代碼分析文章:

            MPlayer源代碼分析

            12.4 Media Player Classic - HC

            現(xiàn)在廣為使用很多播放器都是構(gòu)建于Media Player Classic - HC的基礎(chǔ)之上的。


            有關(guān)Media Player Classic - HC的源代碼分析文章:

            Media Player Classic - HC 源代碼分析 1:整體結(jié)構(gòu)
            Media Player Classic - HC 源代碼分析 2:核心類 (CMainFrame)(1)
            Media Player Classic - HC 源代碼分析 3:核心類 (CMainFrame)(2)
            Media Player Classic - HC 源代碼分析 4:核心類 (CMainFrame)(3)
            Media Player Classic - HC 源代碼分析 5:關(guān)于對話框 (CAboutDlg)
            Media Player Classic - HC 源代碼分析 6:MediaInfo選項(xiàng)卡 (CPPageFileMediaInfo)
            Media Player Classic - HC 源代碼分析 7:詳細(xì)信息選項(xiàng)卡(CPPageFileInfoDetails)

            12.5 XBMC

            XBMC是一個(gè)優(yōu)秀的自由和開源的(GPL)媒體中心軟件。


            有關(guān)XBMC源代碼分析文章:

            XBMC源代碼分析 1:整體結(jié)構(gòu)以及編譯方法

            XBMC源代碼分析 2:Addons(皮膚Skin)

            XBMC源代碼分析 3:核心部分(core)-綜述

            XBMC源代碼分析 4:視頻播放器(dvdplayer)-解碼器(以ffmpeg為例)

            XBMC源代碼簡析 5:視頻播放器(dvdplayer)-解復(fù)用器(以ffmpeg為例)

            XBMC源代碼分析 6:視頻播放器(dvdplayer)-文件頭(以ffmpeg為例)

            XBMC源代碼分析 7:視頻播放器(dvdplayer)-輸入流(以libRTMP為例)

            posted on 2017-08-10 22:03 zmj 閱讀(696) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久亚洲av毛片大| 久久99精品国产自在现线小黄鸭| 99久久免费国产精品热| 久久久久综合网久久| 一级做a爰片久久毛片毛片| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久精品亚洲一区二区三区浴池| 日韩精品国产自在久久现线拍 | 久久青青草原精品国产软件| 欧美日韩久久中文字幕| 久久国产精品成人免费| 人妻无码精品久久亚瑟影视| 热久久这里只有精品| 中文字幕日本人妻久久久免费| 青青草原综合久久| 中文无码久久精品| 久久青青国产| 国产精品免费久久久久久久久| 国产精品久久久久蜜芽| 久久AⅤ人妻少妇嫩草影院| 国产∨亚洲V天堂无码久久久| 久久成人国产精品免费软件| 国产精品免费久久| 91久久成人免费| 久久久久综合网久久| 日韩精品久久久久久免费| 无码任你躁久久久久久老妇App| 国产亚洲色婷婷久久99精品91 | 人妻无码精品久久亚瑟影视 | 91精品国产综合久久久久久| 久久久亚洲裙底偷窥综合| 久久无码人妻精品一区二区三区| 久久99精品国产麻豆宅宅| 91精品国产9l久久久久| 久久久久99精品成人片试看 | 久久精品国产精品亚洲精品| 色综合久久综合中文综合网| 无码AV波多野结衣久久| 伊人久久大香线蕉亚洲五月天| AV无码久久久久不卡蜜桃| 一本久久a久久精品亚洲|