在之前的文章談過對ffmpeg的編譯。這裏談談ffmpeg的最簡單的使用。windows
ffmpeg使用語法:網絡
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...ide
最簡單的使用:ffmpeg –i test_mp4.mp4 test_mpg.mpg (將輸入的mp4容器格式的文件轉換成mpg格式文件)工具
我在作一些機器人控制實驗時經常會獲得不少的jpg格式的文件,將這些文件改爲連續的名稱,例如test_jpg00001, test_jpg00002等等,而後能夠經過ffmpeg生成一個視頻文件,這會很方便演示,例如:
ffmpeg -r 15 -b 1800 -i test_jpg00%03d.jpg test_mp4.mp4 (這裏,-r 表明fps 設置幀頻;–b 表明bitrate 設置比特率; test_jpg00%03d.jpg中%03d表明最後三位數字)測試
作實驗時,直接經過攝像頭能夠獲得raw picture(也就是YUV或RGB文件),這時也能夠經過ffmpeg將它們轉換成mpg或任意容器格式。例如:ffmpeg -s 320*240 -i test_yuv.yuv test_mpg.mpg (這裏請注意在寫入輸入文件以前,必須給ffmpeg傳入幀大小,也就是經過 –s 來設置幀大小)。固然了,你也能夠將例如mpg格式的文件轉換成YUV文件,即,ffmpeg -i test_mpg.mpg test_yuv.yuv。
spa
除了轉換格式ffmpeg還能夠作更多的事,例如發送媒體流,經過rtp協議,能夠輸入如下的命令:3d
ffmpeg -fflags +genpts -re -i test.mpg -vcodec copy -an -f rtp rtp://127.0.0.1:10000 -vn -acodec copy -f rtp rtp://127.0.0.1:20000 -newaudiocode
其中,-re 表明本地幀頻讀數據;-an 表明不使能音頻紀錄;127.0.0.1也就是本地迴環地址,咱們經常使用它來測試本機的網絡配置,經過PING127.0.0.1來檢測本機的網卡和IP協議;固然咱們還可使用它來代替SERVER的IP地址,這樣程序就能夠在同一臺機器上運行,全部的SERVER的資源就能夠裝在本機,咱們程序就能夠運行。orm
使用ffmpeg發送了媒體流後,咱們能夠在寫字板裏寫一個SDP文件(附註:文件的後綴也是.sdp),例如:視頻
v=0
o=- 0 0 IN IPV4 127.0.0.1
t=0 0
s=No Name
a=tool:libavformat 52.23.1
m=video 10000 RTP/AVP 32
c=IN IP4 127.0.0.1
b=AS:104857
m=audio 20000 RTP/AVP 14
c=IN IP4 127.0.0.1
b=AS:64
而後經過vlc就打開這個sdp文件,就能夠播放咱們發送的媒體流了。
##### #####
談到了媒體流的發送,我想繼續延伸聊聊:咱們也可使用之前介紹過的LIVE555.COM提供的LIVE555 Media Server,來發送媒體流,很簡單:能夠直接下載live555MediaServer.exe,而後輸入: 「live555MediaServer 你的文件」,例如live555MediaServer D:\test.mpg。媒體流就發送了。而後可使用vlc來播放,vlc rtsp://本機IP/文件名(附註:在Window裏經過ipconfig能夠看本機IP), 例如 vlc rtsp://131.***.**.101/D:\test.mpg。
結語:播放媒體流使用vlc或一些其餘的工具就在GUI裏能夠簡單的執行了,這篇文章最後一部分是但願給讀者提供一些思路,例如使用ffmpeg,LIVE555發送,並使用不一樣的發送方式和接受方式。