ubuntu22.10 ffmpeg-webrtc推拉流srs环境搭建

这篇具有很好参考价值的文章主要介绍了ubuntu22.10 ffmpeg-webrtc推拉流srs环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、编译ffmpeg-webrtc
二、openssl,opus,x264配置
三、编译srs
四、测试
4.1推流端
4.2拉流端
五、交互与sdp

最近看到杨大佬发的动态,尝鲜体验一下。
ubuntu22.10 ffmpeg-webrtc推拉流srs环境搭建

一、编译ffmpeg-webrtc
ffmpeg-webrtc官网:https://github.com/ossrs/ffmpeg-webrtc
拉取ffmpeg-webrtc代码:

git clone -b feature/rtc-muxer https://github.com/winlinvip/ffmpeg-webrtc.git

这里配置需要openssl,opus,x264见下

./configure --enable-muxer=rtc --enable-openssl --enable-version3 --enable-libx264 --enable-gpl --enable-libopus
make -j10

二、openss,opus,x264配置
配置openssl

sudo apt update
sudo apt install build-essential checkinstall zlib1g-dev
wget https://www.openssl.org/source/openssl-3.0.7.tar.gz
tar -xf openssl-3.0.7.tar.gz
cd openssl-3.0.7
./config --prefix=/usr/ --openssldir=/usr/ shared zlib
make
make test
make install
cd /etc/ld.so.conf.d/
nano openssl-3.0.7.conf
添加
/usr/local/lib

编译ffmpeg-webrtc会报错openss < 3.0其实详细查看日志,发现没有找到openssl,这样配置官方的ffmpeg就已经能找到了,这里需要特别配置一下:
把/usr/lib64/pkgconfig/的三个libcrypto.pc libssl.pc openssl.pc这三个文件拷贝到/usr/lib/pkgconfig/下,

sudo cp /usr/lib64/pkgconfig/* /usr/lib/pkgconfig/
pkg-config update
sudo ldconfig

参考:https://www.yundongfang.com/Yun224517.html

编译x264,获取网站
http://www.videolan.org/developers/x264.html
在ubuntu22.10下直接apt-get install x264安装的库,ffmpeg-webrtc找不到,这里下载源码安装发现可以。
打开下载的x264源码,执行

./configure --enable-shared --enable-static --disable-asm 
make
make install

安装opus

sudo apt-get install libopus-dev

三、编译srs
拉取srs代码:
srs,版本要求SRS version 5.0.153 or higher, or 6.0.43 or higher。

https://github.com/ossrs/srs

编译srs后运行:

./objs/srs -c conf/rtc2rtmp.conf

四、测试
运行:
ffmpeg_g -re -i ~/git/srs/trunk/doc/source.flv -vcodec libx264 -profile:v baseline -r 25 -g 50 -acodec libopus -ar 48000 -ac 2 -f rtc “http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream”
以上输入文件是srs包里的测试文件。
也可以使用自己的文件,注意必须是x264库,opens编码,baseline模式,且不能只含视频不含音频,也要主要像素格式,baseline支持的像素格式有限。
4.1推流端:

ffmpeg -re -i westlife.mp4 -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -r 25 -g 50 -acodec libopus -ar 48000 -ac 2 -f rtc "http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream"

其中推流端也可以用网页的WHIP,但这里测试的是ffmpeg-webrtc。
4.2拉流端:
经测试ffmpeg-webrtc的ffplay并不能拉取WHIP流,应该是这部分代码还没完善。受条件限制,后面再测延时,先挖个坑把。
http://localhost:8080/players/whep.html?autostart=true
ubuntu22.10 ffmpeg-webrtc推拉流srs环境搭建五、交互与sdp
看一下ffmpeg推流端与srs的交互过程:

[rtc @ 0x55816580bec0] WHIP: Init ice_arq_max=5, ice_arq_timeout=30, dtls_arq_max=5, dtls_arq_timeout=50 pkt_size=1500
[rtc @ 0x55816580bec0] WHIP: SDP offer=1048B, answer=1040B, ufrag=ods0t720, pwd=32B, transport=udp://192.168.100.245:8000
[rtc @ 0x55816580bec0] WHIP: ICE STUN ok, url=udp://192.168.100.245:8000, username=ods0t720:c2bf2fab, req=80B, res=-11B, arq=5
[rtc @ 0x55816580bec0] WHIP: DTLS handshake done=1, arq=0, srtp_material=60B
[rtc @ 0x55816580bec0] WHIP: SRTP setup done, suite=AES_CM_128_HMAC_SHA1_80, key=30B
[rtc @ 0x55816580bec0] WHIP: Create RTP muxer OK, buffer_size=4096, max_packet_size=1484
Output #0, rtc, to 'http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream':

ffmpeg推流端与srs的sdp交互:文章来源地址https://www.toymoban.com/news/detail-448607.html

[rtc @ 0x5615e784dec0] WHIP: Init ice_arq_max=5, ice_arq_timeout=30, dtls_arq_max=5, dtls_arq_timeout=50 pkt_size=1500
[rtc @ 0x5615e784dec0] Failed to request url=http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream, offer: v=0
o=FFmpeg 4489045141692799359 2 IN IP4 127.0.0.1
s=FFmpegPublishSession
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=ice-ufrag:1ac08523
a=ice-pwd:fb55f4f4d99d240fa65c2adfec5e7c24
a=fingerprint:sha-256 84:67:F7:27:AE:00:74:71:AA:EF:42:E1:B8:85:78:C9:6D:02:CB:F8:83:07:79:1F:4F:79:F8:1B:0A:5F:7C:C7
a=setup:active
a=mid:0
a=sendonly
a=msid:FFmpeg audio
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=ssrc:492341693 cname:FFmpeg
a=ssrc:492341693 msid:FFmpeg audio
m=video 9 UDP/TLS/RTP/SAVPF 106
c=IN IP4 0.0.0.0
a=ice-ufrag:1ac08523
a=ice-pwd:fb55f4f4d99d240fa65c2adfec5e7c24
a=fingerprint:sha-256 84:67:F7:27:AE:00:74:71:AA:EF:42:E1:B8:85:78:C9:6D:02:CB:F8:83:07:79:1F:4F:79:F8:1B:0A:5F:7C:C7
a=setup:active
a=mid:1
a=sendonly
a=msid:FFmpeg video
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:106 H264/90000
a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001e
a=ssrc:2806541432 cname:FFmpeg
a=ssrc:2806541432 msid:FFmpeg video

到了这里,关于ubuntu22.10 ffmpeg-webrtc推拉流srs环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SRS OBS利用RTMP协议实现音视频推拉流;WebRTC 屏幕直播分享工具

    参考:https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started 1)docker直接运行SRS服务: 运行起来后可以http://localhost:8080/ 看到服务基本信息: 2) OBS 推流 在设置里设置直播地址: 然后回到首页点击开始直播 3)点击http://localhost:8080/ 可以网页查看流视频 SRS低延迟启动(暂时测试下来延迟

    2024年04月13日
    浏览(60)
  • Qt6.5.1+WebRTC学习笔记(十二)环境搭建流媒体服务器(ubuntu22.04+SRS)

    若只是实现一对一通信,仅使用webrtc就足够了。但有时间需要进行多个人的直播会议,当人比较多时,建议使用一个流媒体服务器,笔者使用的是SRS。 这个开源项目资料比较全,笔者仅在此记录下搭建过程 1.操作系统ubuntu22.04 64位 x86架构(建议更新到最新) 2.安装编译器相

    2024年02月09日
    浏览(83)
  • Ubuntu22.10开启xrdp gnome远程,及远程桌面闪退解决

    1、开启Ubuntu远程桌面: “电源” “设置” (图一) “共享”(图二) 点击\\\"远程桌面\\\"(设置如图三)点击“媒体共享”(设置如图四),完成! 图一 图二 图三   图四    2、在WIN系统,按“WIN”+“R”,就可以远程了! 3、注意:用WIN远程时会出现闪退,网上查找 ,下面

    2024年02月11日
    浏览(101)
  • 树莓派CM4——使用MetaRTC3.0集成ffmpeg实现webrtc推拉流

    由于项目需要实时语音通讯,集成了国内大神MetaRTC3.0功能 原文如下: https://blog.csdn.net/m0_56595685/article/details/124366760?spm=1001.2014.3001.5502 1、本文属于新手向,主要讲编译过程; 2、文章超长,图片众多,且编译过程非常耗时; 3、请一定要按顺序弄,自由发挥容易出问题,不要

    2023年04月08日
    浏览(45)
  • 【Vivado】Ubuntu22.10安装Vivado2022.2报错the disk is full, you‘ve exceeded disk quota及无法启动解决

    There was an error extracting files Error was encountered while extracting archive …/2022.2/payload/rdi_0931_2022.2_1014_8888.xz The possible reasons can be: the disk is full, you’ve exceeded disk quota, or the destination directory is too long. 参考Vitis Installation Failure - Error -7 while trying to extract .xz file,软件不能安装在NTFS分区。

    2024年02月04日
    浏览(545)
  • ubuntu22.10安装cuda出错Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.

    ubuntu22.10在安装cuda,使用如下命令:     结果产生错误提示: Failed to verify gcc version. See log at /var/log/cuda-installer.log for details. 1、这是由于gcc版本不匹配的问题!一般简易解决方法是忽略,使用 --override 参数  2、或者可以变更gcc版本,   A、首先在选CUDA版本时,链接尾部可以

    2024年02月11日
    浏览(79)
  • Android WebRtc+SRS/ZLM视频通话(1):虚拟机安装Ubuntu

    来自奔三人员的焦虑日志 秉着没事找事的原则,这里直接从服务器安装开始说起,也当记录自己这一路以来的愚昧之举,由于没有物理服务器,这里以虚拟机为例进行操作。 下载并安装虚拟机软件。建议使用 VMware 或 VirtualBox,它们是免费的虚拟机软件,我这里下的是VMware,

    2024年02月03日
    浏览(45)
  • 最小化安装移动云大云操作系统--BCLinux-for-Euler-22.10-everything-x86_64-230316版

    CentOS 结束技术支持,转为RHEL的前置stream版本后,国内开源Linux服务器OS生态转向了开源龙蜥和开源欧拉两大开源社区,对应衍生出了一系列商用Linux服务器系统。BCLinux-for-Euler-22.10是中国移动基于开源欧拉操作系统22.03社区版本深度定制的企业级X86服务器通用版操作系统。本文

    2024年02月11日
    浏览(59)
  • WebRTC音视频通话-WebRTC推拉流过程中日志log输出

    WebRTC音视频通话-WebRTC推拉流过程中日志log输出 之前实现iOS端调用ossrs服务实现推拉流流程。 推流:https://blog.csdn.net/gloryFlow/article/details/132262724 拉流:https://blog.csdn.net/gloryFlow/article/details/132417602 在推拉流过程中的WebRTC的相关日志log输出可以看到一些相关描述信息。在WebRTC日志

    2024年02月10日
    浏览(61)
  • metaRTC+ZLMediaKit实现webrtc的推拉流

    ZLMediaKit是一个基于C++11的高性能运营级流媒体服务框架,是一个支持webrtc SFU的优秀的流媒体服务器系统。 metaRTC新版本支持whip/whep协议,支持whip/whep协议的ZLMediaKit推拉流。 ZLMediaKit新版本支持whip和whep协议,支持两种API。 metaRTC封装了HTTP API,只需将参数mediaServer设置为zlm即可

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包