1.ffmpeg簡介


1 簡介

2 分析

2.1 大體分析

ffmpeg對媒體文件的總體操作方法為:media file---->demux (解復用)---->解碼 (decode) ---->YUV/RGB數據。

2.2 名詞說明

2.2.1 解復用

解復用就是從音視頻信號源中分流出不同的音頻和視頻流。其要達到的效果就是如下所示:
-----------media data------------------
| -------------------------------|
video streams -------------Audio streams

針對解復用,也有三種不同的手段:

  • 直接模式

直接從信號源獲取相應的音頻或者視頻數據。

  • 索引模式

直接模式中如果不包含幀位置元數據的信息(或者收錄的實時流文件),就不能進行seek。

  • 緩存模式

解復用音視頻數據,分別進行緩存,然后通過相應數據流接口獲取數據。網絡流的解復用使用該種模式。

2.3 協議說明

2.3.1 RTMP

英文全稱:Real Time Messaging Protocol,也就是實時消息傳輸。該協議基于TCP,是一個協議族,包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。

3 使用ffmpeg

3.1 編譯安裝

3.1.1 下載SDL

SDL的官方網址為:鏈接
下載到的源碼為:SDL-1.2.15.zip

 $ unzip SDL-1.2.15.zip
 $ cd SDL-1.2.15/
 $  ./configure --prefix=/usr
 $ make
 $ sudo make install

如果提示找不到SDL.h等,可以在Makefile中添加上:

CFLGAS =-I/usr/include/SDL

關于最新版本的SDL2.0.5,是不建議安裝的,因為它做了一些更改,在編譯ffmpeg,使用ffplay的時候,會出錯。

這里提供從SDL1到SDL2的遷移方法:參看鏈接

note:
在單獨使用sdl2的時候,如果報錯no avaliable video device等,需要安裝:

$ sudo apt-get intall xorg-dev
$ ldconfig

3.1.2 下載ffmpeg

ffmpeg的下載地址:鏈接
下載到的源碼為: ffmpeg-3.1.1.tar.bz2

$ tar jxvf ffmpeg-3.1.1.tar.bz2

到config.mak下修改幾行:

 1) 528 !HAVE_SDL=yes改為HAVE_SDL=yes
 2) 648 !CONFIG_SDL=yes改為CONFIG_SDL=yes
 3) 691 !CONFIG_FFPLAY=yes改為CONFIG_FFPLAY=yes
 $ cd ffmpeg-3.1.1/
 $ make
 $ sudo make install

若報錯:


需要安裝yasm

則需要安裝yasm,可以下載相關內容:下載鏈接
下面的步驟是編譯yasm:

tar xzf yasm-1.3.0.tar.gz cd yasm-1.3.0/
./configure make
$ sudo make install

然后再回到ffmpeg目錄下,執行:

./configure make
$ sudo make install

如果在使用./ffplay的時候,報如下錯誤:

ffplay報錯

這個主要是由于沒有在桌面系統上執行命令的原因。

播放視頻文件,也如以上命令行執行方式。

好了,到這一步,就可以簡單的播放音視頻文件了。

4 編譯ffmpeg4.1

編譯ffmpeg-4.1,如果要編譯工具ffplay,需要做一些修改。
1.修改Makefile,添加如下內容

CFLAGS = -I/usr/include/SDL2 -fPIC
LDFLAGS = -L/usr/lib

2.選擇SDL2,并安裝成功。

3.修改ffbuild/config.mak,將gcc修改為c99。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 教程一:視頻截圖(Tutorial 01: Making Screencaps) 首先我們需要了解視頻文件的一些基...
    90后的思維閱讀 4,794評論 0 3
  • 以下內容翻譯自FFmpeg/Wiki/CompilationGuide/MacOSX 原網址可能需要翻墻 在OS ...
    Mr_龍0615閱讀 13,359評論 3 14
  • 最近因為要音頻處理的研究,音頻開發,但是有一個難題就是怎么解析與提取音頻的數據,于是就找到了FFmpeg。基本上只...
    知曰閱讀 232,207評論 9 96
  • 安裝ffmpeg所需要的包 yum install autoconf automake gcc gcc-c++ g...
    李神奇閱讀 3,500評論 0 2
  • 讀史,像是把兒時聽過的故事都串了起來,不僅揭下了傳說的面紗,而且體會到一種真實的無力感,以及面對史實的悵然。 比方...
    更向遠行閱讀 456評論 0 1