bilibili / ijkplayer

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

avcodec切换到mediacodec时还是avcodec #426

Closed qazmoon closed 8 years ago

qazmoon commented 9 years ago

机器本身可以硬解H264但不能硬解mpeg2。 当先播放mpeg2视频时avcodec可以正常播放,切换播放H264时设置硬解后mediacodec失败只能是avcodec。

qazmoon commented 9 years ago

log如下:

D/IJKMEDIA( 4096): IjkMediaPlayer_reset
D/IJKMEDIA( 4096): IjkMediaPlayer_release
D/IJKMEDIA( 4096): ijkmp_set_android_surface(surface=0x0)
D/IJKMEDIA( 4096): ffpipeline_set_surface()
D/IJKMEDIA( 4096): ijkmp_set_android_surface(surface=0x0)=void
D/IJKMEDIA( 4096): ijkmp_shutdown_l()
D/IJKMEDIA( 4096): message_loop exit
D/IJKMEDIA( 4096): SDL_AMediaCodecJava_stop
E/IJKMEDIA( 4096): SDL_AMediaCodecJava_dequeueInputBuffer: dequeueInputBuffer failed
I/IJKMEDIA( 4096): MediaCodec: enqueue_thread_func: exit: -1
I/IJKMEDIA( 4096): MediaCodec: func_run_sync: exit: 0
E/IJKMEDIA( 4096): SDL_AMediaCodecJava_releaseOutputBuffer: releaseOutputBuffer
E/IJKMEDIA( 4096): SDL_Overlay(ffmpeg): overlay_free_l(0x66ad9e48)
E/IJKMEDIA( 4096): SDL_Overlay(ffmpeg): overlay_free_l(0x66d6f280)
E/IJKMEDIA( 4096): SDL_AMediaCodecJava_releaseOutputBuffer: releaseOutputBuffer
E/IJKMEDIA( 4096): SDL_Overlay(ffmpeg): overlay_free_l(0x5b005db8)
D/IJKMEDIA( 4096): ijkmp_shutdown_l()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_native_setup
D/IJKMEDIA( 4096): ffpipeline_create_from_android()
D/IJKMEDIA( 4096): ijkmp_set_format_callback(0x59856b01, 0x1d30067e)
D/IJKMEDIA( 4096): ijkmp_set_format_callback()=void
D/IJKMEDIA( 4096): ijkmp_android_set_mediacodec_select_callback()
D/IJKMEDIA( 4096): ffpipeline_set_mediacodec_select_callback
D/IJKMEDIA( 4096): ijkmp_android_set_mediacodec_select_callback()=void
D/IJKMEDIA( 4096): ijkmp_dec_ref(): ref=0
D/IJKMEDIA( 4096): ijkmp_shutdown_l()
D/IJKMEDIA( 4096): ijkmp_shutdown_l()=void
I/IJKMEDIA( 4096): SDL_AMediaCodecJava_delete
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(overlay-format, 842225234)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(framedrop, 12)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(mediacodec, 1)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(max_ts_probe, 5)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(http-detect-range-support, 0)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOption
D/IJKMEDIA( 4096): ijkmp_set_option(user_agent, IJKMEDIAPLAYER)
D/IJKMEDIA( 4096): ijkmp_set_option()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(skip_loop_filter, 48)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setDataSourceAndHeaders
V/IJKMEDIA( 4096): setDataSource: path http://192.168.1.1/1.m3u8
D/IJKMEDIA( 4096): ijkmp_set_data_source(url="http://192.168.1.1/1.m3u8")
D/IJKMEDIA( 4096): ijkmp_set_data_source(url="http://192.168.1.1/1.m3u8")=0
D/IJKMEDIA( 4096): IjkMediaPlayer_setVideoSurface
D/IJKMEDIA( 4096): ijkmp_set_android_surface(surface=0x32900005)
D/IJKMEDIA( 4096): ffpipeline_set_surface()
D/IJKMEDIA( 4096): ijkmp_set_android_surface(surface=0x32900005)=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(mediacodec, 1)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_prepareAsync
D/IJKMEDIA( 4096): ijkmp_prepare_async()
I/FFMPEG  ( 4096): ===== options =====
I/IJKMEDIA( 4096): SDL_RunThread: [5403] ff_msg_loop
D/IJKMEDIA( 4096): message_loop
D/IJKMEDIA( 4096): FFP_MSG_FLUSH:
I/FFMPEG  ( 4096): player-opts : overlay-format               = 842225234
I/FFMPEG  ( 4096): player-opts : framedrop                    = 12
I/FFMPEG  ( 4096): player-opts : mediacodec                   = 1
I/FFMPEG  ( 4096): format-opts : max_ts_probe                 = 5
I/FFMPEG  ( 4096): format-opts : http-detect-range-support    = 0
I/FFMPEG  ( 4096): format-opts : user_agent                   = IJKMEDIAPLAYER
I/FFMPEG  ( 4096): codec-opts  : skip_loop_filter             = 48
I/FFMPEG  ( 4096): ===================
I/IJKMEDIA( 4096): SDL_RunThread: [5404] ff_vout
D/IJKMEDIA( 4096): ffpipenode_create_video_output_from_android_mediacodec()
D/IJKMEDIA( 4096): ijkmp_prepare_async()=0
I/IJKMEDIA( 4096): SDL_RunThread: [5405] ff_read
E/FFMPEG  ( 4096): Option http-detect-range-support not found.
I/FFMPEG  ( 4096): [FFPlayer @ 0x5bf15ed0] max_frame_duration: 10.000
I/FFMPEG  ( 4096): Input #0, hls,applehttp, from 'http://192.168.1.1/1.m3u8':
I/FFMPEG  ( 4096):   Duration: 
I/FFMPEG  ( 4096): N/A
I/FFMPEG  ( 4096): , start: 
I/FFMPEG  ( 4096): 36.120633
I/FFMPEG  ( 4096): , bitrate: 
I/FFMPEG  ( 4096): N/A
I/FFMPEG  ( 4096): 
I/FFMPEG  ( 4096):   Program 0 
I/FFMPEG  ( 4096):     Metadata:
I/FFMPEG  ( 4096):       variant_bitrate : 
I/FFMPEG  ( 4096): 0
I/FFMPEG  ( 4096): 
I/FFMPEG  ( 4096):     Stream #0:0
I/FFMPEG  ( 4096): : Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv), 720x480 [SAR 32:27 DAR 16:9], max. 4800 kb/s
I/FFMPEG  ( 4096): , 
I/FFMPEG  ( 4096): 29.97 fps, 
I/FFMPEG  ( 4096): 29.97 tbr, 
I/FFMPEG  ( 4096): 90k tbn, 
I/FFMPEG  ( 4096): 59.94 tbc
I/FFMPEG  ( 4096): 
I/FFMPEG  ( 4096):     Stream #0:1
I/FFMPEG  ( 4096): : Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 384 kb/s
I/FFMPEG  ( 4096): 
I/IJKMEDIA( 4096): SDL_Android_AudioTrack: CHANNEL_OUT_STEREO
I/IJKMEDIA( 4096): SDL_Android_AudioTrack: ENCODING_PCM_16BIT
I/IJKMEDIA( 4096): SDL_Android_AudioTrack_new: init volume as 1.000000/(0.000000,1.000000)
I/IJKMEDIA( 4096): SDL_RunThread: [5407] ff_aout_android
I/FFMPEG  ( 4096): [FFPlayer @ 0x5bf15ed0] AudioCodec: avcodec, mp2
I/IJKMEDIA( 4096): SDL_RunThread: [5408] ff_audio_dec
D/IJKMEDIA( 4096): ffpipenode_create_video_decoder_from_android_mediacodec()
E/IJKMEDIA( 4096): ffpipenode_create_video_decoder_from_android_mediacodec:create: not H264
I/FFMPEG  ( 4096): [FFPlayer @ 0x5bf15ed0] VideoCodec: avcodec, mpeg2video
I/IJKMEDIA( 4096): SDL_RunThread: [5414] ff_video_dec
W/FFMPEG  ( 4096): [FFPlayer @ 0x5bf15ed0] fps: 29.970030 (normal)
W/FFMPEG  ( 4096): [FFPlayer @ 0x5bf15ed0] fps: 29.970030 (normal)
D/IJKMEDIA( 4096): ijkmp_get_msg: FFP_MSG_PREPARED
D/IJKMEDIA( 4096): FFP_MSG_PREPARED:
D/IJKMEDIA( 4096): IjkMediaPlayer_start
D/IJKMEDIA( 4096): ijkmp_start()
D/IJKMEDIA( 4096): ijkmp_start()=0
D/IJKMEDIA( 4096): IjkMediaPlayer_getVideoCodecInfo
D/IJKMEDIA( 4096): ijkmp_get_video_codec_info
D/IJKMEDIA( 4096): ijkmp_get_video_codec_info()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_getAudioCodecInfo
D/IJKMEDIA( 4096): ijkmp_get_audio_codec_info
D/IJKMEDIA( 4096): ijkmp_get_audio_codec_info()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_getMediaMeta
D/IJKMEDIA( 4096): ijkmp_get_meta_l
D/IJKMEDIA( 4096): ijkmp_get_meta_l()=void
D/IJKMEDIA( 4096): FFP_MSG_VIDEO_SIZE_CHANGED: 720, 480
D/IJKMEDIA( 4096): FFP_MSG_SAR_CHANGED: 32, 27
D/IJKMEDIA( 4096): ijkmp_get_msg: FFP_REQ_START
D/IJKMEDIA( 4096): SDL_VoutFFmpeg_CreateOverlay(w=720, h=480, fmt=RV32(0x32335652, dp=0x5bc52970)
D/IJKMEDIA( 4096): FFP_MSG_VIDEO_SIZE_CHANGED: 720, 480
I/System.out( 4096): ijkmediaplayer,onVideoSizeChanged 720 , 480
D/IJKMEDIA( 4096): ANativeWindow_setBuffersGeometry: w=1078, h=598, f=(0x4) => w=720, h=480, f=RV32(0x32335652)
D/IJKMEDIA( 4096): FFP_MSG_VIDEO_SIZE_CHANGED: 720, 480
D/IJKMEDIA( 4096): SDL_VoutFFmpeg_CreateOverlay(w=720, h=480, fmt=RV32(0x32335652, dp=0x5bc52970)
D/IJKMEDIA( 4096): FFP_MSG_VIDEO_SIZE_CHANGED: 720, 480
I/System.out( 4096): ijkmediaplayer,onVideoSizeChanged 720 , 480
D/IJKMEDIA( 4096): SDL_VoutFFmpeg_CreateOverlay(w=720, h=480, fmt=RV32(0x32335652, dp=0x5bc52970)
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
W/FFMPEG  ( 4096): [mpegts @ 0x5b0b1560] PES packet size mismatch
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 2695): Alarmreceiver
E/FFMPEG  ( 4096): [mp2 @ 0x5b5a9430] Header missing
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] invalid cbp -1 at 35 18
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 25 19
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 22 9
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] slice mismatch
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 10 20
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 17 21
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] invalid cbp -1 at 15 22
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 34 23
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 1 12
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 28 13
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] slice mismatch
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] invalid cbp 0 at 3 8
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] invalid mb type in P Frame at 8 25
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 1 26
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] slice mismatch
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 21 9
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] invalid cbp -1 at 5 15
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] invalid mb type in P Frame at 18 29
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] slice mismatch
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] slice mismatch
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] mb incr damaged
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 33 11
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] 00 motion_type at 21 17
E/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] Warning MVs not available
I/FFMPEG  ( 4096): [mpeg2video @ 0x5b591ed0] concealing 990 DC, 990 AC, 990 MV errors in P frame
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
D/IJKMEDIA( 4096): ijkmp_pause()
D/IJKMEDIA( 4096): ijkmp_pause()=0
D/IJKMEDIA( 4096): ijkmp_get_msg: FFP_REQ_PAUSE
E/FFMPEG  ( 4096): [http @ 0x581af4a0] Stream ends prematurely at 1430680, should be 1492344
E/FFMPEG  ( 4096): failed to open segment, retry...
E/FFMPEG  ( 4096): failed to open segment, retry...
E/FFMPEG  ( 4096): failed to open segment, retry...
W/FFMPEG  ( 4096): Failed to open segment of playlist 0
E/FFMPEG  ( 4096): failed to open segment, retry...
E/FFMPEG  ( 4096): failed to open segment, retry...
E/FFMPEG  ( 4096): failed to open segment, retry...
W/FFMPEG  ( 4096): Failed to open segment of playlist 0
D/setDataSource( 4096): -----====setDataSource start============http://192.168.1.1/2.m3u8
D/IJKMEDIA( 4096): IjkMediaPlayer_reset
D/IJKMEDIA( 4096): IjkMediaPlayer_release
D/IJKMEDIA( 4096): ijkmp_set_android_surface(surface=0x0)
D/IJKMEDIA( 4096): ffpipeline_set_surface()
D/IJKMEDIA( 4096): ijkmp_set_android_surface(surface=0x0)=void
D/IJKMEDIA( 4096): ijkmp_shutdown_l()
D/IJKMEDIA( 4096): message_loop exit
D/poll    ( 4096): send from ui
D/mini    ( 4096): updateMini
W/FFMPEG  ( 4096): [hls,applehttp @ 0x5b08cbb0] Failed to reload playlist 0
D/dalvikvm( 4096): threadid=20: thread exiting, not yet detached (count=0)
D/dalvikvm( 4096): threadid=17: thread exiting, not yet detached (count=0)
E/IJKMEDIA( 4096): SDL_Overlay(ffmpeg): overlay_free_l(0x5b0acb18)
E/IJKMEDIA( 4096): SDL_Overlay(ffmpeg): overlay_free_l(0x581a94d0)
E/IJKMEDIA( 4096): SDL_Overlay(ffmpeg): overlay_free_l(0x5ad8d5e0)
D/IJKMEDIA( 4096): ijkmp_shutdown_l()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_native_setup
D/IJKMEDIA( 4096): ffpipeline_create_from_android()
D/IJKMEDIA( 4096): ijkmp_set_format_callback(0x59856b01, 0x1d40068a)
D/IJKMEDIA( 4096): ijkmp_set_format_callback()=void
D/IJKMEDIA( 4096): ijkmp_android_set_mediacodec_select_callback()
D/IJKMEDIA( 4096): ffpipeline_set_mediacodec_select_callback
D/IJKMEDIA( 4096): ijkmp_android_set_mediacodec_select_callback()=void
D/IJKMEDIA( 4096): ijkmp_dec_ref(): ref=0
D/IJKMEDIA( 4096): ijkmp_shutdown_l()
D/IJKMEDIA( 4096): ijkmp_shutdown_l()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(overlay-format, 842225234)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(framedrop, 12)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(mediacodec, 1)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(max_ts_probe, 5)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(http-detect-range-support, 0)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOption
D/IJKMEDIA( 4096): ijkmp_set_option(user_agent, IJKMEDIAPLAYER)
D/IJKMEDIA( 4096): ijkmp_set_option()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(skip_loop_filter, 48)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setDataSourceAndHeaders
V/IJKMEDIA( 4096): setDataSource: path http://192.168.1.1/2.m3u8
D/IJKMEDIA( 4096): ijkmp_set_data_source(url="http://192.168.1.1/2.m3u8")
D/IJKMEDIA( 4096): ijkmp_set_data_source(url="http://192.168.1.1/2.m3u8")=0
D/IJKMEDIA( 4096): IjkMediaPlayer_setVideoSurface
D/IJKMEDIA( 4096): ijkmp_set_android_surface(surface=0x31900005)
D/IJKMEDIA( 4096): ffpipeline_set_surface()
D/IJKMEDIA( 4096): ijkmp_set_android_surface(surface=0x31900005)=void
D/IJKMEDIA( 4096): IjkMediaPlayer_setOptionLong
D/IJKMEDIA( 4096): ijkmp_set_option_int(mediacodec, 1)
D/IJKMEDIA( 4096): ijkmp_set_option_int()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_prepareAsync
D/IJKMEDIA( 4096): ijkmp_prepare_async()
I/FFMPEG  ( 4096): ===== options =====
I/IJKMEDIA( 4096): SDL_RunThread: [5430] ff_msg_loop
D/IJKMEDIA( 4096): message_loop
D/IJKMEDIA( 4096): FFP_MSG_FLUSH:
I/FFMPEG  ( 4096): player-opts : overlay-format               = 842225234
I/FFMPEG  ( 4096): player-opts : framedrop                    = 12
I/FFMPEG  ( 4096): player-opts : mediacodec                   = 1
I/FFMPEG  ( 4096): format-opts : max_ts_probe                 = 5
I/FFMPEG  ( 4096): format-opts : http-detect-range-support    = 0
I/FFMPEG  ( 4096): format-opts : user_agent                   = IJKMEDIAPLAYER
I/FFMPEG  ( 4096): codec-opts  : skip_loop_filter             = 48
I/FFMPEG  ( 4096): ===================
I/IJKMEDIA( 4096): SDL_RunThread: [5431] ff_vout
D/IJKMEDIA( 4096): ffpipenode_create_video_output_from_android_mediacodec()
D/IJKMEDIA( 4096): ijkmp_prepare_async()=0
I/IJKMEDIA( 4096): SDL_RunThread: [5432] ff_read
D/setDataSource( 4096): -----====setDataSource end============
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] non-existing PPS 0 referenced
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] decode_slice_header error
E/FFMPEG  ( 4096): [h264 @ 0x5b591ed0] no frame!
E/FFMPEG  ( 4096): Option http-detect-range-support not found.
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 4 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 69 10, bytestream 3487
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 5 8, bytestream 6015
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 18 9, bytestream 6384
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 3 0, bytestream 23935
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 3 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 1 1, bytestream 13316
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 3 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 110 6, bytestream 164
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 32 9, bytestream 6666
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 4 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 3 8, bytestream 7617
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 4 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 21 9, bytestream 509
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 3 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 2 0, bytestream 28167
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 6 1, bytestream 22567
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 19 8, bytestream 6794
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 2 9, bytestream 8357
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 3 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 2 8, bytestream 301
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 2 9, bytestream 4576
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 2 0, bytestream 29044
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 5 1, bytestream 18348
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 33 8, bytestream 5705
D/AudioPolicyManagerBase( 1140): STRATEGY_PHONE ====> device 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 3 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 48 9, bytestream 6989
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 112 6, bytestream 6755
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 20 9, bytestream 6022
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 3 0, bytestream 24208
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 4 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 1 1, bytestream 20649
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 3 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 42 8, bytestream 5587
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 109 7, bytestream 6030
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 4 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 13 8, bytestream 5627
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] Reference 8 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b22d7c0] error while decoding MB 21 9, bytestream 3982
I/FFMPEG  ( 4096): [FFPlayer @ 0x5b378950] max_frame_duration: 10.000
I/FFMPEG  ( 4096): Input #0, hls,applehttp, from 'http://192.168.1.1/2.m3u8':
I/FFMPEG  ( 4096):   Duration: 
I/FFMPEG  ( 4096): N/A
I/FFMPEG  ( 4096): , start: 
I/FFMPEG  ( 4096): 54232.481722
I/FFMPEG  ( 4096): , bitrate: 
I/FFMPEG  ( 4096): N/A
I/FFMPEG  ( 4096): 
I/FFMPEG  ( 4096):   Program 0 
I/FFMPEG  ( 4096):     Metadata:
I/FFMPEG  ( 4096):       variant_bitrate : 
I/FFMPEG  ( 4096): 0
I/FFMPEG  ( 4096): 
I/FFMPEG  ( 4096):     Stream #0:0
I/FFMPEG  ( 4096): : Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9]
I/FFMPEG  ( 4096): , 
I/FFMPEG  ( 4096): 60 fps, 
I/FFMPEG  ( 4096): 30 tbr, 
I/FFMPEG  ( 4096): 90k tbn, 
I/FFMPEG  ( 4096): 60 tbc
I/FFMPEG  ( 4096): 
I/FFMPEG  ( 4096):     Stream #0:1
I/FFMPEG  ( 4096): : Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 128 kb/s
I/FFMPEG  ( 4096): 
I/IJKMEDIA( 4096): SDL_Android_AudioTrack: CHANNEL_OUT_STEREO
I/IJKMEDIA( 4096): SDL_Android_AudioTrack: ENCODING_PCM_16BIT
I/IJKMEDIA( 4096): SDL_Android_AudioTrack_new: init volume as 1.000000/(0.000000,1.000000)
I/FFMPEG  ( 4096): [FFPlayer @ 0x5b378950] AudioCodec: avcodec, mp2
I/IJKMEDIA( 4096): SDL_RunThread: [5434] ff_aout_android
I/IJKMEDIA( 4096): SDL_RunThread: [5435] ff_audio_dec
D/AudioPolicyManagerBase( 1140): STRATEGY_PHONE ====> device 2
D/IJKMEDIA( 4096): ffpipenode_create_video_decoder_from_android_mediacodec()
I/IJKMEDIA( 4096): AMediaFormat: video/avc, 1920x1080
D/IJKMEDIA( 4096): SDL_AMediaFormatJava_createVideoFormat
E/IJKMEDIA( 4096): csd-0: naked
D/IJKMEDIA( 4096): ffpipeline_set_surface_need_reconfigure(0)
D/IJKMEDIA( 4096): ffpipeline_select_mediacodec
I/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096): onSelectCodec: mime=video/avc, profile=100, level=40
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.M4V.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/mp4v-es
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.H263.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/3gpp
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.AVC.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/avc
I/OMXClient( 4096): Using client-side OMX mux.
D/AudioPolicyManagerBase( 1140): STRATEGY_PHONE ====> device 2
I/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096): candidate codec: OMX.MS.AVC.Decoder rank=700
I/OMXClient( 4096): Using client-side OMX mux.
I/IjkMediaCodecInfo( 4096):  High Profile Level 42 (8,8192)
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.HEVC.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/hevc
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.MVC.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/mvc
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.MPEG2.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/mpeg2
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.VP8.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/x-vnd.on2.vp8
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.DIVX311.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/divx3
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.DIVX412.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/divx4
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.FLV.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/flv
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.VC1.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/vc1
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.VC1.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/wvc1
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.WMV3.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/wmv3
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.MJPG.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/mjpeg
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.AVS.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/avs
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.RV.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/realvideo
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.mstmp3.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mpeg-L1
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.MP3.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mpeg-L1
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.mstmp3.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mpeg-L2
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.MP3.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mpeg-L2
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.mp3.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mpeg
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.mstmp3.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mpeg
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.MP3.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mpeg
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.amrnb.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/3gpp
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.amrwb.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/amr-wb
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.aac.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mp4a-latm
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.AAC.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/mp4a-latm
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.g711.alaw.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/g711-alaw
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.g711.mlaw.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/g711-mlaw
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.raw.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/raw
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.vorbis.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/vorbis
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.VORBIS.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/vorbis
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.ADPCM.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/adpcm
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.LPCM.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/lpcm
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.RA.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/cook
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.WMA.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/x-ms-wma
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.AC3.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/ac3
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.DTS.Decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/dts
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.mpeg4.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/mp4v-es
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.h263.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/3gpp
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.h264.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/avc
I/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096): candidate codec: OMX.google.h264.decoder rank=200
I/OMXClient( 4096): Using client-side OMX mux.
I/IjkMediaCodecInfo( 4096):  Baseline Profile Level 51 (1,32768)
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.vpx.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: video/x-vnd.on2.vp8
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.mpeg4.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.h263.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.MS.AVC.Encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.amrnb.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.amrwb.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.aac.encoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: AACEncoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):   found codec: OMX.google.raw.decoder
D/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096):     mime: audio/raw
I/tv.danmaku.ijk.media.player.IjkMediaPlayer( 4096): selected codec: OMX.MS.AVC.Decoder rank=700
D/IJKMEDIA( 4096): SDL_AMediaCodecJava_createByCodecName
I/OMXClient( 4096): Using client-side OMX mux.
D/IJKMEDIA( 4096): SDL_AMediaCodecJava_init
D/IJKMEDIA( 4096): SDL_AMediaCodecJava_configure_surface
E/IJKMEDIA( 4096): configure 0x1d2006aa 0x1d30069e
E/BufferQueue( 1137): [SurfaceView] connect: already connected (cur=2, req=3)
E/MediaCodec( 4096): native_window_api_connect returned an error: Invalid argument (-22)
W/System.err( 4096): java.lang.IllegalStateException
W/System.err( 4096):    at android.media.MediaCodec.native_configure(Native Method)
W/System.err( 4096):    at android.media.MediaCodec.configure(MediaCodec.java:259)
W/System.err( 4096):    at dalvik.system.NativeStart.run(Native Method)
E/IJKMEDIA( 4096): reconfigure_codec_l:configure_surface: failed
I/IJKMEDIA( 4096): SDL_AMediaCodecJava_delete
I/FFMPEG  ( 4096): [FFPlayer @ 0x5b378950] VideoCodec: avcodec, h264
I/IJKMEDIA( 4096): SDL_RunThread: [5450] ff_video_dec
W/FFMPEG  ( 4096): [FFPlayer @ 0x5b378950] fps: 60.000000 (too high)
W/FFMPEG  ( 4096): [FFPlayer @ 0x5b378950] fps: 30.000000 (normal)
D/IJKMEDIA( 4096): ijkmp_get_msg: FFP_MSG_PREPARED
D/IJKMEDIA( 4096): FFP_MSG_PREPARED:
I/System.out( 4096): ijkmediaplayer,onPrepared 
D/IJKMEDIA( 4096): IjkMediaPlayer_start
D/IJKMEDIA( 4096): ijkmp_start()
D/IJKMEDIA( 4096): ijkmp_start()=0
D/IJKMEDIA( 4096): IjkMediaPlayer_getVideoCodecInfo
D/IJKMEDIA( 4096): ijkmp_get_video_codec_info
D/IJKMEDIA( 4096): ijkmp_get_video_codec_info()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_getAudioCodecInfo
D/IJKMEDIA( 4096): ijkmp_get_audio_codec_info
D/IJKMEDIA( 4096): ijkmp_get_audio_codec_info()=void
D/IJKMEDIA( 4096): IjkMediaPlayer_getMediaMeta
D/IJKMEDIA( 4096): ijkmp_get_meta_l
D/IJKMEDIA( 4096): ijkmp_get_meta_l()=void
D/IJKMEDIA( 4096): FFP_MSG_VIDEO_SIZE_CHANGED: 1920, 1080
D/IJKMEDIA( 4096): FFP_MSG_SAR_CHANGED: 1, 1
D/IJKMEDIA( 4096): ijkmp_get_msg: FFP_REQ_START
I/System.out( 4096): ijkmediaplayer,[DefaultPlayer|getVideoWidth]width=0
I/System.out( 4096): ijkmediaplayer,onVideoSizeChanged 1920 , 1080
I/System.out( 4096): ijkmediaplayer,onVideoSizeChanged 1920 , 1080
D/mini    ( 4096): updateMini
E/FFMPEG  ( 4096): [h264 @ 0x63ea5960] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x63ea5960] error while decoding MB 3 0, bytestream 23935
E/FFMPEG  ( 4096): [h264 @ 0x5b584420] Reference 3 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b584420] error while decoding MB 1 1, bytestream 13316
E/FFMPEG  ( 4096): [h264 @ 0x5b584420] Reference 3 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b584420] error while decoding MB 2 0, bytestream 28167
E/FFMPEG  ( 4096): [h264 @ 0x5af946a0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5af946a0] error while decoding MB 6 1, bytestream 22567
E/FFMPEG  ( 4096): [h264 @ 0x5af946a0] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5af946a0] error while decoding MB 2 0, bytestream 29044
E/FFMPEG  ( 4096): [h264 @ 0x5b0b3740] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b0b3740] error while decoding MB 5 1, bytestream 18348
E/FFMPEG  ( 4096): [h264 @ 0x5b0b3740] Reference 2 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b0b3740] error while decoding MB 3 0, bytestream 24208
E/FFMPEG  ( 4096): [h264 @ 0x5b4e2050] Reference 4 >= 2
E/FFMPEG  ( 4096): [h264 @ 0x5b4e2050] error while decoding MB 1 1, bytestream 20649
D/IJKMEDIA( 4096): SDL_VoutFFmpeg_CreateOverlay(w=1920, h=1080, fmt=RV32(0x32335652, dp=0x658abcb0)
D/IJKMEDIA( 4096): FFP_MSG_VIDEO_SIZE_CHANGED: 1920, 1080
I/System.out( 4096): ijkmediaplayer,onVideoSizeChanged 1920 , 1080
E/IJKMEDIA( 4096): unexpected native window buffer (0x6666c660)(w:720, h:480, fmt:''0x2), expecting (w:1920, h:1080, fmt:'RV32'0x32335652)
I/System.out( 4096): ijkmediaplayer,onBufferingUpdate 0
D/IJKMEDIA( 4096): FFP_MSG_VIDEO_SIZE_CHANGED: 1920, 1080
D/IJKMEDIA( 4096): SDL_VoutFFmpeg_CreateOverlay(w=1920, h=1080, fmt=RV32(0x32335652, dp=0x658abcb0)
I/System.out( 4096): ijkmediaplayer,onVideoSizeChanged 1920 , 1080
Android4MediaPlayer commented 9 years ago

E/MediaCodec( 4096): native_window_api_connect returned an error: Invalid argument (-22) W/System.err( 4096): java.lang.IllegalStateException W/System.err( 4096): at android.media.MediaCodec.native_configure(Native Method) W/System.err( 4096): at android.media.MediaCodec.configure(MediaCodec.java:259) W/System.err( 4096): at dalvik.system.NativeStart.run(Native Method) E/IJKMEDIA( 4096): reconfigure_codec_l:configure_surface: failed 硬解config失败了

Android4MediaPlayer commented 9 years ago

请问下 你这是什么设备 型号及版本说下

bbcallen commented 9 years ago

E/BufferQueue( 1137): [SurfaceView] connect: already connected (cur=2, req=3) E/MediaCodec( 4096): native_window_api_connect returned an error: Invalid argument (-22) W/System.err( 4096): java.lang.IllegalStateException W/System.err( 4096): at android.media.MediaCodec.native_configure(Native Method) W/System.err( 4096): at android.media.MediaCodec.configure(MediaCodec.java:259) W/System.err( 4096): at dalvik.system.NativeStart.run(Native Method)

You didn't release surface from previous player.

qazmoon commented 9 years ago

只是换个播放文件,在reset后换个url就出现这种情况了

Android4MediaPlayer commented 9 years ago

@qazmoon 机型

qazmoon commented 9 years ago

@Android4MediaPlayer letv S40air

qazmoon commented 9 years ago

@bbcallen 如果调用mp.setDisplay(null),mp.release() 那么每次换播一个节目都要重新new一个mp了?不能reset后重新set一个新的URL么?

bbcallen commented 9 years ago

mp.reset() is OK in theory, but I don't test it much.

qazmoon commented 9 years ago

在设置mediacodec enable的情况下,从硬解播放H264换到软解mpeg2时就是avcodec了, 但是从avcodec播放mpeg2换到播放H264是就不是mediacodec而是avcodec了。 操作如下:

mPlayer.reset();
mPlayer.setDataSource(videoUrl);
mPlayer.setDisplay(mHolder);
mPlayer.prepareAsync();

是不是应该改成下面这个?

mPlayer.reset();
mPlayer.setDataSource(videoUrl);
mPlayer.setDisplay(null);
mPlayer.setDisplay(mHolder);
mPlayer.prepareAsync();
qazmoon commented 9 years ago

setDisplay(null)放在reset之前或之后都不行。是不是bug?

chrisjenx commented 9 years ago

Not sure I understand the translation, but the NativeWindow is not released by the MediaPlayer when calling release(true); stopPlayback();

09-08 14:14:28.864    7291-7536/com.owlr.tv.debug E/BufferQueueProducer﹕ [unnamed-7291-0] connect(P): already connected (cur=2 req=2)
09-08 14:14:28.864    7291-7536/com.owlr.tv.debug E/IJKMEDIA﹕ SDL_Android_NativeWindow_display_l: ANativeWindow_lock: failed -22

This happens where you would re-use the Texture/SurfaceView for playing.

Calling mMediaPlayer.setDisplay(null); does not help as it does not seem to release the lock on the View.

qazmoon commented 8 years ago

貌似stackoverflow提到同样一个问题和解决方法

bbcallen commented 8 years ago

You must set every option after you reset previous player. You could find what you set in log.

qazmoon commented 8 years ago

是的,每次reset前后的player的option都是相同的

bbcallen commented 8 years ago

Better post your full code

qazmoon commented 8 years ago

my ijkwrapper :

package com.example.mediaplayer.player;

import java.io.IOException;

import tv.danmaku.ijk.media.player.IjkMediaPlayer;
import tv.danmaku.ijk.media.player.MediaInfo;
import android.content.Context;
import android.net.Uri;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class JkMediaPlayer implements IMyPlayer {

    private volatile int mState = STATE_UNDEF;
    private IjkMediaPlayer mMediaPlayer = null;
    private IjkMediaPlayer.OnBufferingUpdateListener mOnBufferingUpdateListener = null;
    private IjkMediaPlayer.OnCompletionListener mOnCompletionListener = null;
    private IjkMediaPlayer.OnErrorListener mOnFlagErrorListener = null;
    private IjkMediaPlayer.OnInfoListener mOnInfoListener = null;
    private IjkMediaPlayer.OnPreparedListener mOnPreparedListener = null;
    private IjkMediaPlayer.OnSeekCompleteListener mSeekCompleteListener = null;
    private IjkMediaPlayer.OnVideoSizeChangedListener mVideoSizeChangedListener = null;

    public JkMediaPlayer() {
        mDuration = -1;
        mMediaPlayer = new IjkMediaPlayer();
        IjkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);
        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32);
        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 12);
        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);//use hard decoder first

        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "max_ts_probe", 5);
        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0);

        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48);      

        mState = STATE_IDLE;
    }

    @Override
    public int getCurrentPosition() {
        if (isInPlaybackState()) {
            long position = mMediaPlayer.getCurrentPosition();
            return (int) position;
        }else {
            System.out.println("ijkmediaplayer,error!call getCurrentPosition() in state " + mState);
        }
        return 0;
    }

    private long mDuration;
    @Override
    public int getDuration() {
        if (isInPlaybackState()) {
            if (mDuration > 0)
                return (int) mDuration;
            mDuration = mMediaPlayer.getDuration();
            return (int) mDuration;
        }
        mDuration = -1;
        return (int) mDuration;
    }

    @Override
    public int getVideoHeight() {
        int height = 0;
        if (mState != STATE_ERROR) {       
          height = mMediaPlayer.getVideoHeight();
        } 
        return height;
    }

    @Override
    public int getVideoWidth() {
        int width = 0;
        if (mState != STATE_ERROR) {
            width = mMediaPlayer.getVideoWidth();
            System.out.println("ijkmediaplayer,[DefaultPlayer|getVideoWidth]width="+width);
        }
        return width;
    }

    @Override
    public boolean isPlaying() {
        return isInPlaybackState() && mMediaPlayer.isPlaying();
    }

    @Override
    public void prepare() {
        if (mState == STATE_INITIALIZED || mState == STATE_STOPED) {

            System.out.println("ijkmediaplayer,call prepare() in state " + mState);
            mState = STATE_PREPARED;
        } else {
            System.out.println("ijkmediaplayer,error!call prepare() in state " + mState);
        }
    }

    @Override
    public void prepareAsync() {
        if (isInPlaybackState()) {
            mMediaPlayer.prepareAsync();
        } else {
            System.out.println("ijkmediaplayer,error!call prepareAsync() in state " + mState);
        }
    }

    @Override
    public void release() {
        if (mMediaPlayer != null) {
            mMediaPlayer.reset();
            mMediaPlayer.release();
            mMediaPlayer = null;
            mState = STATE_IDLE;   
        }
    }

    @Override
    public void reset() {
        if (mMediaPlayer == null) {
            mMediaPlayer = new IjkMediaPlayer();
        } 
        mMediaPlayer.reset();
        IjkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);
        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32);
        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 12);
        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);//use hard decoder first

        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "max_ts_probe", 5);
        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0);

        mMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48);   

        mState = STATE_IDLE;
    }

    @Override
    public void seekTo(int msec) {
        if (isInPlaybackState()) {
            mMediaPlayer.seekTo(msec);
        } else {
            System.out.println("ijkmediaplayer,error!call seekTo() in state " + mState);
        }
    }

    protected boolean isInPlaybackState() {
        return (mMediaPlayer != null && mState != STATE_ERROR
                && mState != STATE_IDLE && mState != STATE_PREPARING && mState!=STATE_UNDEF);
    }

    @Override
    public void start() {
            if (isInPlaybackState()) {
                mMediaPlayer.start();
                mState = STATE_STARTED;
            } else {
            System.out.println("ijkmediaplayer,error!call start() in state " + mState);
        }
    }

    @Override
    public void pause() {
        if (isInPlaybackState()) {
            if (mMediaPlayer.isPlaying()) {
                mMediaPlayer.pause();
                mState = STATE_PAUSED;
            }
        } else {
            System.out.println("ijkmediaplayer,error!call pause() in state " + mState);
        }
    }

    @Override
    public void stop() {
        if (mMediaPlayer != null) {
            mMediaPlayer.stop();
            System.out.println("ijkmediaplayer,mMediaPlayer.stop()");
            mState = STATE_STOPED;
        } else {
            System.out.println("ijkmediaplayer,error!call stop() in state " + mState);
        }
    }

    @Override
    public int getCurrentState() {
        return mState;
    }

    @Override
    public void setDisplay(SurfaceHolder holder) {      
            mMediaPlayer.setDisplay(holder);    
    }

    @Override
    public void setAudioStreamType(int streamtype) {
        mMediaPlayer.setAudioStreamType(streamtype);
    }

    @Override
    public void setDataSource(Context context, Uri uri) {
        // TODO Auto-generated method stub
        if (mState == STATE_IDLE) {
            try {
                mMediaPlayer.setDataSource(uri.toString());
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            mState = STATE_INITIALIZED;
        } else {
            System.out.println("error!call setDataSource() in state " + mState);
        }
    }

    @Override
    public void setDataSource(String path) {
        if (mState == STATE_IDLE) {
            try {
                mMediaPlayer.setDataSource(path);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            mState = STATE_INITIALIZED;
        } else {
            System.out.println("ijkmediaplayer,error!call setDataSource() in state " + mState);
        }
    }

    @Override
    public void setOnBufferingUpdateListener(IMyPlayer.OnBufferingUpdateListener l) {
        final IMyPlayer.OnBufferingUpdateListener tempListener = l;

        mOnBufferingUpdateListener = new IjkMediaPlayer.OnBufferingUpdateListener() {
            @Override
            public void onBufferingUpdate(
                    tv.danmaku.ijk.media.player.IMediaPlayer arg0, int arg1) {
                // TODO Auto-generated method stub
                tempListener.onBufferingUpdate(JkMediaPlayer.this, arg1);
                System.out.println("ijkmediaplayer,onBufferingUpdate " + arg1);
            }
        };
        mMediaPlayer.setOnBufferingUpdateListener(mOnBufferingUpdateListener);
    }

    @Override
    public void setOnCompletionListener(IMyPlayer.OnCompletionListener l) {
        final IMyPlayer.OnCompletionListener tempListener = l;

        mOnCompletionListener = new IjkMediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(
                    tv.danmaku.ijk.media.player.IMediaPlayer arg0) {
                // TODO Auto-generated method stub
                tempListener.onCompletion(JkMediaPlayer.this);
                System.out.println("ijkmediaplayer,onCompletion ");
                mState = STATE_PLAYBACK_COMPLETE;   
            }
        };
        mMediaPlayer.setOnCompletionListener(mOnCompletionListener);
    }

    @Override
    public void setOnInfoListener(IMyPlayer.OnInfoListener l) {     
        final IMyPlayer.OnInfoListener tempListener = l;

        mOnInfoListener = new IjkMediaPlayer.OnInfoListener() {         
            @Override
            public boolean onInfo(
                    tv.danmaku.ijk.media.player.IMediaPlayer arg0, int arg1,
                    int arg2) {
                // TODO Auto-generated method stub
                System.out.println("ijkmediaplayer,onInfo " + arg1);
                return tempListener.onInfo(JkMediaPlayer.this, arg1, arg2);
            }
        };
        mMediaPlayer.setOnInfoListener(mOnInfoListener);
    }

    @Override
    public void setOnPreparedListener(IMyPlayer.OnPreparedListener l) {
        final IMyPlayer.OnPreparedListener tempListener = l;

        mOnPreparedListener = new IjkMediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(tv.danmaku.ijk.media.player.IMediaPlayer arg0) {
                // TODO Auto-generated method stub
                mState = STATE_PREPARED;
                System.out.println("ijkmediaplayer,onPrepared ");
                tempListener.onPrepared(JkMediaPlayer.this);        
            }
        };
        mMediaPlayer.setOnPreparedListener(mOnPreparedListener);
    }

    @Override
    public void setOnSeekCompleteListener(IMyPlayer.OnSeekCompleteListener l) {
        final IMyPlayer.OnSeekCompleteListener tempListener = l;

        mSeekCompleteListener = new IjkMediaPlayer.OnSeekCompleteListener() {
            @Override
            public void onSeekComplete(
                    tv.danmaku.ijk.media.player.IMediaPlayer arg0) {
                // TODO Auto-generated method stub
                 tempListener.onSeekComplete(JkMediaPlayer.this);
                System.out.println("ijkmediaplayer,onSeekComplete ");
            }
        };
        mMediaPlayer.setOnSeekCompleteListener(mSeekCompleteListener);
    }

    @Override
    public void setOnVideoSizeChangedListener(IMyPlayer.OnVideoSizeChangedListener l) {
        final IMyPlayer.OnVideoSizeChangedListener tempListener = l;

        mVideoSizeChangedListener = new IjkMediaPlayer.OnVideoSizeChangedListener() {
            @Override
            public void onVideoSizeChanged(
                    tv.danmaku.ijk.media.player.IMediaPlayer arg0, int arg1,
                    int arg2, int arg3, int arg4) {
                // TODO Auto-generated method stub
                System.out.println("ijkmediaplayer,onVideoSizeChanged "+arg1+" , " +arg2);
                tempListener.onVideoSizeChanged(JkMediaPlayer.this, arg1, arg2);

            }
        };
        mMediaPlayer.setOnVideoSizeChangedListener(mVideoSizeChangedListener);
    }

    @Override
    public void setScreenOnWhilePlaying(boolean screenOn) {
        try {
            mMediaPlayer.setScreenOnWhilePlaying(screenOn);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void setOnFlagErrorListener(OnFlagErrorListener l) {
        // TODO Auto-generated method stub
        final IMyPlayer.OnFlagErrorListener tempListener = l;

        mOnFlagErrorListener = new IjkMediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(
                    tv.danmaku.ijk.media.player.IMediaPlayer arg0, int arg1,
                    int arg2) {
                // TODO Auto-generated method stub
                mState = STATE_ERROR;
                System.out.println("ijkmediaplayer,onError " + arg1);
                return tempListener.onFlagError(JkMediaPlayer.this, arg1, arg2);
            }
        };
        mMediaPlayer.setOnErrorListener(mOnFlagErrorListener);      
    }

    @Override
    public void setSurfaceAndPos(Surface surface, int x, int y) {
        // TODO Auto-generated method stub

    }

    @Override
    public int getBufferProgress() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void setSurfaceType(SurfaceView surface) {
        // TODO Auto-generated method stub
        surface.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public MediaInfo getMediaInfo(){
         return mMediaPlayer.getMediaInfo();
    }

}

然后用之播放代码:

    @Override
    public void onClick(View arg0) {
        switch (arg0.getId()) {
        case R.id.play1:            
            videoUrl = http://192.168.1.102/mpeg2.ts;
            System.out.println("url:"+videoUrl);

            try {
                mMediaPlayer.reset();
                mMediaPlayer.setDataSource(videoUrl);
                mMediaPlayer.setDisplay(mHolder);
                mMediaPlayer.prepareAsync();

            }catch (Exception e) {
                e.printStackTrace();
                System.out.println("Exception:"+ e);
            }
            break;

        case R.id.play2:            
            videoUrl = http://192.168.1.102/h264.mp4;
            System.out.println("url:"+videoUrl);

            try {
                mMediaPlayer.reset();
                mMediaPlayer.setDataSource(videoUrl);
                mMediaPlayer.setDisplay(mHolder);
                mMediaPlayer.prepareAsync();
            }catch (Exception e) {
                e.printStackTrace();
                System.out.println("Exception:"+ e);
            }
            break;

        case R.id.info:

            MediaInfo mediainfo=mMediaPlayer.getMediaInfo();
            //String  videoInfo =mediainfo.mMediaPlayerName + " - " + mediainfo.mVideoDecoderImpl +" - " + mediainfo.mVideoDecoder;
            String  videoInfo;
            videoInfo = mediainfo.mMediaPlayerName;
            videoInfo = "-2- " + videoInfo +  " : " + mediainfo.mVideoDecoderImpl +" - " + mediainfo.mVideoDecoder;
            videoInfo = videoInfo +  " : " + mediainfo.mAudioDecoderImpl +" - " + mediainfo.mAudioDecoder;
            mInfoText.setText(videoInfo);
            System.out.println("decoderInfo: "+ videoInfo);

            break;

        default:
            break;
        }
    }
bbcallen commented 8 years ago

Does it work when you use same code with "new AndroidMediaPlayer();"

qazmoon commented 8 years ago

用android mediaplayer正常,但是不能播放出MPEG2视频,因为不支持mpeg2.

qazmoon commented 8 years ago

此问题暂时解决方法是先在reset之前调用surface的setVisibility

mSurfaceView.setVisibility(View.GONE);
mSurfaceView.setVisibility(View.VISIBLE);
mMediaPlayer.reset();
mMediaPlayer.setDataSource(videoUrl);
mMediaPlayer.setDisplay(mHolder);
mMediaPlayer.prepareAsync();

但是每次换datasource时会黑一下屏

NikmanSergey commented 8 years ago

Usually, it happens when previous stream was played without MediaCodec support or some error occured. Like this (broken link):

D/IJKMEDIA﹕ ffpipenode_create_video_output_from_android_mediacodec()
D/IJKMEDIA﹕ ijkmp_prepare_async()=0
I/IJKMEDIA﹕ SDL_RunThread: [27832] ff_read
W/IJKMEDIA﹕ HTTP error 404 Not Found
E/IJKMEDIA﹕ http://iptvsite.tv/iptv/100/index.m3u8: Server returned 404 Not Found
D/IJKMEDIA﹕ FFP_MSG_ERROR: 0
E/tv.danmaku.ijk.media.player.IjkMediaPlayer﹕ Error (-10000,0)
D/PlayerIjk﹕ Player releasing
D/IJKMEDIA﹕ IjkMediaPlayer_reset
D/IJKMEDIA﹕ IjkMediaPlayer_release

After this, somethimes, it can't utilize MediaCodec with working stream with such log:

I/tv.danmaku.ijk.media.player.IjkMediaPlayer﹕ selected codec: OMX.amlogic.avc.decoder.awesome rank=800
D/IJKMEDIA﹕ SDL_AMediaCodecJava_createByCodecName
W/ALooperRoster﹕ ALooper::handler_id ALooperRoster::registerHandler 5
W/ALooperRoster﹕ ALooper::handler_id ALooperRoster::registerHandler 6
I/OMXClient﹕ Using client-side OMX mux.
D/IJKMEDIA﹕ SDL_AMediaCodecJava_init
D/IJKMEDIA﹕ SDL_AMediaCodecJava_configure_surface
E/IJKMEDIA﹕ configure 0x206002b2 0x2070037e
E/MediaCodec﹕ native_window_api_connect returned an error: Invalid argument (-22)
W/System.err﹕ java.lang.IllegalStateException
W/System.err﹕ at android.media.MediaCodec.native_configure(Native Method)
W/System.err﹕ at android.media.MediaCodec.configure(MediaCodec.java:262)
W/System.err﹕ at dalvik.system.NativeStart.run(Native Method)
E/IJKMEDIA﹕ reconfigure_codec_l:configure_surface: failed
I/IJKMEDIA﹕ SDL_AMediaCodecJava_delete
I/IJKMEDIA﹕ VideoCodec: avcodec, h264
W/IJKMEDIA﹕ fps: 25.000000 (normal)
W/IJKMEDIA﹕ fps: 25.000000 (normal)
D/IJKMEDIA﹕ FFP_MSG_VIDEO_SIZE_CHANGED: 1920, 1080
D/IJKMEDIA﹕ FFP_MSG_SAR_CHANGED: 1, 1
D/IJKMEDIA﹕ ijkmp_get_msg: FFP_MSG_PREPARED
D/IJKMEDIA﹕ FFP_MSG_PREPARED:
I/IJKMEDIA﹕ SDL_RunThread: [27883] ff_video_dec
D/IJKMEDIA﹕ FFP_MSG_VIDEO_ROTATION_CHANGED: 0
I/PlayerIjk﹕ Detected video size 1920 x 1080
I/PlayerIjk﹕ Detected video size 1920 x 1080
D/IJKMEDIA﹕ IjkMediaPlayer_start
D/IJKMEDIA﹕ ijkmp_start()
D/IJKMEDIA﹕ ijkmp_start()=0
D/IJKMEDIA﹕ ijkmp_get_msg: FFP_REQ_START
D/IJKMEDIA﹕ ijkmp_get_msg: FFP_REQ_START

But after waiting a minute it can play the same stream with MediaCodec OK.

bbcallen commented 8 years ago

Feel free to reopen if any more question.