zoukankan      html  css  js  c++  java
  • IJKPlayer问题集锦之不定时更新

    1、IJKPlayer 不像系统播放器会给你旋转视频角度,所以你需要通过onInfowhat == IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED去获取角度,自己旋转画面;或者开启硬解硬解码,不过硬解码容易造成黑屏无声,诸位慎重啊O__O "…。

    mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
    mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1);
    mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-handle-resolution-change", 1);
    

    **2、 *IJKPlayer 出现黑色有声音没图像,看看你的视频编码是不是H264,pixel format是否存在,音频编码是不是AAC?默认IJKPlayer是不支持3pg(支持它干啥(・-・)?),不支持mepg(比如这个库RecordVideoDemo ),不支持AMR。所以如果你真的想要支持,那么参考这个#1961,打开mpeg支持,重新编ffmpeg,然后通过硬解码播放mpeg;或者通过系统的录制VideoRecord;或者选另外的JAVACV录制封装FFmpegRecorder

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

    **3、 **快进和慢放接口,已经支持全版本,如果遇到声调问题,可以设置:

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

    4、暂停的时候,退到后台再回到前台,画面黑了?

    1、
    这时候个人处理方式是,可以在暂停的时候,通过TextureView.getBitmap(point.x, point.y);获取到暂停的画面,用ImageView显示它,在onSurfaceTextureUpdated的时候隐藏ImageView,来实现画面的衔接。

    2、暂停时绘制静态画面多TextureView的Surface上,详细参考GSYVideoPlayer。

    5、一些视频返回码

    int MEDIA_INFO_VIDEO_RENDERING_START = 3;//视频准备渲染
    int MEDIA_INFO_BUFFERING_START = 701;//开始缓冲
    int MEDIA_INFO_BUFFERING_END = 702;//缓冲结束
    int MEDIA_INFO_VIDEO_ROTATION_CHANGED = 10001;//视频选择信息
    int MEDIA_ERROR_SERVER_DIED = 100;//视频中断,一般是视频源异常或者不支持的视频类型。
    int MEDIA_ERROR_IJK_PLAYER = -10000,//一般是视频源有问题或者数据格式不支持,比如音频不是AAC之类的
    int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200;//数据错误没有有效的回收
    
    

    6、某些视频在SeekTo的时候,会跳回到拖动前的位置,这是因为视频的关键帧的问题,通俗一点就是FFMPEG不兼容,视频压缩过于厉害,seek只支持关键帧,出现这个情况就是原始的视频文件中i 帧比较少,可开启以下来解决:

    setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1);
    

    7、下载速度可以通过IjkMediaPlayer的getTcpSpeed获取。

    8、高分辨率开启硬解码,不支持的话会自动切换到软解,就算开启mediacodec,如果设备不支持,显示的解码器也是avcodec软解。

    9、ijkMediaPlayer.setOption可配置的对应头文件参考:ff_ffplay_options

    10、缓冲进度条不到100,官方表示我就不保证都100,所以一般我都是:

    //95这个数值可能不准确,有些时候可能还需要低一些
    if (secProgress > 95) secProgress = 100;
    

    11、上面1、2、6的问题,在IJK封装的EXOPlayer和MediaPlayer都不会有问题,兼容上确实强过IJKPlayer,但是它们在细节上,却没有IJK处理的好,如EXOPlayer:退到后再回到前台、切换渲染控件的黑屏一段时间问题,除了用seekto之外目前没发现其他办法,这样的体验让我最后还是选择IJKPlayer。

    12、设置cookie 可以通过ijkPlayer的public void setDataSource(String path, Map<String, String> headers) 的header实现设置,参考ijkPlayer的issues-1150,headers也是在内部被转化为何issuses一样的setOption方法

    ** 13、**多个分片播放的功能,请查阅:
    issue64
    issue490
    分片播放资料

    14、硬解码黑屏相关issuse以及建议

    bilibili-issuse-1324

    15、出现声音画面不同步

    1、关了硬解码。

    2、参考如下:

    http://www.jianshu.com/p/a5cf04181f3d
    设置视频的倍速:
    [options setPlayerOptionIntValue:10 forKey:@"framedrop"];
    mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 60);

    16、rtsp播放失败问题

    https://github.com/CarGuo/GSYVideoPlayer/issues/232

    https://github.com/CarGuo/GSYVideoPlayer/issues/207

    17、m3u8拖动seek之后,加载很长时间

    https://github.com/Bilibili/ijkplayer/issues/2874

    https://github.com/CarGuo/GSYVideoPlayer/issues/252

    18、m3u8本地播放问题

    ijkplayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "protocol_whitelist", "crypto,file,http,https,tcp,tls,udp"); 
    

    19、断网自动重新连接
    url前接上ijkhttphook:,如

    String url = "ijkhttphook:http://baobab.wdjcdn.com/14564977406580.mp4";
    

    然后设置

    ((IjkMediaPlayer)mediaPlayer).setOnNativeInvokeListener(new IjkMediaPlayer.OnNativeInvokeListener() {
                @Override
                public boolean onNativeInvoke(int i, Bundle bundle) {
                    return true;
                }
            })
    

    20、url切换400(http与https域名共用)

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

    总的来说,兼容上还是谷歌的强,但是细节上还是IJKPlayer处理的好,一个是播放器兼容视频,一个是视频兼容播放器,看个人喜好吧︿( ̄︶ ̄)︿!

     
    一个爱猫的程序员老司机,致力于通俗易懂的愉悦♂开发。 https://github.com/CarGuo/
     
     
    https://www.jianshu.com/p/220b00d00deb
  • 相关阅读:
    变量的创建和初始化
    HDU 1114 Piggy-Bank (dp)
    HDU 1421 搬寝室 (dp)
    HDU 2059 龟兔赛跑 (dp)
    HDU 2571 命运 (dp)
    HDU 1574 RP问题 (dp)
    HDU 2577 How to Type (字符串处理)
    HDU 1422 重温世界杯 (dp)
    HDU 2191 珍惜现在,感恩生活 (dp)
    HH实习 acm算法部 1689
  • 原文地址:https://www.cnblogs.com/pengmn/p/9067732.html
Copyright © 2011-2022 走看看