使用FFMPEG在windows平台下推rtmp流
工作中習慣在Linux下面使用FFmpeg模擬推rtmp流,無奈家中的電腦都是windows系統,需要利用家中的帶寬來測試流媒體服務器的性能。所以研究了一下如何在windows系統中快速推流。
首先下載安裝ffmpeg
下載windows下的FFMPEG壓縮包,解壓到當前目錄,見下圖(如何快速截圖並上傳到圖傳?)
我們使用的是ffmpeg-20180429-19c3df0-win64-static\bin路徑下的ffmpeg.exe文件。
寫兩個腳本實現推流
可以使用windows批處理或者powershell腳本,但都得實現兩份,所以最好能夠重用Linux下的shell腳本。
安裝Cygwin
下載安裝Cygwin。
兩個Cygwin命令
-
跳轉到其他盤符
$ cd /cygdrive/f
-
設置環境變量,將ffmpeg的bin目錄加到環境變量中
$ export PATH=$PATH:/cygdrive/f/Harlan/Software/ffmpeg-20180429-19c3df0-win64-st atic/bin/
循環推流shell腳本
創建一個shell腳本文件pushstream.sh,內容如下
#!/bin/bash
for((;;)); do \
ffmpeg -re -i "..\videos\test-$1.mp4" -c copy -f flv "rtmp://stream_media_server_address:1935/live/test-$1/test-$1"
sleep 1; \
done
注意添加了一個參數$1。
推多路流的shell腳本
將推流的進程啟動為守護進程,創建一個腳本push_all.sh:
#!/bin/bash
setsid ./pushstream.sh 20 >/dev/null 2>&1 < /dev/null &
setsid ./pushstream.sh 30 >/dev/null 2>&1 < /dev/null &
setsid ./pushstream.sh 40 >/dev/null 2>&1 < /dev/null &
setsid ./pushstream.sh 60 >/dev/null 2>&1 < /dev/null &
執行下面的命令啟動腳本:
$ ./push_all.sh
可以看到有四路流在后台同時在推: