当前位置: 首页 > news >正文

mediacodec延时_ijkplayer播放rtsp流卡顿、延迟问题解决

配置ijkplayer相应参数,解决卡顿、延迟

详情代码如下:

// 支持硬解 1:开启 O:关闭

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-hevc", 1);

// 设置播放前的探测时间 1,达到首屏秒开效果

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", 1);

/**

* 播放延时的解决方案

*/

// 如果是rtsp协议,可以优先用tcp(默认是用udp)

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "rtsp_transport", "tcp");

// 设置播放前的最大探测时间 (100未测试是否是最佳值)

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzemaxduration", 100L);

// 每处理一个packet之后刷新io上下文

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "flush_packets", 1L);

// 需要准备好后自动播放

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1);

// 不额外优化(使能非规范兼容优化,默认值0 )

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "fast", 1);

// 是否开启预缓冲,一般直播项目会开启,达到秒开的效果,不过带来了播放丢帧卡顿的体验

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", 0);

// 自动旋屏

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 0);

// 处理分辨率变化

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-handle-resolution-change", 0);

// 最大缓冲大小,单位kb

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "max-buffer-size", 0);

// 默认最小帧数2

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", 2);

// 最大缓存时长

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max_cached_duration", 3); //300

// 是否限制输入缓存数

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "infbuf", 1);

// 缩短播放的rtmp视频延迟在1s内

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "nobuffer");

// 播放前的探测Size,默认是1M, 改小一点会出画面更快

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probesize", 200); //1024L)

// 播放重连次数

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"reconnect",5);

// TODO:

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0);

// 设置是否开启环路过滤: 0开启,画面质量高,解码开销大,48关闭,画面质量差点,解码开销小

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48L);

// 跳过帧 ??

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_frame", 0);

// 视频帧处理不过来的时候丢弃一些帧达到同步的效果

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 5);

/* 暂未使用

// 超时时间,timeout参数只对http设置有效,若果你用rtmp设置timeout,ijkplayer内部会忽略timeout参数。rtmp的timeout参数含义和http的不一样。

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "timeout", 10000000);

// 因为项目中多次调用播放器,有网络视频,resp,本地视频,还有wifi上http视频,所以得清空DNS才能播放WIFI上的视频

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "dns_cache_clear", 1);

*/

相关文章:

  • ei拼音的四个声调对应的字_【ei的四个声调有汉字】作文写作问答 - 归教作文网...
  • 高斯模糊java代码_一行java代码实现高斯模糊效果
  • springboot切面返回值_SpringBoot之切面AOP
  • cubase怎么用耳机听_听无损音乐用什么蓝牙耳机好,如何选择适合自己的蓝牙耳机...
  • 发动机压缩比怎么计算公式_柴油发动机动力猛、油耗低,为啥家用车都不用它...
  • 儿童手工制作日历_儿童手工折纸:怎么用纸制作一个相册集?折法简单,来一起DIY下...
  • 弹性盒子内容体居右对其_弹性盒子基本属性
  • access 提供程序无法确定object 值_技巧 | 加一行注释,让你的程序提速10+倍!numba十分钟上手指南...
  • axure内联框架和动态面板_Axure 教程:使用内联框架,制作页面滚动 | 人人都是产品经理...
  • 西门子200恒压供水梯形图_无负压变频供水设备有哪些技术要求
  • webloigc12服务启动不了_WebLogicServer12.2.1.3服务器无法启动配置解决方法
  • zabbix数据导出表格_Zabbix“专家坐诊”第64期问答汇总
  • er图转化为关系模式题_2020年大学生电子设计竞赛,B题,单相在线式不间断电源,详细技术方案!...
  • cas client 更新ticket_cas客户端流程详解(源码解析)单点登录
  • ar 微信小程序_小程序AR|百事热爱霸屏榜
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • ES2017异步函数现已正式可用
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript异步流程控制的前世今生
  • magento2项目上线注意事项
  • mysql 数据库四种事务隔离级别
  • Python socket服务器端、客户端传送信息
  • Shadow DOM 内部构造及如何构建独立组件
  • vuex 笔记整理
  • windows-nginx-https-本地配置
  • 半理解系列--Promise的进化史
  • 创建一个Struts2项目maven 方式
  • 代理模式
  • 关于Flux,Vuex,Redux的思考
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前端之Sass/Scss实战笔记
  • 入门级的git使用指北
  • 实习面试笔记
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 因为阿里,他们成了“杭漂”
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 白色的风信子
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (javascript)再说document.body.scrollTop的使用问题
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (排序详解之 堆排序)
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .net 按比例显示图片的缩略图
  • .net反混淆脱壳工具de4dot的使用
  • .NET性能优化(文摘)
  • .Net语言中的StringBuilder:入门到精通
  • /var/log/cvslog 太大