I was able to setup and use expo video in my bare react native project. It is working great for latest versions of IOS and androids. Unfortunately it does not work with Android 5.1 or 5.0
I see no error in the debug console but with using Android Studio's LogCat I see the following native error
06-05 13:46:02.223 5024-5158/com.getsafeuikit E/AudioTrack: AudioFlinger could not create track, status: -12
06-05 13:46:02.227 5024-5158/com.getsafeuikit E/AudioTrack-JNI: Error -12 initializing AudioTrack
06-05 13:46:02.227 5024-5158/com.getsafeuikit E/android.media.AudioTrack: Error code -20 when initializing AudioTrack.
06-05 13:46:02.227 5024-5158/com.getsafeuikit E/ExoPlayerImplInternal: Playback error.
com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.audio.AudioSink$InitializationException: AudioTrack init failed: 0, Config(48000, 12, 48000)
at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:646)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1355)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:663)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:536)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:303)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by: com.google.android.exoplayer2.audio.AudioSink$InitializationException: AudioTrack init failed: 0, Config(48000, 12, 48000)
at com.google.android.exoplayer2.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:1128)
at com.google.android.exoplayer2.audio.DefaultAudioSink.initialize(DefaultAudioSink.java:532)
at com.google.android.exoplayer2.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:593)
at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:640)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1355)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:663)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:536)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:303)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
I am using expo Video like this
<Video
source={{ uri: props.sourceUri }}
ref={videoRef}
shouldPlay={props.autoPlay}
useNativeControls
onPlaybackStatusUpdate={onPlaybackStatusUpdate}
resizeMode={RESIZE_MODES[props.resizeMode || 'contain']}
onFullscreenUpdate={({ fullscreenUpdate }) => {
if (
fullscreenUpdate === Video.FULLSCREEN_UPDATE_PLAYER_WILL_DISMISS &&
props.onCloseFullScreen
) {
props.onCloseFullScreen()
}
}}
/>