ffmpeg的使用

ffmpeg的使用,及發送媒體流的一些簡單介紹

在以前的文章談過對ffmpeg的編譯。這裏談談ffmpeg的最簡單的使用。

ffmpeg使用語法:

ffmpeg [[options][`-i' input_file]]... {[options] output_file}...

最簡單的使用: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。 
 

除了轉換格式ffmpeg還可以做更多的事,例如發送媒體流,通過rtp協議,可以輸入以下的命令:

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 -newaudio

其中,-re 代表本地幀頻讀數據;-an 代表不使能音頻紀錄;127.0.0.1也就是本地迴環地址,我們常常使用它來測試本機的網絡配置,通過PING127.0.0.1來檢測本機的網卡和IP協議;當然我們還可以使用它來代替SERVER的IP地址,這樣程序就可以在同一臺機器上運行,所有的SERVER的資源就可以裝在本機,我們程序就可以運行。

使用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發送,並使用不同的發送方式和接受方式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章