ffmpeg and webRTC smarteye
1 前言
ffmpeg是音视频业界最著名的开源之一,支持多种流媒体协议的推拉流,支持多种媒体格式,支持多种编解码器,但是一直没有对webrtc协议的推拉流进行支持。
在whip协议写入rfc的草案后,webrtc协议的推流协议就有了规范。
whip协议,全名: WebRTC-HTTP ingestion protocol.
rfc地址:
https://www.ietf.org/archive/id/draft-ietf-wish-whip-16.txt
在SRS开源创始人winlin亲自下场,开发了ffmpeg支持webrtc推流的功能,在ffmpeg里支持了whip协议。
源码地址:
https://github.com/ossrs/ffmpeg-webrtc
本文介绍如何使用ffmpeg进行webrtc推流。
2 whip简介
whip协议的流程图如下:
+-------------+ +---------------+ +--------------+ +---------------+ | WHIP client | | WHIP endpoint | | Media Server | | WHIP session | +--+----------+ +---------+-----+ +------+-------+ +--------|------+ | | | | | | | | |HTTP POST (SDP Offer) | | | +------------------------>+ | | |201 Created (SDP answer) | | | +<------------------------+ | | | ICE REQUEST | | +--------------------------------------->+ | | ICE RESPONSE | | |<---------------------------------------+ | | DTLS SETUP | | |<======================================>| | | RTP/RTCP FLOW | | +<-------------------------------------->+ | | HTTP DELETE | +---------------------------------------------------------->+ | 200 OK | <-----------------------------------------------------------x
-
WHIP 客户端:通过向 WHIP 服务端发送带有 SDP Offer 的 HTTP POST 来发起通信。 -
WHIP 服务端:响应包含 SDP answer的“201 Created”消息。 -
WHIP 客户端和媒体服务器:建立 ICE 和 DTLS 会话,用于 NAT 穿透和安全通信。 -
RTP/RTCP 流:建立实时传输协议和实时传输控制协议流,用于从 WHIP 客户端到媒体服务器的媒体传输,由 SRTP 加密保护。 -
WHIP 客户端:发送 HTTP DELETE 以终止 WHIP 会话。 -
WHIP 会话:响应“200 OK”以确认会话
3 ffmpeg webrtc模块编译
ffmpeg的编译过程对于小白是比较痛苦的。本节介绍如何编译ffmpeg,让其支持webrtc推流。
首先支持webrtc的推荐编码格式为:
-
视频: H264 baseline profile,需要编译x264
-
音频: opus,需要编译libopus
同时需要支持openssl,因为https post是需要openssl。
最后需要whip muxer模块,大神winlin开发的webrtc推流模块。
3.1 x264编译
下载地址:
https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
x264编译:
./configure --enable-shared --disable-asmmake -j 2make install
如果需要支持asm的,可以去下载yasm后再编译
3.2 libopus编译
下载地址:
https://opus-codec.org/downloads/
libopus编译:
./configure --enable-sharedmake -j 2make install
3.3 ffmpeg编译
源码地址:
git@github.com:ossrs/ffmpeg-webrtc.git分支: patch/whip/v1
./configure中需要使能:
-
x264
-
libopus
-
openssl
-
whip-muxer
编译:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ && ./configure --disable-avdevice \--disable-doc --disable-devices \--enable-openssl --enable-muxer=whip \--enable-libopus --enable-libx264 \--enable-nonfree --enable-gpl \--extra-ldflags="-lpthread -lssl -lcrypto" \--disable-x86asmmake -j 2make install
3.4 ffmpeg的webrtc推流
推流需要注意的:
-
H264的profile
H264的profile必须是baseline profile。
-
音频编码
必须是opus,采样率48000,双通道
-
推流地址
这个根据webrtc sfu服务的类型来定,这里介绍srs的地址:
http://192.168.1.100:1985/rtc/v1/whip/?app=live&stream=livestream
其中ip为srs服务的对外地址,1985为srs的httpapi端口号。
"/rtc/v1/whip/"为http的路径名。
"app=live"和"stream=livestream",表明在srs中webrtc推流后,自动转成rtmp时,rtmp的app为live,stream为livestream。
ffmpeg推流命令行:
ffmpeg -re -i source.flv \-c:v libx264 -profile:v baseline \-c:a libopus -ar 48000 -ac 2 -ab 32k \-f whip "http://192.168.1.100:1985/rtc/v1/whip/?app=live&stream=livestream"
3.4.1 srs编译
srs是国内流媒体最牛逼的开源之一,它的易用性和文档完整性是业内最好的。
github地址:
https://github.com/ossrs/srs
编译与运行
./configuremake -j 2./objs/srs -c conf/rtc2rtmp.conf
直接使用rtc2rtmp.conf,这个配置支持自动把rtc流转成rtmp.
在ffmpeg推流后:
ffmpeg -re -i source.flv \-c:v libx264 -profile:v baseline \-c:a libopus -ar 48000 -ac 2 -ab 32k \-f whip "http://192.168.1.100:1985/rtc/v1/whip/?app=live&stream=livestream"
因为srs自动把rtc转成rtmp流,所以可以用vlc直接观看地址:
rtmp://192.168.1.100/live/livestream
【支持红外夜视IRCUT的4G智能安全帽BW620Y,内部主板型号有,SAE01, W20, k61v1_32_bsp_1g, k62v1_64_bsp, soq_azw_05_Natv,soq_azw_01_Natv,AZW003,aqm6816,soq_azw_01_Natv,SC161, W25,比传统的白光照明灯效果要好很多,可以规避大的亮的光斑,可以在雾天使用。-哔哩哔哩】 https://b23.tv/C36wsnX
危险气体检测仪,通过4G/5G执法记录仪或者4G/5G智能安全帽上报到平台,https://www.besovideo.com/detail?t=1&i=273
智能安全帽~生命体征检测与危险气体检测一体化集成设计还是蓝牙无线外挂式方式好?https://www.besovideo.com/detail?t=1&i=279
智能安全帽~生命体征采集上报,https://www.besovideo.com/detail?t=2&i=506
智能安全帽,检测生命体征上报平台, https://v.douyin.com/e3oP4Yx/
AIoT万物智联,智能安全帽生产厂家,执法记录仪生产厂家,为大型国企央企提供移动视频类产品的ODM/OEM服务,单北斗定位智能安全帽、智能头盔、头盔记录仪、独立北斗定位执法记录仪、智能视频分析/边缘计算AI盒子、车载视频监控/车载DVR/NVR、布控球、智能眼镜、智能手电、智能电子工牌、无人机4G补传系统等统一接入大型统一视频平台~融合通信可视指挥调度平台VMS/smarteye 。
什么是智能安全帽,如何选购智能安全帽,智能安全帽的主要功能,https://www.besovideo.com/detail?t=1&i=109
目前支持的AI智能算法、视频智能分析算法有哪些,https://www.besovideo.com/detail?t=1&i=297
