无法在 Android 中使用 React Native Video DRM Fork 播放 DRM 视频

Posted

技术标签:

【中文标题】无法在 Android 中使用 React Native Video DRM Fork 播放 DRM 视频【英文标题】:Unable to play DRM Video with React Native Video DRM Fork in Android 【发布时间】:2020-08-03 18:08:11 【问题描述】:

我正在尝试使用React Native DRM Fork 播放任何 DRM 流。不幸的是,当我在 android 中使用以下代码 sn-p 时,出现以下错误:-

代码 sn-p:-

<Video
  source=uri: 'https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd'
  drm=
     type: 'widevine',
     licenseServer:
          'https://proxy.uat.widevine.com/proxy?video_id=efd045b1eb61888a&provider=widevine_test',
  
  style=styles.video
/>

Android Logcat 中的错误:-

E/MediaPlayerNative: error (1, -2147483648)
E/MediaPlayer: Error (1,-2147483648)

我也尝试了以下代码,结果相同:-

<Video
  source= uri: 'https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd',
   drm: 
     type: 'widevine',
     licenseServer: 'https://proxy.uat.widevine.com/proxy?video_id=efd045b1eb61888a&provider=widevine_test', 
  
  style=styles.video
/>

任何非 DRM 视频都可以正常播放 :)

【问题讨论】:

【参考方案1】:

调试 DRM 和视频可能会很棘手,因为错误代码并不总是如您所见非常有用。如果访问该视频允许这样做,那么在其他播放器中尝试该视频通常也很有用 - 例如例如,如果观看视频不需要用户登录。

对于上面的manifest和上面的LA URL组合,当这样测试时,其他播放器也产生了错误。一些容易测试的包括:

https://shaka-player-demo.appspot.com/ https://bitmovin.com/demos/drm https://demo.theoplayer.com/test-your-stream-with-statistics

您还可以在开发者控制台中查看错误报告,这些通常会提供更多信息。

对于您的情况,从上面的测试看来,DRM 许可证响应表明存在一些限制 - 例如,这些限制可能与设备的安全级别有关。如果您有其他可以测试的内容,您也可以通过确认它在上述内容和您的代码上都有效来验证这一点。

【讨论】:

【参考方案2】:

这是由于 exoplayer 没有正确链接,在我的情况下,我必须手动链接 exoplayer,然后在 react-native.config.js 中添加以下 json

module.exports = 
  dependencies: 
    'react-native-video': 
      platforms: 
        android: null,
      ,
    ,
  ,
;

【讨论】:

以上是关于无法在 Android 中使用 React Native Video DRM Fork 播放 DRM 视频的主要内容,如果未能解决你的问题,请参考以下文章

React-Native .apk 文件在更高版本的 android 设备中失败

默认使用 React Native 打开 android 模拟器

cmd : react-native run-android 在每次文件更改时

react-native:无法使用发布模式访问Android权限

无法在 Android 中使用 React Native Video DRM Fork 播放 DRM 视频

post 方法在 laravel 8 中无法使用 react native for android