1.ffmpeg命令推流
ffmpeg -re -i in.h264 -vcodec copy -f rtp rtp://127.0.0.1:8888
補充:
-re參數,這是一個輸入文件的參數,表示以原始幀速率讀取輸入。 主要用於模擬抓取設備(a grab device)或實時輸入流(例如,從文件讀取時)。 不應與實際的抓取設備或實時輸入流一起使用(這可能會導致數據包丟失)。 默認情況下,ffmpeg嘗試盡快讀取輸入。 此選項會將輸入的讀取速度減慢到輸入的原始幀速率。 對於實時輸出(例如實時流式傳輸)很有用。
2.ffmpeg命令導出sdp信息
ffmpeg -re -i in.h264 -vcodec copy -f rtp rtp://127.0.0.1:8888 > txt.sdp
推流命令的sdp信息會輸出到屏幕上,但是一般播放器播放rtp碼流的時候都需要相應rtp碼流的sdp信息,故而需要將sdp信息導出到文件,以便播放器讀取sdp信息。
txt.sdp文件內容:
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 57.83.100
m=video 8888 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAFtkAoC/5YQAAAwABAAADACiPFi5I,aMuMsg==; profile-level-id=42C016
3.ffplay讀取sdp,播放相應rtp碼流
ffplay -protocol_whitelist "file,udp,rtp" -i txt.sdp
4.vlc播放器讀取sdp,播放相應的rtp碼流。
4.1打開vlc播放器

4.2讀取sdp文件
注意:對於上述sdp.txt文件,測試發現VLC播放器無法直接正確讀取解析,反而會使得電腦卡死,需要刪除前幾行信息。
更改后的文件內容:
a=tool:libavformat 57.83.100
m=video 8888 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAFtkAoC/5YQAAAwABAAADACiPFi5I,aMuMsg==; profile-level-id=42C016

4.3點擊播放,使得VLC處於等待碼流狀態。

4.4使用ffmpeg命令向目標主機推送rtp流。
ffmpeg -re -i in.h264 -vcodec copy -f rtp rtp://127.0.0.1:8888
4.5VLC播放rtp碼流。

