2025-05-15 09:45:42 +02:00
2025-04-22 15:37:22 +02:00
2025-01-22 23:18:23 +01:00
2025-04-22 15:37:22 +02:00
2025-06-30 19:32:12 +02:00
2025-01-22 23:18:23 +01:00
2025-01-22 23:18:23 +01:00
2025-06-30 19:32:12 +02:00
2025-01-22 23:18:23 +01:00
2025-01-22 23:18:23 +01:00
2025-06-30 19:32:12 +02:00

react-native-video

This is v7 version of the react-native-video library. It's experimental and not recommended for production use.

It's working both on New and Old Architecture.

Requirements

Installation

You have to install react-native-nitro-modules (>=0.13.0) in your project.

npm install react-native-nitro-modules

Then install the package

Important

This package is not published on npm yet. You have to install it from the local path.

npm install react-native-video
For react-native < 0.80 `react-native` < 0.80 have bug that prevents to properly handle errors by nitro modules on Android. We highly recommend to apply bellow patch for `react-native-nitro-modules` to fix this issue. You can apply it using `patch-package`.

Without this patch you won't be able "recognize" errors, all will be unknown errors.

diff --git a/node_modules/react-native-nitro-modules/cpp/core/HybridFunction.hpp b/node_modules/react-native-nitro-modules/cpp/core/HybridFunction.hpp
index aefd987..c2e06fb 100644
--- a/node_modules/react-native-nitro-modules/cpp/core/HybridFunction.hpp
+++ b/node_modules/react-native-nitro-modules/cpp/core/HybridFunction.hpp
@@ -23,6 +23,10 @@ struct JSIConverter;
 #include <string>
 #include <type_traits>
 
+#ifdef ANDROID
+#include <fbjni/fbjni.h>
+#endif
+
 namespace margelo::nitro {
 
 using namespace facebook;
@@ -118,6 +122,10 @@ public:
         std::string funcName = getHybridFuncFullName<THybrid>(kind, name, hybridInstance.get());
         std::string message = exception.what();
         throw jsi::JSError(runtime, funcName + ": " + message);
+      } catch (const jni::JniException& exception) {
+        std::string funcName = getHybridFuncFullName<THybrid>(kind, name, hybridInstance.get());
+        std::string message = exception.what();
+        throw jsi::JSError(runtime, funcName + ": " + message);
 #pragma clang diagnostic pop
 #endif
       } catch (...) {

Usage

import * as React from 'react';
import { VideoView, useVideoPlayer } from "react-native-video";

const VideoPlayer = () => {

  const player = useVideoPlayer('https://www.w3schools.com/html/mov_bbb.mp4');

  // Methods
  player.play();
  player.pause();

  // Properties
  player.currentTime = 10;
  player.volume = 0.5;

  // Usage of VideoView
  return (
    <VideoView
      player={player}
      style={{ width: 300, height: 300 }}
    />
  );
};

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

Custom

This project is provided solely for demonstration and contribution purposes. Forking is permitted exclusively for submitting changes to the main repository. The code and its modifications may only be used within this repository or an authorized fork. Commercial use of the code is prohibited unless you have permission from TheWidlarzGroup


Made with create-react-native-library

Description
A component for react-native
Readme MIT 38 MiB
Languages
Java 40.2%
Swift 35.4%
TypeScript 11.8%
C++ 4.8%
Objective-C 3.5%
Other 4.3%