首先你好,
当我在 mp4 文件末尾添加另一个 mp4 文件时,视频看起来完全黑屏,但我可以得到视频声音。
如果我在它的末尾添加一个视频的副本,我看到没有问题,但这不是我想要的场景。
与 FFmpeg 库合并时出现“文本重定位”错误。 (当我更改此库版本时,此问题已解决,但我还有其他问题。因此,mp4parser 是我看到的替代方案。)
允许合并视频的代码如下。从现在开始谢谢你。
private void appendTwoVideos(String firstVideoPath, String secondVideoPath) {
try {
Movie[] inMovies = new Movie[2];
inMovies[0] = MovieCreator.build(firstVideoPath);
inMovies[1] = MovieCreator.build(secondVideoPath);
List<Track> videoTracks = new LinkedList<>();
List<Track> audioTracks = new LinkedList<>();
for (Movie m : inMovies) {
for (Track t : m.getTracks()) {
if (t.getHandler().equals("soun")) {
audioTracks.add(t);
}
if (t.getHandler().equals("vide")) {
videoTracks.add(t);
}
}
}
Movie result = new Movie();
if (audioTracks.size() > 0) {
result.addTrack(new AppendTrack(audioTracks
.toArray(new Track[audioTracks.size()])));
}
if (videoTracks.size() > 0) {
result.addTrack(new AppendTrack(videoTracks
.toArray(new Track[videoTracks.size()])));
}
BasicContainer out = (BasicContainer) new DefaultMp4Builder().build(result);
@SuppressWarnings("resource")
FileChannel fc = new RandomAccessFile(DIRECTORY_PATH + "output.mp4", "rw").getChannel();
out.writeContainer(fc);
fc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
最佳答案
这可能是因为您尝试附加或加入的视频具有不同的帧速率。例如,一个可能是慢动作视频,另一个可能是快进/延时视频。
在附加期间,音频工作正常,但 android 没有提供通过使用 is 库来附加不同帧率视频的功能。所以你会看到一个带有音频的黑屏。
我建议使用 FFmpeg 库。虽然它很慢,但会给你想要的结果。
关于Android Studio - 附加两个视频但显示黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62818290/