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推流。
whip协议的流程图如下:
- 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”以确认会话
ffmpeg的编译过程对于小白是比较痛苦的。本节介绍如何编译ffmpeg,让其支持webrtc推流。
首先支持webrtc的推荐编码格式为:
- 视频: H264 baseline profile,需要编译x264
- 音频: opus,需要编译libopus
同时需要支持openssl,因为https post是需要openssl。
最后需要whip muxer模块,大神winlin开发的webrtc推流模块。
3.1 x264编译
下载地址:
x264编译:
如果需要支持asm的,可以去下载yasm后再编译
3.2 libopus编译
下载地址:
libopus编译:
3.3 ffmpeg编译
源码地址:
https://www.nxrte.com/jishu/webrtc/configure中需要使能:
- x264
- libopus
- openssl
- whip-muxer
编译:
3.4 ffmpeg的webrtc推流
推流需要注意的:
- H264的profileH264的profile必须是baseline profile。
- 音频编码必须是opus,采样率48000,双通道
- 推流地址这个根据webrtc sfu服务的类型来定,这里介绍srs的地址:
其中ip为srs服务的对外地址,1985为srs的httpapi端口号。
“/rtc/v1/whip/”为http的路径名。
“app=live”和”stream=livestream”,表明在srs中webrtc推流后,自动转成rtmp时,rtmp的app为live,stream为livestream。
ffmpeg推流命令行:
3.4.1 srs编译
srs是国内流媒体最牛逼的开源之一,它的易用性和文档完整性是业内最好的。
github地址:
编译与运行
直接使用rtc2rtmp.conf,这个配置支持自动把rtc流转成rtmp.
在ffmpeg推流后:
因为srs自动把rtc转成rtmp流,所以可以用vlc直接观看地址:
到此这篇ffmpeg查看视频详细信息(ffmpeg查看视频信息指令)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/32813.html