皆さん、私は Android で を使用して 2 つのビデオを追加しようとしていますmp4parser
が、問題は、ビデオ 1 00:00
+ ビデオ 2 のサイズを占有しているにもかかわらず、結果のビデオの長さが長くなることです。両方のビデオは、まったく同じエンコーディングで同じハンドセットの同じバックカムからキャプチャされますそれでencoding
問題ありません。私はすでにmp4parserの公式サイトで参照されているサンプルを見てきましたが、それはほとんど同じコードですが、何か他のものがあるようです。事前に感謝しますここに私のコードがあります
private void appendVideos() throws IOException
{
String f1 = Environment.getExternalStorageDirectory() + "/video1.mp4";
String f2 = Environment.getExternalStorageDirectory()+ "/video2.mp4";
Movie[] inMovies;
inMovies = new Movie[]
{
MovieCreator.build(f1),
MovieCreator.build(f2),
};
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()])));
}
Container out = new DefaultMp4Builder().build(result);
RandomAccessFile ram = new RandomAccessFile(String.format(Environment.getExternalStorageDirectory() + "/output.mp4"), "rw");
FileChannel fc = ram.getChannel();
out.writeContainer(fc);
ram.close();
fc.close();
Toast.makeText(getApplicationContext(), "success", Toast.LENGTH_SHORT).show();
}