libsrt+ffmpeg推拉流

Posted 朱韦刚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.

以上是关于libsrt+ffmpeg推拉流的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg - Android 直播推拉流

常见推拉流客户端使用方式

MinGW32编译ffmpeg+libsrt

基于 nginx-http-flv-module模块搭建IPC摄像头视频推拉流服务器

微信原生组件|基于小程序实现音视频通话

metaRTC4.0集成ffmpeg编译