我正在通过Android MediaRecorder创建视频..
这是我附加视频的代码,
音频总是比视频更长。
视频在结束时停留3到5秒,同时音频继续播放。
private void doAppend(String _firstVideox, String _secondVideox,
String _newName) {
try {
FileInputStream fis1 = new FileInputStream(_firstVideox);
FileInputStream fis2 = new FileInputStream(_secondVideox);
Movie[] inMovies = new Movie[] {
MovieCreator.build(fis1.getChannel()),
MovieCreator.build(fis2.getChannel()) };
List<Track> videoTracks = new LinkedList<Track>();
List<Track> audioTracks = new LinkedList<Track>();
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()])));
}
IsoFile out = new DefaultMp4Builder().build(result);
String filename = _newName;
lastAppendOut = filename;
FileOutputStream fos = new FileOutputStream(filename);
FileChannel fco = fos.getChannel();
fco.position(0);
out.getBox(fco);
fco.close();
fos.close();
fis1.close();
fis2.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
请检查一下并帮助我,我该怎么做。
答案 0 :(得分:0)
我认为这不是JavaCpp
的问题
当我们在Android设备中使用MediaRecorder
制作视频时,音频和视频并不完全相同...
音频稍大,即0.1s至0.25s
因此,当我们使用JavaCpp
附加视频时,最后会将音频视频流整合在一起,首先将它们分开添加会产生巨大的差异。
在我的情况下,我附加了30到40个视频,有时视频音频差异达到14秒,这是非常分散... ...
所以我使用的另一种方法是从末尾修剪每个视频(约0.5秒),这使得音频视频流相等
Here你可以找到我所做的。
我希望我能帮助你们。