利用ffmpeg打造播放器直播观看公网rtmp1s延时极致优化

ffmpeg直播解决延时的关键方法 当我们使用ffmpeg的时候,假如不使用编码,直接上传到rtmp服务器,那么视频是没什么延时的,但是这样流量却非常的大,因为假如不编码,就意味着不压缩,直接原始数据上传,是非常消耗流量的。 但假如我们需要编码呢,比如使用了h264或libx264,那么视频起码有10秒左右的延时 如下面的代码,同时采集本地麦克风、本地桌面视频,做视频直播的代码: ffmpeg -f dshow -i audio=\"麦克风阵列 (Realtek(R) Audio)\" -acodec aac -f gdigra.. 阅读详情

本博客转载于:https://my.oschina.net/klttl/blog/734873


摘要: 此文章主旨为了说明在无须修改ffmpeg任何源码,以及修改编码参数设置以及服务器、CDN配置,优化播放器即可达到1s延时效果

关于rtmp直播流打开慢和延时大的问题,很多人共识播放器在公网都在2-3s的延时是正常的,前天一款播放器拉流rtmp,延时在1s,

果断去分析这个软件,发现他就是用了ffmpeg,然后和那款播放器提供者,聊了下,想套点大概的思路,基本上没套出啥,没办法只能自己动手
然后根据以往的经验和群里几位大神的建议下,说干就干,花了一天的时间,终于从延时3s优化到了1s的延时,不敢独享,拿出来供大家参考。


以下的优化点以重到轻方式描述出来:

1、rtmp直播流打开慢
avformat_find_stream_info():
这个函数会花去主要的时间,因为要做流的分析拆分等,所以优化可以重点从这个函数入手。一种是设置probesize,这个设置为FLAG_NOBUFFER数据包不入缓冲区,用于分析不显示,并且还可以设置max_anlyze_duration2默认值,这块可以参考ijkplayer这块的设置挺好;

另一种方法比较极端些:
自己实现这个函数的功能,以替代avformat_find_stream_info接口,前提就是要知道你的流的相关信息,经过测试这样设置之后,仅耗时9ms左右,效果很明显,具体做法就是
根据metadata信息,手动设置解码参数,针对264+aac的rtmp可以考虑这种优化方案,这个效果比较明显具体可以根据个人项目需求来取舍。

2、第二个关于播放延时的问题:

比如ffplay默认的帧率控制没有追帧的策略,其实说白了就是同步算法不够好,在播放网络流的时候,那么如果网络如果发生抖动,延时会累加。
这个就是群里一个哥们说这个1s延时效果能够出现多久的原因,经过半个小时测试依然坚挺着。
优化策略就是调整帧率控制部分。具体做法就是解码线程运行的时候获取机器本地时间,第一帧计算机器时间与流pts的时间差(本地时间和流时间同步),

流的时间落后本地时间多的情况下,快放或者考虑丢包原则就是要在流畅度和实时性之间得到一个平衡。

3、第三个优化的地方,需要优化缓存区,说白了就是一般的播放器都有自己的一个缓冲区,那么这个缓冲区存储数据到获取第一帧数据不能超过200ms,

这个就是你要优化你的缓冲区,每个播放器的缓冲区实现方式不一样,所以这个也不好具体表述,我这边就是用的deque做的缓存区,做的也比较简单。

4、第四个优化的地方,就是视频渲染这块,渲染这块优化,每个人写的不一样,同样使用opengl显示,
每个人写的效率不一样,这个就看个人功力了,不熟悉可以看看qtav这块的代码,还是不错的;

5、第五个优化的地方,这个其实就是这个歌播放器的框架,以及数据直接的拷贝传递的效率等各种控制
都会影响最终的结果,这个也是说看个人的能力吧。

口说无凭,最后上图证明一切,跑了半个小时,还是很稳定(播放器观看手机推流):


解决ffmpeg播放摄像头延时的问题(项目案例使用有效) 视频流转流处理 阅读详情

相关推荐

ffmpeg拉流rtmp音频实时数据有延时的解决方法

最近在做一个从rtmp服务器中拉流音频实时数据会延迟播放的问题,从rtmp播放端发现,是探测时间太长了,超过了5s,播放数据就延迟播放了5second, 卡在了这个函数:avformat_find_stream_info(),我通过ffplay的以下命令可以解决播放延时的问题:   ffmpeg ffplay播放延时大问题:播放延时参数设置 本文转自:h

a1317338022的博客 1万+

ffmpeg推流性能优化

设置最大延迟时间。如果延迟超过这个时间,将跳过缓冲并立即发送数据。默认值为10000毫秒。在使用ffmpeg推流时,可以通过设置缓存大小来调整推流的性能。:设置实时缓冲区大小,以比特为单位。默认值为2000000比特。:设置缓冲区大小,以比特为单位。默认值为2000000比特。如果丢包严重,可以扩大缓冲区。

qq_36827625的博客 8146

超低延迟RTSP/RTMP/HTTP播放器实测小于100ms

超低延迟的网络流播放器,基于ffmpeg,可用于测试视频流的延迟

【无标题】

流,不需要搭建服务器可以直接播放。

A person does not really understand something until after teaching it to a computer. Donald.E.Knuth 1034

FFmpeg直播推流视频到nginx rtmp服务

资源包含FFmpeg库,lib 以及vs配置,下载可运行。 可用于本地文件推流,以及rtsp等地址推流 包含nginx 配置文件 配置说明

ffmpegrtmppusher:基于ffmpeg的直播推流器,超级稳定,经过长期稳定性测试,超低延迟,可用于手机,电视,嵌入式等直播App及设备

ffmpegrtmppusher 基于ffmpeg的直播推流器,超级稳定,经过长期稳定性测试,超低延迟,可用于手机,电视,嵌入式等直播App及设备。 开发环境安卓android android studio 3.2 工程加入如下基础模块: 1,摄像头数据推流,音频数据推流,接口简单,几行代码可实现直播推流,以及监控功能。 2,权限请求。 3,内有一套编译好的ffmpeg,因此库可以使用NDK开发使用。 4,集成了Camera2的使用。 5,集成GPU美颜模块,几行代码实现集成gpu,让你的直播都是美美哒。 6,提供了YUV数据的各种转换功能,nv21,nv12,yuv420,yuv420sp等。 7,此外在此基础上扩展帖图,水印等功能,接口都有接供,几行代码的事儿。 8,还有很多。。。自己下载看吧。 调用代码如下: 软件包rtmppusher.demo.com.rtmpp

ffmpeg + nginx rtmp + vlc 高延迟的解决方案

不要使用 vlc 播放器,即便更改缓存大小也没用。

qq_40266867的博客 1836

ubuntu20.04安装UE4+Airsim环境

版本UE4.27+Airsim1.81

玖茸的博客 3380

ffmpeg推拉流优化方案

ffmpeg推拉流优化方案 文章目录ffmpeg推拉流优化方案一、卡顿优化设备老旧视频流音视频不同步网络二、延时优化三、传输协议优化四、首屏秒开优化服务器做优化客户端优化五、弱网优化六、DNS劫持优化七、服务端cdn优化 主要从以下几点来优化 卡顿优化 延时优化 传输协议优化 首屏秒开优化 弱网优化 DNS劫持优化 服务端cdn优化 一、卡顿优化 视频播放端卡顿主要有以下几点原因: 设备老旧 ...

yetaoii的博客 8766

基于STM32的智能水温控制系统设计

智能水温控制系统广泛应用于家庭、工业、农业等多个场景,尤其在热水器、恒温泳池和地暖系统中,通过实时监测和调节水温,提高设备的效率和用户的舒适度。本文基于STM32微控制器设计了一个智能水温控制系统,能够实时监测水温、用户设置温度,并根据需要控制加热器或冷却装置,确保水温维持在设定范围内。系统能够根据用户设定自动控制加热和冷却设备,确保水温维持在舒适的范围内,并通过OLED屏实时显示水温信息。在生成的项目基础上,编写水温监测、目标温度设定、加热器和冷却装置控制、OLED数据显示以及超温报警的代码。

2401_88410555的博客 2475

Android 16(API 36)状态栏颜色适配全攻略:从沉浸式到自定义背景

本文全面解析Android 16(API 36)强制沉浸式状态栏带来的适配挑战,提供了从FrameLayout包裹法到动态修改Window背景色的核心解决方案。针对传统状态栏颜色设置失效问题,详细阐述了如何利用WindowInsets API实现自定义背景,并涵盖全屏模式、Fragment切换及第三方ROM兼容性等实战场景,为开发者提供一站式适配指南。

weixin_29227425的博客 594

ffplay播放视频源延时的参数设置

使用ffplay播放视频源时,rtsp/rtmp等,会有一定的延时,这里我们可以通过设置ffplay播放参数将延时控制到最小。 ffplay.exe -i rtmp://xxxxxxx -fflags nobuffer 减少缓冲 也可以减少分析码流的时间 ffplay.exe -i rtmp://xxxxxxx -fflags nobuffer -analyzeduration 100

xcyle的口袋 9338

车辆TBOX科普 第69次 TBOX行业发展趋势与就业前景深度解析

TBOX技术革新驱动汽车智能化发展 Telematics BOX(TBOX)正快速从车辆状态监控器进化为整车智能核心,市场年增速超25%,2025年规模将达150亿美元。技术呈现四大革新方向:5G与V2X集成实现多模通信网关,支持10-20Gbps高速传输;多模GNSS融合定位精度达厘米级,北斗系统提供独特优势;边缘计算架构使TBOX具备本地AI处理能力,减少95%数据上传;硬件安全模块(HSM)成为标配,满足EVITA标准的安全需求。这些技术突破正重塑TBOX架构,使其从单纯通信管道升级为智能网联汽车的关

IT深耕十余载,大道之简 1825

rtmp直播如何实现200ms内级别延迟?(1)

前言 最近有机会跟几个一线大厂专家讨论了下直播低延迟技术方案,感触颇多,也学习很多,顺便把自己方案完善了一下作为记录.低延时效果截图如下: 图1 ps:左侧为相机采集画面.右侧为拉流端公网拉取画面,延迟为172ms(由于第三相机拍摄照片故延迟计算为包含采集延时) 图2 ps:推拉流两端视频截图,由于是桌面截图,故延迟不包含设备采集延时,延迟为132ms,后续会放出测试程序,供大家进行实测对比 手术示教及手术指导 直播低延迟方案是我在17年 18年在上一家公司医疗直播进行的应用,医疗直播

ye568974617的博客 1万+

使用GitLab限制开发者使用CI/CD的权限,三种方案

使用三种方案来限制开发人员的CI/CD权限。

知无涯 5096

【webrtc】openh264编码:动态配置码控参数触发IDR编码

SetRates 下发RateControlParameters 给到openh264 编码器 void SetRates(const RateControlParameters& parameters) override; LayerConfig 编码器这边的配置是layerconfig,具体到层的: std::vector<LayerConfig> configurations_; void H264EncoderImpl::SetRates(const RateCo.

突围 724

ffmpeg的转码延时测试与设置优化

我测试了下ffmpeg直播流的转码延时,这些参数对文件的转码也是通用的; 测试环境:  . ffmpeg 版本为v3.0.2  . 从同一台服务器拉流,转码再推送到同一台服务器上,这样减少了服务器与网络影响;  . 播放器使用实时模式,不缓冲 1. 设置slow参数 $ ./ffmpeg -i rtmp://192.168.1.12/live/src -vcodec libx2

北雨南萍 1万+

RK3588 Weston

下面是使用 weston -B=vnc-backend.so --width=1280 --height=720 ,使用vnc的客户端来远程访问weston桌面。Wayland是一套display server(Wayland compositor)与client间的。,而Weston是Wayland compositor的参考实现。7:在基于wayland 运行Qt 程序。根据不同版本,支持的后端也不相同。2:当前weston支持的后端。4:weston的配置文件。3:weston中的录屏。

OpenWrt/WLAN/驱动/Android/嵌入式开发总结 1029

七牛rtmp延迟测试方案

七牛rtmp延迟测试方案首先需要了解的是,为什么客户自己测试的网络延迟会很高,rtmp达到10秒,hls达到20秒左右。 原因很简单,因为客户通常测试采用的都是obs的推流,播放器采用一些软件播放器,例如vlc来播放rtmp的推流或者hls的推流。通常这类播放器都是存在一定的缓存buffer,导致延迟可能会变大等情况。 所以,测试需要按照七牛的推流sdk与播放sdk,或者推流sdk 与七牛的网页

guoer9973的专栏 6214

踩坑实录:C#上位机YOLOv11从2FPS到45FPS,ONNX Runtime GPU加速全解析

算力迁移:将推理核心从CPU迁移至GPU(核心提速手段);内存复用:避免重复分配/释放内存,减少GC压力;维度固定:工业场景固定输入分辨率,关闭动态维度;资源限制:合理限制GPU/CPU/内存占用,避免资源耗尽;解耦设计:推理线程与UI线程解耦,避免跨线程问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 572

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题(如何解决编码 0 延时)

在看到这篇文章前我已经解决了这个问题,但是知其然不知其所以然,看到原作者写的文章很详细。 于是转之,感谢原作者。 原文链接:http://blog.youkuaiyun.com/ymsdu2004/article/details/8565822 FFMPEG中如果你编码完一段视频发现视频变短了,那很有可能就是没有设置0延时的原因。 近日在做一个分布式转码服务器,解码器是采用开源的f

蓝色污点的专栏 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Chrome浏览器低延迟(小于500毫秒)播放RTSP实时视频完全解决方案!

现在到处是摄像头的时代,随着网络带宽的不断提速和智能手机的普及催生出火热的网络直播行业,新冠病毒的大流行又使网络视频会议系统成为商务会议的必然选择,因此RTSP实时视频流播放及处理不再局限于安防行业。在如道路、工厂、楼宇、学校、港口、农场、景区等诸多场景实施的信息化系统中,绝大多数都采用的是B/S架构,隐藏迫切需要在浏览器中嵌入多路摄像头RTSP流低延迟(小于500毫秒)播放功能,而在IE及Chrome 45以下版本等浏览器中,采用ActiveX控件或NPAPI插件即可实现。然而美好总是短暂的,从2015年

猿大师播放器—网页低延迟播放RTSP视频流专家 2038

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

LogMiner vs 裸日志解析(二十八):日志里那个 DBA,到底指向磁盘上的哪个字节?

系列第 28 篇。上一篇讲了操作码——记录在说什么。这一篇讲地址——它改的那块数据,到底在磁盘的什么位置。

m0_60522596的博客 60

记录仪视频抽帧与时间轴预览:FFmpeg 批量参数、雪碧图拼接与并行度取舍

文中抽帧间隔、并发区间与耗时为该项目 8 核环境的参考值,需按自身硬件与文件特征实测校准(项目由黑龙江单工科技有限公司实施,其为深圳警翼智能科技股份有限公司东北区域授权经销商,授权区域以黑龙江、吉林为核心,具体授权范围与有效期以授权文件原件为准)配合 WebVtt 时间轴描述,前端一次加载几 MB 图片,鼠标划过高亮对应帧,点一下直接跳到视频对应时间点。太稀,定位精度不够,调阅人还是得在十几秒的区间里拖。滤镜会先规整,序号仍然线性,但时间戳映射要以滤镜输出为准,不能直接用源文件 PTS。

专注 DMR/ePDT 专网对讲、寒地应急通信,分享林区、石油石化、铁路无线通信技术方案与工程实践。 289
上一篇: Apple公司Darwin流式服务器源代码分析(四)
下一篇: ffmpeg中的时间
一世豁然
博客等级 码龄15年 1276粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值