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

來源:互聯網
上載者:User

標籤:style   blog   http   使用   os   strong   io   檔案   

這兩天研究了FFmpeg發送流媒體的命令,在此簡單記錄一下以作備忘。

1.      UDP1.1. 發送H.264裸流至組播地址

註:組播地址指的範圍是224.0.0.0—239.255.255.255

下面命令實現了發送H.264裸流“chunwan.h264”至地址udp://233.233.233.223:6666

[plain] view plaincopy
  1. ffmpeg -re -i chunwan.h264 -vcodec copy -f h264 udp://233.233.233.223:6666  

注1:-re一定要加,代表按照幀率發送,否則ffmpeg會一股腦地按最高的效率發送資料。

注2:-vcodec copy要加,否則ffmpeg會重新編碼輸入的H.264裸流。

1.2. 播放承載H.264裸流的UDP [plain] view plaincopy
  1. ffplay -f h264 udp://233.233.233.223:6666  

註:需要使用-f說明資料類型是H.264

播放的時候可以加一些參數,比如-max_delay,下面命令將-max_delay設定為100ms:

[plain] view plaincopy
  1. ffplay -max_delay 100000 -f h264 udp://233.233.233.223:6666  
1.3. 發送MPEG2裸流至組播地址

下面的命令實現了讀取本地網路攝影機的資料,編碼為MPEG2,發送至地址udp://233.233.233.223:6666。

[plain] view plaincopy
  1. ffmpeg -re -i chunwan.h264 -vcodec mpeg2video -f mpeg2video udp://233.233.233.223:6666  
1.4.  播放MPEG2裸流

指定-vcodec為mpeg2video即可。

[plain] view plaincopy
  1. ffplay -vcodec mpeg2video udp://233.233.233.223:6666  
2.      RTP2.1. 發送H.264裸流至組播地址。

下面命令實現了發送H.264裸流“chunwan.h264”至地址rtp://233.233.233.223:6666

[plain] view plaincopy
  1. ffmpeg -re -i chunwan.h264 -vcodec copy -f rtp rtp://233.233.233.223:6666>test.sdp  

注1:-re一定要加,代表按照幀率發送,否則ffmpeg會一股腦地按最高的效率發送資料。

注2:-vcodec copy要加,否則ffmpeg會重新編碼輸入的H.264裸流。

注 3:最右邊的“>test.sdp”用於將ffmpeg的輸出資訊儲存下來形成一個sdp檔案。該檔案用於RTP的接收。當不加 “>test.sdp”的時候,ffmpeg會直接把sdp資訊輸出到控制台。將該資訊複製出來儲存成一個尾碼是.sdp文字檔,也是可以用來接 收該RTP流的。加上“>test.sdp”後,可以直接把這些sdp資訊儲存成文本。

2.2. 播放承載H.264裸流的RTP。 [plain] view plaincopy
  1. ffplay test.sdp  
3.      RTMP3.1. 發送H.264裸流至RTMP伺服器(FlashMedia Server,Red5等)

面命令實現了發送H.264裸流“chunwan.h264”至主機為localhost,Application為oflaDemo,Path為livestream的RTMP URL。

[plain] view plaincopy
  1. ffmpeg -re -i chunwan.h264 -vcodec copy -f flv rtmp://localhost/oflaDemo/livestream  
3.2. 播放RTMP [plain] view plaincopy
  1. ffplay “rtmp://localhost/oflaDemo/livestream live=1”  

註:ffplay播放的RTMP URL最好使用雙引號括起來,並在後面添加live=1參數,代表即時資料流。實際上這個參數是傳給了ffmpeg的libRTMP的。

有關RTMP的處理,可以參考文章:ffmpeg處理RTMP流媒體的命令大全

 

4.      測延時

測延時有一種方式,即一路播放發送端視頻,另一路播放流媒體接收下來的流。播放發送端的流有2種方式:FFmpeg和FFplay。

通過FFplay播放是一種眾所周知的方法,例如:

[plain] view plaincopy
  1. ffplay -f dshow -i video="Integrated Camera"  

即可播放本地名稱為“Integrated Camera”的網路攝影機。

此外通過FFmpeg也可以進行播放,通過指定參數“-f sdl”即可。例如:

[plain] view plaincopy
  1. ffmpeg -re -i chunwan.h264 -pix_fmt yuv420p –f sdl xxxx.yuv -vcodec copy -f flv rtmp://localhost/oflaDemo/livestream  

就可以一邊通過SDL播放視頻,一邊發送視頻流至RTMP伺服器。

注1:sdl後面指定的xxxx.yuv並不會輸出出來。

注2:FFmpeg本身是可以指定多個輸出的。本命令相當於指定了兩個輸出。

播放接收端的方法前文已經提及,在此不再詳述。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.