【问题标题】:react-native-video doesn't load videos with a dynamic urireact-native-video 不加载带有动态 uri 的视频
【发布时间】:2020-07-14 07:08:15
【问题描述】:

我正在开发一个应用程序,其中一个过程是拍摄视频,然后上传。我使用react-native-video 在用户完成录制后显示预览,react-native-camera 用于捕获过程。我还使用react-navigation 在屏幕之间移动。

目前我可以进入预览屏幕并从 Redux 设置视频组件的源 uri。但是,没有球员可以看到。 uri 的格式为“file:///path/video.mp4”,因此显然它应该按预期位于应用程序缓存中。

首先向用户展示一个摄像头,他/她可以在其中捕捉视频。

const recordVideo = async () => {
  if (camera) {
     const data = await camera.current.recordAsync()
     if (data) {
        dispatch(saveVideo(data)) <-- CONTAINS THE URI
        navigation.navigate(CONFIRM)
     }
  }

当调用 stopRecording() 时,promise 显然会解析并且视频的 URI 将被分派给 Redux。然后我们导航到“确认屏幕”,用户可以在其中预览视频并选择是拍摄另一个还是继续拍摄。

我的问题是,我根本无法播放该预览视频。我想我现在已经在我的能力范围内尝试了几乎所有的东西,我真的厌倦了一些看似简单却很难做到的事情。 出于某种奇怪的原因,我让视频播放了几次,所以这不是播放器的错。我所取得的成就最多只是显示一次预览,但当你回去拍摄时另一个,没有视频预览了。此外,“确认”屏幕正常加载照片(以相同的方式拍摄:相机 -> 确认),但是当轮到视频时,它就不起作用了。视频组件的 onError 处理程序也给了我这个:{"error": {"extra": -2147483648, "what": 1}} 这似乎只是胡言乱语。

PS。是的,我已经阅读了这里的所有相关帖子,但没有找到合适的解决方案。

【问题讨论】:

    标签: android react-native react-navigation react-native-camera react-native-video


    【解决方案1】:

    使用 Exoplayer

    请尝试使用更现代的 Exoplayer,而不是在 Android 上使用旧版 Media Player。如果您使用的是 React Native 0.60+,则可以通过执行以下操作在您的 react-native.config.js 中指定它:

    module.exports = {
      dependencies: {
        "react-native-video": {
          platforms: {
            android: {
              sourceDir: "../node_modules/react-native-video/android-exoplayer"
            }
          }
        }
      }
    };
    
    

    我遇到了同样的问题,这个解决方案对我们有用。请注意,我们仅支持 Android 5+,因此不确定这是否适用于旧设备。

    https://github.com/react-native-video/react-native-video/issues/1747#issuecomment-572512595

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      相关资源
      最近更新 更多