标签: react-native-video

Exoplayer无限缓冲状态

我正在尝试使用React Native视频包将exoplayer用于我的React Native应用程序.

我有一个带有HLS流和mp4视频的应用程序,这些视频存储在我的服务器(https)上.

浏览视频时,播放器会陷入无限缓冲状态并保持这种状态,直到我重新启动应用程序.这完全是随机的.重现问题的唯一方法是观看视频并多次切换源.

查看Android logcat时没有错误.adb bugreport也不起作用.

05-22 10:51:07.884 22911-22911/eu.domain.app I/EXO PLAYER: isBuffering - true
05-22 10:51:08.180 22911-25217/eu.domain.app I/ACodec:  [] Now uninitialized
05-22 10:51:08.181 22911-25221/eu.domain.app I/ACodec: [] onAllocateComponent
05-22 10:51:08.184 22911-25221/eu.domain.app I/OMXClient: MuxOMX ctor
05-22 10:51:08.210 22911-25221/eu.domain.app I/ACodec: [OMX.Exynos.avc.dec] Now Loaded
05-22 10:51:08.214 22911-25220/eu.domain.app I/MediaCodec: [OMX.Exynos.avc.dec] setting surface generation to 23460870
05-22 10:51:08.217 22911-25221/eu.domain.app I/ACodec: can't find wfdsink-exynos-enable
05-22 10:51:08.226 22911-25221/eu.domain.app I/ACodec: codec does not support config priority (err -1010)
05-22 10:51:08.235 22911-25221/eu.domain.app I/ACodec: [OMX.Exynos.avc.dec] Now Loaded->Idle …
Run Code Online (Sandbox Code Playgroud)

android exoplayer react-native react-native-video

22
推荐指数
1
解决办法
696
查看次数

保持其他应用程序的背景音频活跃,react-native-video IOS

长期倾听者第一次来电。

到目前为止,当我导航到使用react-native-video的屏幕时,我还没有成功地从Spotify之类的应用程序中获取背景音乐,以便在我的react-native应用程序中保持活力。在 Android 上,无需进行任何更改即可运行。我正在使用react-native(非expo),目前正在testflight上进行测试。

如果这是重复的,请告诉我,但我只找到了很多关于如何让你的应用程序在后台播放的文章(我的问题是相反的),而且我可能不只知道 IOS 用于此类控制的术语。值得注意的是,该组件的一个实例确实包含音频,但大多数呈现的视频都没有音频。

我试过了:

  1. 使用react-native-video 文档中的说明更新AppDelgate.m:

AppDelegate.m

    #import <AVFoundation/AVFoundation.h>  // import
    
     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
      ...
      [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];  // allow
      ...
    }

Run Code Online (Sandbox Code Playgroud)
  • 这似乎没有效果
  1. 使用ignoreSilentSwitch="ignore"obey
  • Obey成功允许背景音频继续,但将有音频的视频静音。
  • 查看源代码,ignoreSilentSwitch=obey 的作用与我添加到 AppDelegate.m 文件中的作用相同,并且如果您使用 isPaused 属性,它也会被否定。
  • 尝试了许多其他涉及音频的道具,希望能幸运。
  1. 在 xcode 中的我的应用程序目标上添加了背景模式 =“音频、Airplay 和画中画”功能。

  2. 哭了一会儿,质疑我的人生选择。

我使用react-native-video-controls实现了react-native-video,但据我了解,它是具有附加功能的同一模块。这是实现:

<VideoContainer>
    <VideoPlayer
      source={currentVideo}
      navigator={null}
      ref={videoRef}
      resizeMode={'cover'}
      controlTimeout={1500}
      paused={isPaused}
      repeat={true}
      muted={true}
      tapAnywhereToPause={true}
      disableBack={true}
      disableTimer={true}
      disableVolume={true}
      disableFullscreen={true}
      showOnStart={true}
      hideShutterView={true}
    />
 </VideoContainer>
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助、建议、反馈或反驳!

react-native react-native-ios react-native-video

9
推荐指数
1
解决办法
5509
查看次数

在 Android 中找不到 com.yqritc:android-scalablevideoview:1.0.4 react-native-video

我想react-native-video在我的项目中使用。安装这个包后我每次都会遇到这个错误(仅在android中)。我已经添加了文档中给出的所有附加代码。

我的react-native版本是:0.66.3

版本react-native-video是:5.2.0

有什么办法可以消除这个错误吗?

android react-native react-native-video

9
推荐指数
1
解决办法
8840
查看次数

npx pod-install 返回“此项目不支持 CocoaPods”

上下文:我正在尝试使用react-native-video. iOs 安装说明以npx pod-install.

跑步:

npx pod-install
Run Code Online (Sandbox Code Playgroud)

返回:

npx: installed 1 in 1.113s
Scanning for pods...
CocoaPods is not supported in this project
Run Code Online (Sandbox Code Playgroud)

输出消息对我还没有帮助。所以我去了npm pod-install。看起来它抽象了 CocoaPods 和 gem 复杂性。

有没有比学习 CocoaPods 和 gem 更简单的方法来解决这个问题?


包.json

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "expo": "~37.0.3",
    "react": "~16.9.0",
    "react-dom": "~16.9.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-37.0.1.tar.gz",
    "react-native-video": "^4.4.5",
    "react-native-web": "~0.11.7"
  }, …
Run Code Online (Sandbox Code Playgroud)

cocoapods react-native expo react-native-video pod-install

8
推荐指数
1
解决办法
1万
查看次数

域= AVFoundationErrorDomain,代码= -11828

我正在使用CloudFront的流URL。

范例网址:https//d14nt81hc5bide.cloudfront.net/qyYj1PcUkYg2ALDfzAdhZAmb

在android上,它运行良好,但在iOS中显示:domain = AVFoundationErrorDomain,代码= -11828

从Apple doc读取的错误代码11828为AVErrorFileFormatNotRecognized。无法打开媒体,因为它不是公认的格式。

有人可以建议如何解决此错误吗?

avfoundation ios amazon-cloudfront react-native react-native-video

7
推荐指数
1
解决办法
562
查看次数

react-native-video 需要很长时间才能开始播放

在将我的应用升级到 react-native 0.59 时,我也升级react-native-video到了它的最新版本 4.4.1。当前发生的情况是,当尝试使用此库播放视频时,视频需要一段时间才能播放。视频的大小似乎无关紧要。视频存储在 S3 上,在我的测试环境中,视频由 链接Cloudfront,在我的本地环境中,视频由 S3 位置链接,但两种环境表现出的行为相同。

这仅适用于 Android,iOS 播放功能可在 1 秒内为相同视频准备就绪。

我尝试回滚react-native-video到以前的兼容版本,问题仍然存在。

不同的设备有不同的播放可用性等待时间。

由于使用需要 SDK 28 的 Firebase 版本,我无法使用 SDK 27。

IOException初始化组件以获取 S3 资源时会引发一个问题,但库最终确实获取了视频。

我不知道问题的确切原因,库是否在播放前下载视频,或者请求中是否需要包含标头。

这是尝试播放视频时的调试输出:

I/MediaPlayer: constructor
W/MediaPlayer: setScreenOnWhilePlaying(true) is ineffective without a SurfaceHolder
V/MediaPlayer: resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
    cleanDrmObj: mDrmObj=null mDrmSessionId=null
V/MediaPlayer: resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
    cleanDrmObj: mDrmObj=null mDrmSessionId=null
I/MediaPlayer: setDataSource:<S3-url>/video.mp4
W/MediaPlayer: Couldn't open <S3-url>/video.mp4: java.io.FileNotFoundException: No content provider: <S3-url>/video.mp4
I/MediaPlayer: setDataSource:<S3-url>/video.mp4
V/MediaHTTPService: MediaHTTPService(android.media.MediaHTTPService@cefd526): Cookies: …
Run Code Online (Sandbox Code Playgroud)

android react-native react-native-video

7
推荐指数
1
解决办法
1538
查看次数

react-native-video:无法读取 null 的属性“常量”

我正在尝试在我的 React Native 项目中包含 YouTube 视频。由于我已经尝试过react-native-youtube并且根本不起作用,所以我尝试安装react-native-video

但是,我收到以下错误: 在此输入图像描述

我尝试过:再次删除我的node_modules和npm,然后删除react-native链接和react-native链接react-native-video。几次。

我的package.json:

在此输入图像描述

javascript reactjs react-native react-native-video

7
推荐指数
1
解决办法
8996
查看次数

使用 rn-fetch-blob 部分下载 mp4 文件,react-native-video 抛出无法识别的错误

我正在尝试在我的视频流应用程序中实现本地视频缓存。

我正在使用:

  • react-native-video用于视频播放
  • rn-fetch-blob用于下载文件

我已经设法从一开始就开始下载,用本地 URL 替换原始 URL,然后继续从我的本地文件播放(它按预期工作) - 即使是部分文件(只要我从 0 开始)。

主要问题搜索功能。如果用户想在例如 120 秒开始观看 - 下载仍将从 0B 开始。我在 Fetch API 中实现了Range 标头,看起来像这样:

"Range": "bytes: {oneSecondInBytes * whereYouWantToStartWatchingInSeconds}-{fileSizeInBytes}"
Run Code Online (Sandbox Code Playgroud)

来克服这个问题。现在下载从所需的字节开始,只下载视频文件的所需部分。

下载正常,但视频播放Unrecognized media format出错。还尝试在开头(0-10000B)为标题添加一些字节 - 尝试识别视频文件,但不走运。

所以我想知道是否可以使用 rn-fetch-blob 实现部分视频文件下载,并能够使用 react-native-video(不是从文件开头)播放文件,稍后还可以添加其他部分到文件(直到整个下载完成)。我怎么能说服 react-native-video 我的部分下载确实是正确的 mp4 文件?

更新

我已经搞砸了一段时间的 HTTP GET 标头,实际上已经到了某个地方。不是一个完整的解决方案,但可能会帮助某人:

"Content-Type": "video/mp4",
"Range": `bytes=0-1000, 45111150-`,
"Accept-Ranges": "bytes",
"Content-Length": "89024062"
Run Code Online (Sandbox Code Playgroud)

^^ 这些是我的测试标题。必须向 Range 添加两个值。第一个只是下载文件的第一部分以获取标题并识别文件类型。第二个是从“寻找点”开始。现在可以播放视频并识别文件类型。

javascript caching react-native react-native-fetch-blob react-native-video

6
推荐指数
0
解决办法
1268
查看次数

react-native-video :使用反应导航导航到另一个屏幕时视频停止,但在 iOS 上不会停止

在android上,当我导航到另一个屏幕(使用堆栈导航器或底部选项卡导航器)时,视频(使用react-native-video)会暂停,甚至被卸载,因为当我返回视频时,它会从媒体的开头再次开始(除非使用seek方法,否则无法恢复视频)。但在 iOS 上,当我导航到另一个屏幕(没有视频)时,视频仍在后台播放。

这是我想要的行为(在 iOS 上),因为我想在返回视频屏幕时恢复视频(我在反应导航中处理焦点/模糊事件的暂停/播放)。

无论如何,在 android 上有相同的行为吗?

我使用react-native-video v 5.1.1和react-navigation 4.4.4

我在这里提供了一个可复制的演示代码: repro

在 android 上运行此程序:导航到另一个屏幕时,视频停止

在 iOS 上运行这个:当导航到另一个屏幕时,视频继续播放(这就是我想要的)

我尝试使用所有视频道具,但没有成功。

android ios react-native react-native-video

6
推荐指数
1
解决办法
1164
查看次数

无法使用 Android Exoplayer react-native-video 在 Android 上播放视频 H.264

视频加载错误时的错误代码

{"error": {"errorException": "com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.640034, -1, null, [2160, 3840, 24.000002], [-1, -1]), format_supported=NO_EXCEEDS_CAPABILITIES", "errorString": "ExoPlaybackException type : 1"}}
Run Code Online (Sandbox Code Playgroud)

目前我正在使用这个版本并在真实的 Android 设备上构建

反应本机:0.64

反应本机视频:^5.2.0-alpha1

这是 h.264 视频示例:https://lifebeligum.s3.ap-southeast-1.amazonaws.com/documents/2021-10-04/ef07eb88-1e53-4800-b7cb-64e908a264c3.mp4

有人对此有什么想法吗?

android exoplayer react-native react-native-video

6
推荐指数
1
解决办法
4728
查看次数