0

We are creating one app with video player, but we are not able to stream mov files.

We are using Exo player for streaming but getting some error. please help on it

Any other mov supporting libraries also fine.

Error :

E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only
E/OMX-VDEC-1080P: Extension: OMX.google.android.index.storeANWBufferInMetadata not implemented
E/OMX-VDEC-1080P: Extension: OMX.google.android.index.storeANWBufferInMetadata not implemented
E/OMX-VDEC-1080P: Extension: OMX.google.android.index.configureVideoTunnelMode not implemented
E/OMX-VDEC-1080P: Extension: OMX.google.android.index.useAndroidNativeBuffer is supported
E/OMX-VDEC-1080P: Extension: OMX.google.android.index.describeHDRStaticInfo not implemented
E/OMX-VDEC-1080P: Does not handle dataspace request
E/OMXNodeInstance: getConfig(2db0c3b:qcom.decoder.hevc, ??(0x7f000062)) ERROR: UnsupportedSetting(0x80001019)
E/OMXNodeInstance: setConfig(2db0c3c:google.aac.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
E/OMXNodeInstance: setConfig(2db0c3c:google.aac.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
E/OMX-VDEC-1080P: OMX_COMPONENT_GENERATE_HARDWARE_ERROR
E/OMX-VDEC-1080P: ERROR: Sending OMX_ErrorHardware to Client
E/ACodec: [OMX.qcom.video.decoder.hevc] ERROR(0x80001009)
E/ACodec: signalError(omxError 0x80001009, internalError -2147483648)
E/MediaCodec: Codec reported err 0x80001009, actionCode 0, while in state 6
E/OMX-VDEC-1080P: Dropping message 11 since client expected to be in error state
E/OMX-VDEC-1080P: Dropping message 11 since client expected to be in error state
E/OMX-VDEC-1080P: Dropping message 11 since client expected to be in error state
E/OMX-VDEC-1080P: Dropping message 11 since client expected to be in error state
E/ExoPlayerImplInternal: Internal runtime error.
    java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
        at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2568)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1033)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:582)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:518)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:301)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:165)
        at android.os.HandlerThread.run(HandlerThread.java:61)
E/ExoPlayerImplInternal: Stop failed.
    java.lang.IllegalStateException
        at android.media.MediaCodec.native_stop(Native Method)
        at android.media.MediaCodec.stop(MediaCodec.java:2005)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:527)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.releaseCodec(MediaCodecVideoRenderer.java:477)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:483)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:365)
        at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:153)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:972)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:768)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:731)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:353)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:165)
        at android.os.HandlerThread.run(HandlerThread.java:61)
Anonymous Coward
  • 1,096
  • 11
  • 22
OMAK
  • 1,031
  • 9
  • 25
  • 2
    Please add error log messages, version of Exoplayer used, test environment (device/emulator), details of what you tried. Reminder that [asking for libraries is off-topic](https://stackoverflow.com/help/on-topic) – Morrison Chang Jun 16 '22 at 18:03

2 Answers2

1

A MOV file is a QuickTime media container format developed by Apple and compatible with both Macintosh and Windows platforms. MOV files are widely used in Apple products like QuickTime, iPhone, iPad, but is incompatible with Android device.

Andriod natively does not have such functionality. The easiest would be to use a video decoding/encoding library, such as ffmpeg. See this: ffmpeg for a android (using tutorial: "ffmpeg and Android.mk")

The command to just stream it to a new container (mp4) needed by some applications like Adobe Premiere Pro without encoding (fast) is:

ffmpeg -i input.mov -qscale 0 output.mp4

Alternative as mentioned in the comments, which re-encodes with best quaility (-qscale 0):

ffmpeg -i input.mov -q:v 0 output.mp4

or

ffmpeg -i input.mov -qscale 0 output.mp4
Arda Kazancı
  • 8,341
  • 4
  • 28
  • 50
0

.MOV files are not a standard video format supported by Android. Depending on what Android versions you're targeting, you'll need to change your format most likely to .mp4 (H.263).

If you can't change the way you are encoding the video recorded in iOS, then maybe you can do a conversion on your server-side from .mov to .mp4, before sending it to Android. (Assuming you have a server-side)

You can check for the reference here. I hope it will help you.

Mukund Jogi
  • 1,329
  • 5
  • 18