javascript 使用ffmpeg-kit-react-native在React Native中组合合并N个视频

envsm3lx  于 11个月前  发布在  Java
关注(0)|答案(1)|浏览(132)

我试图连接N个视频在一个视频.我已经尝试了许多库,但没有任何成功.我尝试的库是:
react-native-video-processor
react-native-video-merger
react-native-video-manager
ffmpeg-kit-react-native
他们都没有按照我需要的方式工作,并且找不到任何特定的命令来合并视频而不需要音频。
我也尝试了这些命令:

`-i ${videoPaths.join(' -i ')} -filter_complex concat=n=${videoPaths.length}:v=1:a=0 [v] -map [v] -vf "scale=w=720:h=trunc(ow/a/2)*2,setsar=1:1" -c:v libx264 -c:a none -shortest -y ${outputVideoPath}`;

`-i ${videoPaths.join(' -i ')} -filter_complex concat=n=${videoPaths.length}:v=1:a=0 -strict -2 ${outputVideoPath}`;

字符串
但没有一件事是按我需要的方式工作的。

vmdwslir

vmdwslir1#

看起来,您希望合并没有音频的视频。
正如在react-native-video-editor上的this问题上所说,您可以编辑库中的一些代码行,因此它在合并视频时不会处理音频,因此它符合您的需求。
您需要注解(或删除)的文件和行是:
文件node_modules/react-native-video-editor/ios/RNVideoEditor.m,第42和43行:

AVMutableCompositionTrack *audioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio
preferredTrackID:kCMPersistentTrackID_Invalid];

字符串
文件node_modules/react-native-video-editor/ios/RNVideoEditor.m,第60至63行:

[audioTrack insertTimeRange:timeRange
ofTrack:[[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]
atTime:insertTime
error:nil];


你可以对react-native-video-editor仓库进行分叉,进行这些更改并保存它,这样你就可以从你的仓库而不是官方仓库安装(当然,如果你有GitHub帐户的话)。如果你不这样做,你将需要在每次安装软件包时在你的node_modules上编辑这些文件。
如果你也需要在Android上这样做,我想你需要注解/删除这些行(我无法测试,但当我阅读代码时,这应该可以工作):
文件react-native-video-editor/android/src/main/java/com/reactlibrary/RNVideoEditorModule.java,第53行,第57 - 59行,第78 - 75行:

[...]
List<Track> audioTracks = new LinkedList<Track>();
[...]

[...]
if (t.getHandler().equals("soun")) {
  audioTracks.add(t);
}
[...]

[...]
if (!audioTracks.isEmpty()) {
  try {
    result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
  } catch (IOException e) {
    errorCallback.invoke(e.getMessage());
    e.printStackTrace();
  }
}
[...]

相关问题