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

代码改动
先解释一下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爱好者

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

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

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

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

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

打赏作者

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

抵扣说明:

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

余额充值