bilibili / ijkplayer

Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
GNU General Public License v2.0
32.44k stars 8.11k forks source link

Android Option参数设置不成功 #4206

Open 1054353861 opened 6 years ago

1054353861 commented 6 years ago

设置参数option不成功,参数设置如下: IjkMediaPlayer ijkMediaPlayer = new IjkMediaPlayer(); ijkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);

            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1);
            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-handle-resolution-change", 1);
            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "opensles", 1);
            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 1);
            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 0);
            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0);
            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48);
            ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "dns_cache_clear", 1);

日志报错:E/IJKMEDIA: Option ijkiomanager not found.

04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: IjkMediaPlayer_reset 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: IjkMediaPlayer_release 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0) 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ffpipeline_set_surface() 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_set_android_surface(surface=0x0)=void 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_shutdown_l() 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_shutdown_l()=void 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: IjkMediaPlayer_native_setup 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader I/IJKMEDIA: av_version_info: ff3.4--ijk0.8.7--20180103--001 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader I/IJKMEDIA: ijk_version_info: k0.8.8 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ffpipeline_create_from_android() 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_set_inject_opaque(0x357a) 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_set_inject_opaque()=void 04-27 18:25:03.675 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque(0x357a) 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_set_ijkio_inject_opaque()=void 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback() 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ffpipeline_set_mediacodec_select_callback 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_android_set_mediacodec_select_callback()=void 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_dec_ref(): ref=0 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_shutdown_l() 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_shutdown_l()=void 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: IjkMediaPlayer_setDataSourceAndHeaders 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader V/IJKMEDIA: setDataSource: path https://cdn-ali.dushu.io/audio/trial/4979c0dcc6710819693ca9905c197d0e_bc5f44.mp3 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_set_data_source(url="https://cdn-ali.dushu.io/audio/trial/4979c0dcc6710819693ca9905c197d0e_bc5f44.mp3") 04-27 18:25:03.677 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_set_data_source(url="https://cdn-ali.dushu.io/audio/trial/4979c0dcc6710819693ca9905c197d0e_bc5f44.mp3")=0 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader D/IJKMEDIA: IjkMediaPlayer_prepareAsync 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_prepare_async() 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: ===== versions ===== 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: ijkplayer : k0.8.8 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: FFmpeg : ff3.4--ijk0.8.7--20180103--001 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: libavutil : 55.78.100 04-27 18:25:03.678 12047-12598/io.dushu.fandengreader I/IJKMEDIA: SDL_RunThread: [12598] ff_msg_loop 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: libavcodec : 57.107.100 04-27 18:25:03.678 12047-12598/io.dushu.fandengreader D/IJKMEDIA: message_loop 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: libavformat : 57.83.100 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: libswscale : 4.8.100 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: libswresample: 2.9.100 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: ===== options ===== 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: format-opts : ijkapplication = 536801214400 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: format-opts : ijkiomanager = 536849568768 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader I/IJKMEDIA: =================== 04-27 18:25:03.678 12047-12598/io.dushu.fandengreader D/IJKMEDIA: FFP_MSG_FLUSH: 04-27 18:25:03.678 12047-12592/io.dushu.fandengreader D/IJKMEDIA: ijkmp_prepare_async()=0 04-27 18:25:03.678 12047-12599/io.dushu.fandengreader I/IJKMEDIA: SDL_RunThread: [12599] ff_vout 04-27 18:25:03.678 12047-12600/io.dushu.fandengreader I/IJKMEDIA: SDL_RunThread: [12600] ff_read 04-27 18:25:03.678 12047-12600/io.dushu.fandengreader D/IJKMEDIA: Opening 'https://cdn-ali.dushu.io/audio/trial/4979c0dcc6710819693ca9905c197d0e_bc5f44.mp3' for reading 04-27 18:25:03.679 12047-12600/io.dushu.fandengreader D/IJKMEDIA: Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy' 04-27 18:25:03.679 12047-12600/io.dushu.fandengreader I/IjkMediaPlayer: onNativeInvoke 1 04-27 18:25:03.679 12047-12592/io.dushu.fandengreader E/IJKMEDIA: SDL_JNI_ThreadDestroyed: [12592] didn't call SDL_JNI_DetachThreadEnv() explicity 04-27 18:25:03.680 12047-12600/io.dushu.fandengreader I/IjkMediaPlayer: onNativeInvoke 131073 04-27 18:25:03.712 12047-12600/io.dushu.fandengreader I/IjkMediaPlayer: onNativeInvoke 131074 04-27 18:25:03.712 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Add dns cache hostname = cdn-ali.dushu.io, ip = 124.160.136.236 04-27 18:25:03.767 12047-12600/io.dushu.fandengreader D/IJKMEDIA: request: GET /audio/trial/4979c0dcc6710819693ca9905c197d0e_bc5f44.mp3 HTTP/1.1 User-Agent: Lavf/57.83.100 Accept: / Range: bytes=0- Connection: close Host: cdn-ali.dushu.io Icy-MetaData: 1 04-27 18:25:03.833 12047-12600/io.dushu.fandengreader I/IjkMediaPlayer: onNativeInvoke 2 04-27 18:25:03.836 12047-12600/io.dushu.fandengreader D/IJKMEDIA: Format mp3 probed with size=4096 and score=51 04-27 18:25:03.836 12047-12600/io.dushu.fandengreader D/IJKMEDIA: id3v2 ver:3 flags:00 len:35 04-27 18:25:03.836 12047-12600/io.dushu.fandengreader D/IJKMEDIA: pad 576 0 04-27 18:25:03.836 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Skipping 0 bytes of junk at 462. 04-27 18:25:03.836 12047-12600/io.dushu.fandengreader E/IJKMEDIA: Option ijkiomanager not found. 04-27 18:25:03.837 12047-12600/io.dushu.fandengreader D/IJKMEDIA: Before avformat_find_stream_info() pos: 462 bytes read:4918 seeks:0 nb_streams:1 04-27 18:25:03.837 12047-12598/io.dushu.fandengreader D/IJKMEDIA: FFP_MSG_OPEN_INPUT: 04-27 18:25:03.840 12047-12600/io.dushu.fandengreader D/IJKMEDIA: demuxer injecting skip 1105 / discard 0 04-27 18:25:03.841 12047-12600/io.dushu.fandengreader D/IJKMEDIA: skip 1105 / discard 0 samples due to side data 04-27 18:25:03.841 12047-12600/io.dushu.fandengreader D/IJKMEDIA: skip 1105/1152 samples 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader D/IJKMEDIA: All info found 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader D/IJKMEDIA: After avformat_find_stream_info() pos: 21966 bytes read:23118 seeks:0 frames:50 04-27 18:25:03.858 12047-12598/io.dushu.fandengreader D/IJKMEDIA: FFP_MSG_FIND_STREAM_INFO: 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: max_frame_duration: 10.000 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Input #0, mp3, from 'https://cdn-ali.dushu.io/audio/trial/4979c0dcc6710819693ca9905c197d0e_bc5f44.mp3': 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Metadata: 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: encoder : 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Lavf57.41.100 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Duration: 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: 00:14:56.03 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: , start: 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: 0.025057 04-27 18:25:03.858 12047-12600/io.dushu.fandengreader I/IJKMEDIA: , bitrate: 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader I/IJKMEDIA: 128 kb/s 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Stream #0:0 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader D/IJKMEDIA: , 50, 1/14112000 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader I/IJKMEDIA: : Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Metadata: 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader I/IJKMEDIA: encoder : 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader I/IJKMEDIA: Lavc57.48 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader I/IJKMEDIA: SDL_Android_AudioTrack: CHANNEL_OUT_STEREO 04-27 18:25:03.859 12047-12600/io.dushu.fandengreader I/IJKMEDIA: SDL_Android_AudioTrack: ENCODING_PCM_16BIT 04-27 18:25:03.872 12047-12600/io.dushu.fandengreader I/IJKMEDIA: SDL_Android_AudioTrack_new_from_spec: init volume as 1.000000/(0.000000,1.000000) 04-27 18:25:03.872 12047-12600/io.dushu.fandengreader I/IJKMEDIA: audio_session_id = 204513 04-27 18:25:03.873 12047-12600/io.dushu.fandengreader I/IJKMEDIA: AudioCodec: avcodec, mp3 04-27 18:25:03.873 12047-12603/io.dushu.fandengreader I/IJKMEDIA: SDL_RunThread: [12603] ff_aout_android 04-27 18:25:03.873 12047-12598/io.dushu.fandengreader D/IJKMEDIA: FFP_MSG_COMPONENT_OPEN: 04-27 18:25:03.873 12047-12598/io.dushu.fandengreader D/IJKMEDIA: ijkmp_get_msg: FFP_MSG_PREPARED 04-27 18:25:03.873 12047-12598/io.dushu.fandengreader D/IJKMEDIA: FFP_MSG_PREPARED: 04-27 18:25:03.874 12047-12604/io.dushu.fandengreader I/IJKMEDIA: SDL_RunThread: [12604] ff_audio_dec 04-27 18:25:03.874 12047-12604/io.dushu.fandengreader D/IJKMEDIA: skip 1105 / discard 0 samples due to side data 04-27 18:25:03.874 12047-12604/io.dushu.fandengreader D/IJKMEDIA: skip 1105/1152 samples 04-27 18:25:03.876 12047-12047/io.dushu.fandengreader D/IJKMEDIA: IjkMediaPlayer_start 04-27 18:25:03.876 12047-12047/io.dushu.fandengreader D/IJKMEDIA: ijkmp_start() 04-27 18:25:03.876 12047-12047/io.dushu.fandengreader D/IJKMEDIA: ijkmp_start()=0 04-27 18:25:03.876 12047-12598/io.dushu.fandengreader D/IJKMEDIA: ijkmp_get_msg: FFP_REQ_START 04-27 18:25:03.876 12047-12598/io.dushu.fandengreader D/IJKMEDIA: ijkmp_get_msg: FFP_REQ_START: start on fly 04-27 18:25:03.877 12047-12603/io.dushu.fandengreader D/IJKMEDIA: Using s16p internally between filters 04-27 18:25:03.877 12047-12603/io.dushu.fandengreader D/IJKMEDIA: avcodec/Audio: first frame decoded 04-27 18:25:03.877 12047-12598/io.dushu.fandengreader D/IJKMEDIA: FFP_MSG_AUDIO_DECODED_START: 04-27 18:25:03.877 12047-12598/io.dushu.fandengreader D/IJKMEDIA: FFP_MSG_AUDIO_RENDERING_START: 04-27 18:39:59.709 12047-12600/io.dushu.fandengreader I/IJKMEDIA: ffp_toggle_buffering: completed: OK 04-27 18:39:59.710 12047-12598/io.dushu.fandengreader D/IJKMEDIA: ijkmp_get_msg: FFP_MSG_COMPLETED 04-27 18:39:59.710 12047-12598/io.dushu.fandengreader D/IJKMEDIA: FFP_MSG_COMPLETED: 04-27 18:39:59.820 12047-12600/io.dushu.fandengreader I/IJKMEDIA: ffp_toggle_buffering: eof

lakinqianlijain commented 5 years ago

你好,你这个问题解决了吗,我也遇到了一样的问题

1054353861 commented 5 years ago

需要在音频初始化之前设置option。初始化之后设置不会起作用

lakinqianlijain commented 5 years ago

需要在音频初始化之前设置option。初始化之后设置不会起作用

我是在播放器初始化之后设置option,应该肯定是音视频初始化之前呀

mIjkPlayer = new IjkMediaPlayer(); setOption();

private void setOption() { mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 0); mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "opensles", 0); mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0); mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48); mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-buffer-size", 1024 1024 20); //20M 缓存 mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max-fps", 30L); //30帧每秒 mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probesize", 1024 * 10); mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", 1L);//设置播放前的探测时间 1,达到首屏秒开效果

      //SeekTo设置优化
    mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0L);
    mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "fastseek"); //快速seekto
    mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1);
    mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32);
    mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 1);
    mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 0);
    mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "reconnect", 1);
}
Rongrkang commented 4 years ago

你好我也遇到了这个问题,请问下你怎么解决的

MEIIT commented 4 years ago

你好我也遇到了这个问题,请问下你怎么解决的

MEIIT commented 4 years ago

调用了mIjkPlayer.reset()后必须重新设置options后才能播下一个资源