rtmp改udp推流,并测试延时性能

本文介绍了将RTMP推流改为UDP推流的过程,涉及编码器配置优化以减少延迟。在一台旧电脑上,使用ffmpeg命令和代码推流都能实现稳定的25帧推流,延时约为300ms。ffplay和VLC播放UDP流时,需要注意参数设置。此外,还对比了不同工具和设置下的延时性能,并提供了相关资源链接,包括ffplay错误处理和流媒体服务器搭建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码改动
先解释一下udp推流,就可以把它想象成一开始学习网络编程udp和tcp通信,这不过这次传输的数据是音视频信息而已,它不像rtmp有流媒体服务器,拉流推流端,只有发送端和接收端。

URL = "rtmp://192.168.100.75/live/livestream";
avformat_alloc_output_context2(&octx, 0, "flv", URL);
改为
URL = "udp://192.168.100.75:6016";
avformat_alloc_output_context2(&octx, 0, "mpegts", URL);

即可,其他相同。

性能和延时
先说下配置,编码器配置为

av_opt_set(pCodecCtx->priv_data, "preset", "ultrafast", 0);//superfast
av_opt_set(pCodecCtx->priv_data, "tune", "zerolatency", 0);

计算机为15年的老机,现在性能很拉跨,四核Intel® Core™ i5-4460 CPU @ 3.20GHz处理器。
用命令推流

ffmpeg -f decklink -i 88:25a7cda0:00000000 -pix_fmt yuv420p -ar 44100 -acodec libfdk_aac -vcodec h264 -preset ultrafast -tune zerolatency -b 5000k -r 25 -f mpegts udp://192.168.100.75:6016

top命令后id为56,并能稳定25帧推流,这里视频是1080i50。
用代码推流,id为55

在同一个局域网,过交换机,无论是用代码还是命令推流延时都非常小,不过还是能肉眼分辨出的,目测在300ms。
注意:
此外这里常见ffplay错误,可参考:ffmpeg udp推流bind failed: Address already in use

注意:ffplay命令为

ffplay -fflags nobuffer -analyzeduration 1000000 -i udp://127.0.0.1:6016

补充:用vlc播udp流时要加@,并且如果是127则需要换成具体的ip,如:

udp://@192.168.100.76:6017

这里 -fflags nobuffer非常关键,见:ffmpeg命令

搭建srs+rtmp的流媒体服务器,另一篇博客:srs搭建rtmp流媒体服务器
编译带h264编码和aac编码的ffmpeg库,另一篇文章:libfdk-aac和x264安装编译

用udp推流延时测试,见:rtmp改udp推流,并测试延时性能
srt流媒体搭建:srt流媒体搭建
ffmpeg编译配置srt模块:ffmpeg编译配置srt模块
srs+rtmp和nginx+rtmp推流延时比较
各部分所占延时:从采集到拉流各部分延时概述

ffmpeg是音视频必备,但即使从业数年,它似乎依然有无穷的秘密,感兴趣添加笔者微信:YQW1163720468,加入ffmpeg微信群讨论。但记得备注:ffmpeg爱好者

RTMP延时可以通过以下几种方式来减小: 1. 使用WebRTC:WebRTC是一种实时通信协议,相比于RTMP具有更低的延时。它使用UDP传输,且支持NACK机制,可以更及时地反馈丢包情况进行重传,从而减小延时。\[1\] 2. 优化网络环境:确保网络稳定和带宽充足是减小延时的关键。可以通过使用高质量的网络连接、优化CDN节点的覆盖范围等方式来善网络环境。\[1\] 3. 使用RTCP报文:RTCP报文可以用于通知播放和连接的断开,从而节省资源消耗和减少无效传输。这可以通过减少无效传输来降低延时。\[2\] 4. 优化播放端缓冲:播放端的jitbuffer设置可以影响延时。如果希望实现低延时,可以适当减小jitbuffer的大小,以便更快地播放数据。然而,需要注意的是,减小jitbuffer可能会增加对网络抖动的敏感性。\[3\] 综上所述,通过使用WebRTC、优化网络环境、使用RTCP报文和优化播放端缓冲等方式,可以减小RTMP延时。 #### 引用[.reference_title] - *1* *2* *3* [下一代低延时直播CDN:HLS、RTMPUDP +WebRTC](https://blog.csdn.net/weixin_33986223/article/details/111984220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、、、、南山小雨、、、、

分享对你有帮助,打赏一下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值