java - 附加多个视频但结果无法打开
问题描述
我MP4 Parser
用来将多个视频连接成一个视频(MP4)。
当我连接 2 个视频时,输出是它按应有的方式打开和播放,但是当我连接多个视频(3 个或更多)时,结果是它不播放。
这是我的代码:
@NonNull
public static void appendTwoVideos(@NonNull List<String> videos, String outputPath) throws IOException {
List<Movie> inputMovies = new ArrayList<>();
for (String input : videos) {
inputMovies.add(MovieCreator.build(input));
}
List<Track> videoTracks = new LinkedList<>();
List<Track> audioTracks = new LinkedList<>();
for (Movie m : inputMovies) {
for (Track t : m.getTracks()) {
if (PREFIX_AUDIO_HANDLER.equals(t.getHandler())) {
audioTracks.add(t);
}
if (PREFIX_VIDEO_HANDLER.equals(t.getHandler())) {
videoTracks.add(t);
}
}
}
Movie outputMovie = new Movie();
if (audioTracks.size() > 0) {
outputMovie.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
}
if (videoTracks.size() > 0) {
outputMovie.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()])));
}
Container out = new DefaultMp4Builder().build(outputMovie);
FileChannel fc = new RandomAccessFile(outputPath, "rw").getChannel();
out.writeContainer(fc);
fc.close();
}
我究竟做错了什么 ?
解决方案
推荐阅读
- javascript - jQuery/javascript 动态 hasClass 条件
- laravel - 如何在控制器 Laravel 中添加自定义数据
- java - 在调用 API 时保护数据并将其存储在 SQL 中
- listview - OnData 事件在 WinXP 中接收到无效的 Item.Index
- javascript - 尝试从组件向其祖父母触发事件时未触发事件
- wordpress - 如果订阅活动少于 3 个月,则暂时删除取消按钮
- python - 当条件为真时如何使用 CASE 更新列
- java - 除了 Collections API,在 Java 中覆盖 hashCode 有什么用?
- javascript - {ANSWERED} 如何在我的代码所在的 js 文件之外查找带有 getElementById 的元素?
- vb.net - 在不使用面向对象编程的情况下创建有序列表的链表