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

IJK播放器问题集

IJK播放器问题集

在使用ijkplayer进行播放时候,时常会遇到一些问题,故记录下:

1 ijkplayer出现小窗切换到大窗画面卡住问题

检查是否大小窗口切换时候,频繁设置了surface。某些底层api频繁设置会导致画面不动。

//holder判断是否一样则不设置
 if (mIjkMediaPlayer != null && holder != null && oldSurfaceHolder != holder) {
     mIjkMediaPlayer.setDisplay(holder);
     oldSurfaceHolder  = holder;
  }

2 ijkplayer播放出现花屏

检查是否设置buffer_size过小,过小可能会导致udp协议丢包花屏。

 mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "buffer_size", 1316 * 512);

3 ijkplayer设置日志级别

设置日志输出级别需先开启日志功能,再设置级别。

  public static final int IJK_LOG_UNKNOWN = 0;
   public static final int IJK_LOG_VERBOSE = 2;
   public static final int IJK_LOG_DEBUG = 3;
   public static final int IJK_LOG_INFO = 4;
   public static final int IJK_LOG_WARN = 5;
   public static final int IJK_LOG_ERROR = 6;
   public static final int IJK_LOG_FATAL = 7;
   public static final int IJK_LOG_SILENT = 8;

    public void setLogLevel(int level) {
        if (mIjkMediaPlayer != null) {
            mIjkMediaPlayer.setLogEnabled(true);
            mIjkMediaPlayer.native_setLogLevel(level);
        }
    }

4 ijkplayer存在无画面只有声音问题

检查是否未设置surfaceholder或者被设置空了,再次播放未设置。

setDisplay(SurfaceHolder sh)

5 ijkplayer播放占用cpu过大

检查是否播放使用的软解播放,如果是,建议使用硬解。

    public static final int SOLUTION_MODE_HARD = 1;
    public static final int SOLUTION_MODE_SOFT = 2;
    public static final int SOLUTION_MODE_AUTO_SOFT = 3;
    
    mIjkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", currentSolutionMode);

6 ijkplayer倍速播放设置

在android 6.0(Android API23)及以后才能实现音视频倍速播放,6.0以下可能不会报错,但是效果只有音频能够倍速。
rate取值:0.5~2

mIjkMediaPlayer.setSpeed(rate);

7 ijkplayer RTSP传输协议设置

优先tcp则需要如下设置:

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

否则使用默认的协商协议。
对于不支持tcp的流服务器,强制使用tcp会导致无法播放。

8 ijkplayer 无法播放

抓取网络包查看协议交互,是否存在传输协议不对或者端口不对导致无法收到数据流导致无法播放。

9 ijkplayer 起播慢问题

检查是否起播探测流大小设置过大。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT,“probesize”,1024*10);

http://www.kler.cn/a/515512.html

相关文章:

  • Mac开启任何来源安装配置环境变量
  • rocketmq基本架构
  • 2025年最新深度学习环境搭建:Win11+ cuDNN + CUDA + Pytorch +深度学习环境配置保姆级教程
  • excel导入数据处理前端
  • 快速学习GO语言总结
  • 你还在用idea吗
  • 【LeetCode】--- MySQL刷题集合
  • [Computer Vision]实验二:图像特征点提取
  • stm32单片机个人学习笔记14(USART串口数据包)
  • Linux 内核学习 3b - 和copilot 讨论pci设备的物理地址在内核空间和用户空间映射到虚拟地址的区别
  • Elasticsearch——Elasticsearch索引管理实战
  • 网络系统管理Linux环境——StorageSrv之Mariadb
  • 一键查验,智享未来-PHP发票查验接口助力财务转型
  • 安装auto_gptq解决办法
  • 第11篇:vue3 中 props 的使用
  • LeetCode 206 题:反转链表
  • SpringBoot 实现动态管理定时任务 Job的动态操作(添加、修改、启停、执行、删除)以及界面展示和具体Job的创建与执行示例
  • 使用sql查询excel内容
  • 学习ASP.NET Core的身份认证(基于JwtBearer的身份认证6)
  • Django 的 `Meta` 类和外键的使用
  • 数据分析 变异系数
  • 设计模式-模板方法实现
  • css普通用法
  • APL语言的物联网
  • epoll 的边缘触发(Edge Triggered)与水平触发(Level Triggered)
  • 不同IO模型服务器的简单实现