mp4parser を使用して n 個のビデオを結合するアプリを開発しています。結合されるビデオは、前面カメラと背面カメラの両方で撮影されます。これらのビデオを単一にマージすると、すべてのビデオが正常にマージされますが、フロントカメラで撮影された代替ビデオは反転してマージされます。私に何ができる。誰か助けてください。
これはビデオをマージするための私のコードです:
try {
String f1,f2,f3;
f1 = Environment.getExternalStorageDirectory() + "/DCIM/testvideo1.mp4";// video took via back camera
f2 = Environment.getExternalStorageDirectory() + "/DCIM/testvideo2.mp4";// video took via front camera
f3 = Environment.getExternalStorageDirectory() + "/DCIM/testvideo3.mp4";// video took via front camera
Movie[] inMovies = new Movie[] {
MovieCreator.build(f1),
MovieCreator.build(f2),
MovieCreator.build(f3)
};
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()])));
}
BasicContainer out = (BasicContainer) new DefaultMp4Builder().build(result);
WritableByteChannel fc = new RandomAccessFile(
String.format(Environment.getExternalStorageDirectory()+ "/DCIM/CombinedVideo.mp4"), "rw").getChannel();
out.writeContainer(fc);
fc.close();
} catch (Exception e) {
Log.d("Rvg", "exeption" + e);
Toast.makeText(getApplicationContext(), "" + e, Toast.LENGTH_LONG)
.show();
}