I have managed to complete this task on node server but it’s too slow I don’t want to upgrade my instance so I decided to do the conversion on the front end, my app is on react native can please somebody help me convert the code and keep the same args and options
Server code
// Execute the ffmpeg command to burn the subtitles into the video
const ffmpeg = spawn("ffmpeg", [
"-i",
"pipe:0",
"-vf",
`subtitles=${subtitlePath}:force_style='Alignment=10,OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,Fontsize=10'`,
"-c:a",
"copy",
"-progress", "pipe:1",
outputPath,
]);
// Pipe the videoResponse array buffer to FFmpeg
ffmpeg.stdin.write(videoResponse.data);
ffmpeg.stdin.end();
// Send the output file as a response once the process is complete
ffmpeg.on("close", () => {
fs.readFile(outputPath, (err, data) => {
if (err) {
console.error(err);
} else {
console.log(outputPath)
}
});
});
My try on react native but failed for several issues including, main ones are:
No such filter: ‘subtitles’ Failed to inject frame into filter
Invalid argument
Error initializing complex filters.
This is what I come up with so far
componentDidMount() {
FFmpegKit.executeAsync(`-i ${inputFilePath} -i ${subtitleFilePath} -filter_complex "[0:v][1:s]overlay=10:main_h-overlay_h-10" -c:a copy ${outputFilePath}`)
.then((session) => {
FFmpegKit.cancel();
const returnCode = session.getReturnCode();
if (ReturnCode.isSuccess(returnCode)) {
console.log('Video with subtitles was created successfully!');
} else {
console.log('Error creating video with subtitles');
}
})
.catch((error) => {
console.log('Error creating video with subtitles', error);
});
}
If you want to see the logs you can find them below
LOG init firebase : videocap-71b4a
LOG Running "videocap" with {"rootTag":11,"initialProps":{}}
LOG Loading ffmpeg-kit-react-native.
LOG Loaded ffmpeg-kit-react-native-ios-https-x86_64-5.1.0.
LOG Error creating video with subtitles [TypeError: undefined is not a function]
LOG ffmpeg version n5.1.2
LOG Copyright (c) 2000-2022 the FFmpeg developers
LOG
LOG built with Apple clang version 14.0.0 (clang-1400.0.29.102)
LOG configuration: --cross-prefix=x86_64-ios-darwin- --sysroot=/Applications/Xcode-v13.4.1.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.0.sdk --prefix=/Users/taner/Projects/ffmpeg-kit/prebuilt/apple-ios-x86_64/ffmpeg --pkg-config=/opt/homebrew/bin/pkg-config --enable-version3 --arch=x86_64 --cpu=x86_64 --target-os=darwin --disable-neon --disable-asm --ar=/Applications/Xcode-v13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar --cc=clang --cxx=clang++ --as='clang -arch x86_64 -target x86_64-apple-ios12.1-simulator -march=x86-64 -msse4.2 -mpopcnt -m64 -DFFMPEG_KIT_X86_64 -Wno-unused-function -Wno-deprecated-declarations -fstrict-aliasing -DIOS -DFFMPEG_KIT_BUILD_DATE=20220929 -isysroot /Applications/Xcode-v13.4.1.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.0.sdk -O2 -mios-simulator-version-min=12.1 -I/Applications/Xcode-v13.4.1.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.0.sdk/usr/include' --ranlib=/Applications/Xcode-v13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib --strip=/Applications/Xcode-v13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip --nm=/Applications/Xcode-v13.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm --extra-ldflags='-mios-simulator-version-min=12.1' --disable-autodetect --enable-cross-compile --enable-pic --enable-inline-asm --enable-optimizations --enable-swscale --enable-shared --disable-static --install-name-dir='@rpath' --enable-pthreads --disable-v4l2-m2m --disable-outdev=v4l2 --disable-outdev=fbdev --disable-indev=v4l2 --disable-indev=fbdev --enable-small --disable-xmm-clobber-test --disable-debug --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-gmp --enable-gnutls --disable-sdl2 --disable-openssl --enable-zlib --enable-audiotoolbox --disable-outdev=audiotoolbox --enable-bzlib --enable-videotoolbox --enable-avfoundation --enable-iconv --disable-coreimage --disable-appkit --disable-opencl --disable-opengl
LOG libavutil 57. 28.100 / 57. 28.100
LOG libavcodec 59. 37.100 / 59. 37.100
LOG libavformat 59. 27.100 / 59. 27.100
LOG libavdevice 59. 7.100 / 59. 7.100
LOG libavfilter 8. 44.100 / 8. 44.100
LOG libswscale 6. 7.100 / 6. 7.100
LOG libswresample 4. 7.100 / 4. 7.100
LOG Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/master/Documents/Code/videocap-mobile/media.mp4':
LOG Metadata:
LOG major_brand :
LOG isom
LOG
LOG minor_version :
LOG 512
LOG
LOG compatible_brands:
LOG isomiso2avc1mp41
LOG
LOG encoder :
LOG Lavf58.76.100
LOG
LOG Duration:
LOG 00:00:11.82
LOG , start:
LOG 0.000000
LOG , bitrate:
LOG 813 kb/s
LOG
LOG Stream #0:0
LOG [0x1]
LOG (und)
LOG : Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt470bg/bt470bg/smpte170m, progressive), 480x608, 682 kb/s
LOG , SAR 32757:32326 DAR 491355:614194
LOG ,
LOG 24.15 fps,
LOG 24 tbr,
LOG 1000k tbn
LOG (default)
LOG
LOG Metadata:
LOG handler_name :
LOG VideoHandler
LOG
LOG vendor_id :
LOG [0][0][0][0]
LOG
LOG Stream #0:1
LOG [0x2]
LOG (und)
LOG : Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 126 kb/s
LOG (default)
LOG
LOG Metadata:
LOG handler_name :
LOG SoundHandler
LOG
LOG vendor_id :
LOG [0][0][0][0]
LOG
LOG /Users/master/Documents/Code/videocap-mobile/transcription.srt: Immediate exit requested
LOG Exiting normally, received signal 2.
Please help