服務器:SRS(Simple RTMP Server,?持RTMP、HTTP-FLV,HLS)
推流端:ffmpeg + OBS
拉流端:ffplay +VLC + srs播放器
1 安裝和測試srs流媒體服務器
1.1 安裝srs流媒體服務器
- srs官?:https://github.com/ossrs/srs
- 碼云的源速度快:https://gitee.com/winlinvip/srs.oschina.git
- github的源速度慢:https://github.com/ossrs/srs.git
第?步,獲取SRS
git clone https://gitee.com/winlinvip/srs.oschina.git
cd srs.oschina
#使?當前最新的3.0版本
git checkout -b 3.0 remotes/origin/3.0release
cd trunk
第?步,編譯SRS。
./configure
make -j$(nproc)
第三步,編寫SRS配置?件
- 修改rtmp配置文件
vim conf/rtmp.conf
- 注釋其中部分
- 啟動SRS服務器
./objs/srs -c conf/rtmp.conf
- 監聽rtmp服務器日志
tail -f ./objs/srs.log
2. rtmp推流
2.2 ffmpeg推流
- ffmpeg推流本地
flv
視頻
ffmpeg -re -i music.flv -codec copy -f flv -y rtmp://192.168.217.128/live/livestream
- 使用ffplay拉流
ffplay rtmp://192.168.217.128/live/livestream -x 800
- vlc拉流
- ffmpeg推流攝像頭+麥克風,這里使用dshow來推流
- 先查看自己電腦支持的設備
- 如果出現亂碼,建議使用高版本的ffmpeg,我在ffmpeg4.2.2出現亂碼,在ffmpeg7.1就沒有這個情況
ffmpeg -list_devices true -f dshow -i dummy
- 推流攝像頭+麥克風
- 這里要做編碼,所以指定編碼器為libx264和aac,并且編碼為flv格式
ffmpeg -re -f dshow -i video="Integrated Camera":audio="麥克風陣列 (Realtek(R) Audio)" -vcodec libx264 -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
- ffplay拉流
ffplay rtmp://192.168.217.128/live/livestream -x 800
- ffmpeg推流桌面 + 麥克風,這里使用gdigrab捕捉桌面
- 稍微復雜一點,因為我的電腦是雙顯示屏,要捕捉第二個顯示屏,所以設置了捕捉的范圍
- 使用h264_amf顯卡編碼,快一點
- 不知道為什么這里的麥克風和錄屏如果一起推,延遲巨大無比
ffmpeg -re -f gdigrab -framerate 30 -video_size 1920x1080 -offset_x 0 -offset_y 0 -i desktop -f dshow -i audio="麥克風陣列 (Realtek(R) Audio)" -vcodec h264_amf -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
- vlc拉流,拉流稍微慢一點,要等一會
- obs推流桌面
- 打開加號的顯示器采集
- 設置里面選擇推流的服務器
- 使用ffplay拉流
ffplay rtmp://192.168.217.128/live/livestream
-
ffmpeg推流桌面+麥克風
-
這里使用dshow的方法,不過得先下載:
screen-capture-recorder
,下載地址:[下載](screen-capture-recorder-to-video-windows-free · GitHub) -
下載完成后,輸入命令就會發現多了一個設備
ffmpeg -list_devices true -f dshow -i dummy
- ffmpeg 使用dshow推流屏幕+麥克風
- 這樣推流就比gdigrab延遲低很多,相比正常多了
- 使用硬件編碼降低延遲
ffmpeg -re -f dshow -i video="screen-capture-recorder":audio="麥克風陣列 (Realtek(R) Audio)" -vcodec h264_amf -acodec aac -f flv -y rtmp://192.168.217.128/live/livestream
- 使用ffplay拉流
ffplay rtmp://192.168.217.128/live/livestream
更多資料:https://github.com/0voice