ffmpeg-webrtc(metartc)给ffmpeg添加webrtc协议

这个是使用metrtc的库为ffmpeg添加webrtc传输协议,目前国内还有一个这样的开源项目,是杨成立大佬,大师兄他们在做,不过wili页面维护的不好,新手不知道如何使用,我专门对它做过介绍,另一篇博文:ubuntu22.10 ffmpeg-webrtc推拉流srs环境搭建

后者目前还不支持whep(应该在开发中),因此推荐使用metartc的库。

首选它有三个第三方库,先编译这三个库。

版本commit 681b58754e9dd4bcfe79388ea73782705124c65b master

1.metartc6

2.srtp

3.ssl和crypto

4.编译ffmpeg

5.推流命令 WHIP

6.拉流命令 WHEP

7.测试

7.1配置srs

7.1推流

7.3拉流

笔者用的是ubuntu22.04默认gcc/g++是11

在编译srtp时报错,多重定义,其实是编译器版本过高,需要切换版本。

cpp 复制代码
sudo apt-get install gcc-9
sudo apt-get install g++-9
sudo ln -sf /usr/bin/gcc-9 /usr/bin/gcc
sudo ln -sf /usr/bin/g++-9 /usr/bin/g++

1.metartc6,这里有webrtc的传输协议。

cpp 复制代码
cd FFmpeg-n4.3.3/metartc6/metartc6
cd libmetartccore6
mkdir build
cd build
./cmake_x64.sh //x86_64
cp ./libmetartccore6.a ../../

2.srtp

cpp 复制代码
./configure
make -j20
cp libsrt2.a ../

3.openssl

cpp 复制代码
./config
make -j20
cp libcrypto2.a libssl2.a ../

4.编译ffmpeg,注意下面路径改为自己的路径

cpp 复制代码
./configure --enable-libx264 --enable-gpl --extra-libs='-L/home/yqw/temp/ffmpeg-webrtc/FFmpeg-n4.3.3/metartc6 -lmetartccore6 -lpthread -lsrtp2 -lssl -lcrypto -ldl'
make -j20
sudo make install

5.推流命令 WHIP

cpp 复制代码
ffmpeg ......-acodec opus -strict -2 -ar 48000 -f webrtc "url"
srs sample: whip url http://192.168.0.105:1985/rtc/v1/whip/?app=live&stream=livestream
cpp 复制代码
ffmpeg ......-acodec opus -strict -2 -ar 48000 -f webrtc "http://192.168.0.105:1985/rtc/v1/whip/?app=live&stream=livestream"
cpp 复制代码
ffmpeg ......-acodec opus -strict -2 -ar 48000 -f webrtc "webrtc://192.168.0.105:1985/rtc/v1/whip/?app=live&stream=livestream"
cpp 复制代码
./ffmpeg -re -i /path/test.mp4 -vcodec libx264 -acodec opus -strict -2 -ar 48000 -f webrtc "http://192.168.0.105:1985/rtc/v1/whip/?app=live&stream=livestream"

6.拉流命令 WHEP

cpp 复制代码
ffplay "webrtc://whep_url"
srs sample: whep url http://192.168.0.105:1985/rtc/v1/whip-play/?app=live&stream=livestream
cpp 复制代码
ffplay "webrtc://192.168.0.105:1985/rtc/v1/whip-play/?app=live&stream=livestream"

7.测试:

7.1拉取srs代码

srs,版本要求SRS version 5.0.153 or higher, or 6.0.43 or higher。

cpp 复制代码
https://github.com/ossrs/srs

编译srs后运行:

cpp 复制代码
./objs/srs -c conf/https.rtc.conf

7.2推流

cpp 复制代码
ffmpeg -re -i /home/yqw/t/juren-30s.mp4 -vcodec libx264 -acodec opus -strict -2 -ar 48000 -f webrtc "http://192.168.100.77:1985/rtc/v1/whip/?app=live&stream=livestream"

如果不要视频如下:

cpp 复制代码
ffmpeg -re -i /home/yqw/t/west.mp4 -vn -acodec opus -strict -2 -ar 48000 -f webrtc "http://192.168.100.77:1985/rtc/v1/whip/?app=live&stream=livestream"

7.3拉流

cpp 复制代码
ffplay "webrtc://192.168.100.77:1985/rtc/v1/whip-play/?app=live&stream=livestream"

附录:

libmetartccore2 来自于metaRTC-2.0.120.zip编译

对于2.0 commit 3b7034bbf3a9fbe5682733f0adf11763c75edf28

./ffmpeg -re -i /home/yqw/t/juren-30s.mp4 -vcodec libx264 -acodec opus -strict -2 -ar 48000 -f webrtc "webrtc://192.168.100.77:1985/live/livestream"

./ffplay webrtc://192.168.100.77:1985/live/livestream

相关推荐
杀生丸学AI14 小时前
【世界模型】MotionForesight:视频模型应用于未来的三维场景流预测
音视频
cpp_learner15 小时前
FFmpeg 解复用全流程解析
ffmpeg
开开心心就好18 小时前
视频播放器完美解码集成三款播放器切换使用
前端·人工智能·智能手机·电脑·音视频·virtualenv·pygame
cuijiecheng201819 小时前
RK3588音视频播放器方案对比
音视频
海带紫菜菠萝汤19 小时前
MSE (Media Source Extensions) 实战:流媒体分块加载与自适应码率
前端·javascript·音视频
七牛云行业应用19 小时前
ComfyUI + MiniMax H3 实战教程:全模态视频生成,API 和本地两种玩法
人工智能·大模型·音视频
AIVOClaw容剪19 小时前
AI 成片系统搭建如何让矩阵号差异化从「同一脚本 50 个号发」变成「反推提示词每号一版」——5 模块防止同质化被判搬运 · AI 视频智能体平台
人工智能·矩阵·音视频
AUV110720 小时前
SaaS 产品演示视频怎么做:从目标、脚本、演示数据到交付的可复现流水线
音视频·saas·产品演示
春末的南方城市20 小时前
消费级显卡迎来实时视频生成!FastVideo 开源 FastWan-QAD,RTX 5090 实现 1.8 秒生成 5 秒 480P 视频!
人工智能·深度学习·计算机视觉·aigc·音视频
程序员老陆21 小时前
FFmpeg时间基相关函数大杂烩
ffmpeg·时间基·timebase