[*] Поддержка языка котлин
[*] Использование нативных модулей:
fmpegmodule.kt
/>[*]ffmpegpackage.kt
anddroid/app/src/main/java/com/veditor/ffmpegmodule.kt >
Код: Выделить всё
package com.veditor
import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.soloader.SoLoader
class MainApplication : Application(), ReactApplication {
override val reactNativeHost: ReactNativeHost = object : ReactNativeHost(this) {
override fun getUseDeveloperSupport() = BuildConfig.DEBUG
override fun getPackages(): List {
val packages = PackageList(this).packages.toMutableList()
packages.add(FFmpegPackage()) // Register your native module
return packages
}
override fun getJSMainModuleName() = "index"
}
override fun onCreate() {
super.onCreate()
SoLoader.init(this, false)
}
}
Код: Выделить всё
package com.veditor
import com.facebook.react.ReactPackage
import com.facebook.react.bridge.NativeModule
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.uimanager.ViewManager
class FFmpegPackage : ReactPackage {
override fun createNativeModules(reactContext: ReactApplicationContext): List {
return listOf(FFmpegModule(reactContext))
}
override fun createViewManagers(reactContext: ReactApplicationContext): List {
return emptyList()
}
}
Код: Выделить всё
package com.veditor
import android.app.Application
import com.facebook.react.*
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint
import com.facebook.react.defaults.DefaultReactNativeHost
class MainApplication : Application(), ReactApplication {
private val mReactNativeHost: ReactNativeHost = object : DefaultReactNativeHost(this) {
override fun getPackages(): List {
return PackageList(this).packages + FFmpegPackage()
}
override fun getJSMainModuleName(): String {
return "index"
}
override fun isNewArchEnabled(): Boolean {
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
}
override fun isHermesEnabled(): Boolean {
return BuildConfig.IS_HERMES_ENABLED
}
}
override fun getReactNativeHost(): ReactNativeHost = mReactNativeHost
override fun onCreate() {
super.onCreate()
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
DefaultNewArchitectureEntryPoint.load()
}
ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)
}
}
Код: Выделить всё
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
implementation(name: 'ffmpeg-kit-full-6.0-2', ext: 'aar')
}
Приложение создает, устанавливает и открывается, но затем сразу же сбоятся без какой -либо визуальной ошибки.
тестовый экран
Код: Выделить всё
import React, { useState } from 'react';
import {
View,
Text,
StyleSheet,
Button,
ScrollView,
ActivityIndicator,
} from 'react-native';
import { FFmpegKit } from 'ffmpeg-kit-react-native'; // ✅ official API
const FFmpegTestScreen = () => {
const [output, setOutput] = useState('');
const [loading, setLoading] = useState(false);
const runFFmpegCommand = async () => {
setLoading(true);
setOutput('');
try {
const session = await FFmpegKit.execute('-version');
const returnCode = session.getReturnCode();
const logs = await session.getAllLogs();
if (returnCode.isValueSuccess()) {
const logMessages = logs.map((log) => log.getMessage()).join('\n');
setOutput(`✅ Success:\n${logMessages}`);
} else {
setOutput(`❌ FFmpeg command failed.\nReturn Code: ${returnCode.getValue()}`);
}
} catch (error: any) {
setOutput(`❌ Exception:\n${error.message || JSON.stringify(error)}`);
console.error('FFmpeg error:', error);
} finally {
setLoading(false);
}
};
return (
🎥 FFmpegKit Test
{loading && }
{output}
);
};
export default FFmpegTestScreen;
const styles = StyleSheet.create({
container: {
flex: 1,
padding: 20,
paddingTop: 40,
backgroundColor: '#f2f2f2',
},
title: {
fontSize: 18,
fontWeight: 'bold',
marginBottom: 20,
},
outputBox: {
marginTop: 20,
backgroundColor: '#fff',
padding: 15,
borderRadius: 8,
maxHeight: 300,
},
outputText: {
fontSize: 14,
color: '#333',
},
});
- обеспечить, что ffmpegmodule находится в правильном пути: Android/App/src/main/java/com/veditor
- Cleaned Build:. />Rebuilt project: npx react-native run-android
- Verified that ffmpeg-kit-full-6.0-2.aar is in android/app/libs
Не может прочитать свойство 'ffmpegkit' of undefined < /p>
Я не использую Ffmpeg-kit-react-cnitals, потому что мне нужна минимальная логика нативного моста и полный контроль. < /P>
, если кто-либо успешно интегрирован. Из -за нестандартных модулей, не загруженных, я хотел бы любые советы или рабочие примеры.
Подробнее здесь: https://stackoverflow.com/questions/796 ... unch-andro
Мобильная версия