libsrt+ffmpeg推拉流(一)

srt相關以及其他問題可參考兩篇文章:

1:https://blog.csdn.net/zhuweigangzwg/article/details/106241458

2:https://blog.csdn.net/sweibd/article/details/104202287

下面介紹具體操作:

一:ffmpeg的windows版本支持srt已經編譯好的下載地址:https://ffmpeg.zeranoe.com/builds/;如果用api就自己組裝include,lib,dll。如果直接用ffmpeg.exe下載找到用即可。支持情況如下:

二:關於srt的一些較少編譯什麼的可以看這篇文章:https://blog.csdn.net/zhuweigangzwg/article/details/106241458;裏面的sls服務器是專門用於srt的服務器。

三:srt的linux編譯:步驟如下:
1:sudo yum install openssl-devel(下載openssl);
2:https://github.com/Haivision/srt(下載srt源碼);
3:cd srt-master;
4:cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_C_DEPS=ON -DENABLE_SHARED=OFF -DENABLE_STATIC=ON;
5:sudo make && sudo make install;會生成/usr/local/lib64/libsrt.a; 和/usr/local/include/srt;

四:srt的服務器編譯https://github.com/Edward-Wu/srt-live-server;步驟如下:
1: cd到srt-live-server-master目錄下;
2:sudo make,該目錄下有makefile文件.
會出現:slscore/SLSEpollThread.hpp:29:21: 致命錯誤:srt/srt.h:沒有那個文件或目錄;
參考README.md會發現:Requirements:
please install the SRT first, refer to SRT(https://github.com/Haivision/srt) for system enviroment. SLS can only run on OS based on linux, such as mac, centos or ubuntu etc.
要求
請先安裝SRT,有關係統環境,請參考SRT(https://github.com/Haivision/srt)。 SLS只能在基於Linux的OS上運行,例如mac,centos或ubuntu等。
如果安裝srt將做上面"三"的操作:
3:會出現如下錯誤:
cryspr-openssl.c:(.text+0x129):對‘AES_set_encrypt_key’未定義的引用
cryspr-openssl.c:(.text+0x141):對‘AES_set_decrypt_key’未定義的引用
collect2: 錯誤:ld 返回 1
make: *** [all] 錯誤 1;
解決方法:vim Makefile;將 LIBRARY_FILE = -lpthread -lz -lsrt 修改爲 LIBRARY_FILE = -lpthread -lz -lsrt -lssl -lcrypto 即可;
4:會在./bin目錄下生成sls和slc兩個可執行文件;
5:run with default config file $ sudo ./sls -c ../sls.conf;(默認端口8080);


五:ffmpeg的push端命令;
./ffmpeg -f gdigrab -framerate 30 -i desktop -vcodec libx264 -preset ultrafast -tune zerolatency -flags2 local_header -acodec libmp3lame -g 30 -pkt_size 1316 -flush_packets 0 -f mpegts test.ts
./ffmpeg -f gdigrab -framerate 30 -i desktop -vcodec libx264 -preset ultrafast -tune zerolatency -flags2 local_header -acodec libmp3lame -g 30 -pkt_size 1316 -flush_packets 0 -f mpegts srt://10.18.96.215:9999?streamid=uplive.sls.com/uplive/test1
有可能出現如下錯誤:
[srt @ 072d3a80] Connection to srt://[192.168.239.133]:8080?streamid=uplive.sls.com/live/test failed: I/O error
srt://[192.168.239.133]:8080?streamid=uplive.sls.com/live/test: I/O error;
首先一定要關閉linux防火牆:# 關閉  sudo service firewalld stop ;

六:ffmpeg的play端命令;
./ffplay -fflags nobuffer -i srt://10.18.96.215:9999?streamid=live.sls.com/live/test1

七:效果:

服務器截圖:

publish截圖:

play截圖:

八:關於具體的ffmpeg參數以及其他的參數可以做比較多的測試做調整;

https://zhuanlan.zhihu.com/p/129897837?utm_source=wechat_session&utm_medium=social&utm_oi=26741766619136,這裏有丟包等模擬測試。本文只是先打通。其他後續處理。

 

 

如有錯誤請指正:

交流請加QQ羣:62054820
QQ:379969650.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章