我正在尝试使用MP4Parser将简单的3秒outro视频附加到现有视频,但出于某种原因,我无法在合并发生后播放视频。当我试图播放我的画廊中的视频时,我收到臭名昭着的“抱歉,此视频无法播放”错误。有人有这样的经历吗?我正在测试运行4.4 KitKat的HTC One
这是我将.mp4剪辑合并为单个剪辑的方法,取自MP4Parser本身的AppendExample。
private void createFinalOutputVideo() {
CameraHelper helper = new CameraHelper(this);
File outFile = helper.getOutputMediaFile(CameraHelper.MEDIA_TYPE_VIDEO);
try {
Movie[] movies = new Movie[2];
movies[0] = MovieCreator.build(mVideoPath);
movies[1] = MovieCreator.build(mOutroPath);
Log.d("ShareActivity", "Video 1 path " + mVideoPath);
Log.d("ShareActivity", "Video 2 path " + mOutroPath);
List<Track> videoTracks = new LinkedList<Track>();
List<Track> audioTracks = new LinkedList<Track>();
for (Movie m : movies) {
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);
FileChannel fc = new RandomAccessFile(String.format(outFile.getPath()), "rw").getChannel();
out.writeContainer(fc);
fc.close();
Toast.makeText(this, "Merge successful! Output path is " + outFile.getAbsolutePath(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Error merging videos!", Toast.LENGTH_SHORT).show();
}
}
有没有人遇到过MP4Parser这个问题?如果塞巴斯蒂安可以在这里发声,那将会很棒。
答案 0 :(得分:0)
我一直在使用https://github.com/hoolrory/AndroidVideoSamples来调整内部使用mp4parser的视频。样本有一种方法可以调整视频大小,但不会有声音。所以我添加了一个混音来添加视频中的曲目。但是视频会出现错误,因为&#34;无法播放此视频&#34;最后的消息。
希望在某些方面有所帮助。