前言
之前调试时有配置过,这是网上大牛整理的,今天有空就摘抄于此,方便自己查阅。
好记性不如烂笔头
正文
开启硬解或软件
硬解是由GPU解析
软解是又CPU解析
0 使用软解
1 使用硬解
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 0);//使用软解
需要准备好后自动播放
默认情况下是自动播放的,但需要控制状态,
1 自动播放(默认值)
0 准备好后暂停,等待播放命令
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1);
丢帧配置
ijkplaer以音频帧为时间基准,当视频帧和音频帧不同步时,允许丢弃的视频帧数。
可以设置值为整数–[-1,120]
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 5); //丢帧数5
等待,下面直接引用。
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 5); //丢帧 是在视频帧处理不过来的时候丢弃一些帧达到同步的效果
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 0); //设置是否开启环路过滤: 0开启,画面质量高,解码开销大,48关闭,画面质量差点,解码开销小
//播放延时的解决方案
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", 1);//设置播放前的探测时间 1,达到首屏秒开效果
//如果是rtsp协议,可以优先用tcp(默认是用udp)
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "rtsp_transport", "tcp");
ijkMediaPlayer.setOption(1, "analyzemaxduration", 100L);
ijkMediaPlayer.setOption(1, "flush_packets", 1L);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1); //需要准备好后自动播放
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "fast", 1);//不额外优化
ijkMediaPlayer.setOption(4, "packet-buffering", 0); //是否开启预缓冲,一般直播项目会开启,达到秒开的效果,不过带来了播放丢帧卡顿的体验
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 0); //自动旋屏
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-handle-resolution-change", 0); //处理分辨率变化
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "max-buffer-size", 0);//最大缓冲大小,单位kb
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", 2); //默认最小帧数2
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max_cached_duration", 3); //最大缓存时长
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "infbuf", 1); //是否限制输入缓存数
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "nobuffer");
ijkMediaPlayer.setOption(1, "probesize", 200); //播放前的探测Size,默认是1M, 改小一点会出画面更快
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"reconnect",5); //播放重连次数
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "dns_cache_clear", 1); //因为项目中多次调用播放器,有网络视频,resp,本地视频,还有wifi上http视频,所以得清空DNS才能播放WIFI上的视频
参考文章
历史上的今天
暂无评论...
随机推荐
Zygote的启动之二ZygoteInit
前言Android系统中,所有的应用程序以及SystemServer都是由Zygote进程孕育(fork)出来的。接上文,上文介绍从Native世界进入了Java世界。而且java世界的大门就是ZygtoeInit.java。这次我们看ZygtoeInit中处理了哪些功能。Android P...
[摘]ANSI、UTF-8、Unicode little endian、Unicode big endian的互相转换
前言本文摘抄,关于ANSI、UTF-8和Unicode的介绍。好记性不如烂笔头正文ANSIANSI字符串,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件UnicodeUnicode字符串每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾。NT操作系统内...
刘年:写给儿子刘云帆
1突然想到了身后的事。写几句话给儿子。其实,火葬最干净。只是我们这里没有。 不要开追悼会,这里,没有一个人懂得我的一生。 不要请道士,他们唱得实在不好听。 放三天吧,我等一个人,很远。三天过后没有,就算了。有的人,永远都是错过。 ...
周作人:乌篷船
子荣君:接到手书,知道你要到我的故乡去,叫我给你一点什么指导。老实说,我的故乡,真正觉得可怀恋的地方,并不是那里,但是因为在那里生长,住过十多年,究竟知道一点情形,所以写这一封信告诉你。我所要告诉你的,并不是那里的风土人情,那是写不尽的,但是你到那里一看也就会明白的,不必哆唆地多讲。我要说的是一...
Android ListView 滚动条的简单记录
前言用了多次还是容易忘记,因此这里记录一下,方便自己查阅。好记性不如烂笔头主要是摘抄的。正文android:scrollbars是否显示滚动条,它的取值可以是vertical,horizontal或none。android:scrollbarThumbVertical控制垂直滚动条...
Android FileObserver对文件或文件夹监听
前言Android有个抽象类FileObserver,看名字就知道对文件监听。用于监听文件访问、创建、修改、删除、移动等操作的监听。本文有参考其他文章整理,以及自己亲自写demo验证。好记性不如烂笔头正文FileObserver简介FileObserver 是个抽象类,需要继承才可以使...