google / ExoPlayer

This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
https://developer.android.com/media/media3/exoplayer
Apache License 2.0
21.7k stars 6.02k forks source link

The MP4 video can not play in demo #886

Closed yuquan23459 closed 8 years ago

yuquan23459 commented 8 years ago

hi,I found a video can not play in demo. The video uri is:http://vc.howdo.cc/63781AC8969116FFF122EE3B981241DC.mp4. I play it in Chrome and it ok.The android studio error is: 10-24 09:03:51.736 26146-26561/commonschool.howdo.com.exoplayerpro E/ACodec: [OMX.qcom.video.decoder.avc] set standard component role 'video_decoder.avc'. 10-24 09:03:51.736 26146-26561/commonschool.howdo.com.exoplayerpro E/ACodec: [OMX.qcom.video.decoder.avc] configureCodec returning error -2147483648 10-24 09:03:51.736 26146-26560/commonschool.howdo.com.exoplayerpro E/MediaCodec: Codec reported an error. (omx error 0x80001001, internalError -2147483648) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/dalvikvm: Could not find class 'android.media.MediaCodec$CodecException', referenced from method com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException.getDiagnosticInfoV21 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro W/dalvikvm: VFY: unable to resolve instanceof 150 (Landroid/media/MediaCodec$CodecException;) in Lcom/google/android/exoplayer/MediaCodecTrackRenderer$DecoderInitializationException; 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: Internal track renderer error. 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, MediaFormat(1, video/avc, -1, -1, 2248, 1504, 0, 1.0, -1, -1, null, 31160000, false, -1, -1) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.notifyAndThrowDecoderInitError(MediaCodecTrackRenderer.java:359) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:346) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:709) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:391) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:470) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:451) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at android.os.Handler.dispatchMessage(Handler.java:98) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at android.os.Looper.loop(Looper.java:157) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at android.os.HandlerThread.run(HandlerThread.java:61) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: Caused by: com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, MediaFormat(1, video/avc, -1, -1, 2248, 1504, 0, 1.0, -1, -1, null, 31160000, false, -1, -1) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:346)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:709)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:391)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:470)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:451)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at android.os.Handler.dispatchMessage(Handler.java:98)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at android.os.Looper.loop(Looper.java:157)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at android.os.HandlerThread.run(HandlerThread.java:61)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)  10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: Caused by: java.lang.IllegalStateException 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at android.media.MediaCodec.native_configure(Native Method) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at android.media.MediaCodec.configure(MediaCodec.java:262) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.configureCodec(MediaCodecVideoTrackRenderer.java:385) 10-24 09:03:51.746 26146-26536/commonschool.howdo.com.exoplayerpro E/ExoPlayerImplInternal: at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitC

Hope you help!Thanks!

andrewlewis commented 8 years ago

The stream plays fine with a recent build of the demo app on a Nexus 6. The video appears to be in H.264 High Profile Level 5.0, which is above the minimum H.264 decoder requirements in the Android CDD, so this video will not play on all Android devices. What device are you testing on?

ojw28 commented 8 years ago

It's a very high resolution stream (2248x1504). It's probably just too high of a resolution for the device?

yuquan23459 commented 8 years ago

I play it in Nexus 5 and demo app can't play.But it can be played by mxplayer.So i don't kown the reason.It is possible caused by hardware decoder?ExoPlayer support both soft decoder and hardware decoder?I can only think of these,hope your help!Thanks!

macarthor commented 8 years ago

it seems that exoplayer cannot play video with resolution higher than the playing device. that is, if the video is 1080p, it can be played on 1080p and 2K devices, but not on 720p devices.

ojw28 commented 8 years ago

Devices can often play well beyond their screen resolution. But it is correct to state that each device has a maximum capability. In this case the steam is a very high resolution, so I wouldn't be too surprised if it's beyond the capabilities of a 2 year old device.

ojw28 commented 8 years ago

Note - The demo app plays it fine on the Nexus 5 I have, running LMY48M. Maybe your device is just in a bad state. Try rebooting it.

yuquan23459 commented 8 years ago

I run demo app in nexus5 LRX22C and cancro(xiaomi 4) 4.4.4 also can't play,I will update nexus 5 from 5.0 to 5.1.1 and try again.Then I will say the result.Thanks!

yuquan23459 commented 8 years ago

I run Demo in HTC and can not play,but many other player can play it on this HTC Phone,such as mxplayer,vitamio demo.

hendrysetiadi89 commented 8 years ago

It is frustrating now. MP4 video cannot be played in many devices. Nexus 5 in emulator show error about failed initializing OMX.ffmpeg.h264.decoder Motorola JellyBean show error about illegalstate in exoplayer (even though the OMX.google.h264.decoder MediaCodec has been successfully created).

I tried to switch the video type to webm but no luck. Nexus 5 dan play, motorola can play, but samsung older device cannot playwebm, but mp4 is fine. I don't know what logic behind it.

ojw28 commented 8 years ago