使用 FFmpeg 測試 RTMP 串流 – 開啟循環播放

Real-Time Messaging Protocol (RTMP) 是一個即時訊息協定通常會用於發送即時串流的影音 Twitch、Facebook 與 Youtube 等等的直播平台都使用此協定在接收串流

RTMP 使用循環播放

而我最近因為要測試 RTMP 的串流使用 FFmpeg 遇到一個問題是影片不夠長需要一直重新執行指定其實滿麻煩的就找了一下 FFmpeg 的文件發現它有提供一個循環(Loop)的指令可以使用

  • -stream_loop number (input)
    • Set number of times input stream shall be looped. Loop 0 means no loop, loop -1 means infinite loop.

所以假設我們的影片檔名是 sample.mp4 串流目標是 rtmp://live-dfw.twitch.tv/app/{stream_key} 我們就可以使用

ffmpeg -re -stream_loop -1 -i sample.mp4 -vcodec libx264 -acodec aac -f flv rtmp://live-dfw.twitch.tv/app/{stream_key}

RTMP 串流不轉碼

使用的串流目標不需要轉碼我們可以直接使用 -c copy 減少轉碼的負擔

ffmpeg -re -stream_loop -1 -i sample.mp4 -c copy -f flv rtmp://ip:port/live/1234

Wowza 提供的 RTSP 測試串流

在測試上可以使用串流轉發的方法,而串流可以使用 Wowza 提供的 RTSP 串流轉發指令:

ffmpeg -re -i rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov -c copy -f flv rtmp://live-dfw.twitch.tv/app/{stream_key}