Android MP4Parser не может воспроизводить видео
Я пытаюсь добавить простое 3-секундное outro-видео к существующему видео с помощью MP4Parser, но по какой-то причине я не могу воспроизвести видео после слияния. Я получаю печально известную ошибку "Извините, это видео невозможно воспроизвести" при попытке воспроизвести видео из моей галереи. У кого-нибудь есть подобный опыт в этом? Я тестирую на HTC One под управлением 4.4 KitKat
Вот мой метод объединения клипов.mp4 в один, взятый из AppendExample из самого MP4Parser.
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? Было бы здорово, если бы Себастьян мог звонить сюда.
1 ответ
Я использовал https://github.com/hoolrory/AndroidVideoSamples для изменения размера видео, которое использует mp4parser для внутреннего использования. У сэмплов есть способ изменить размер видео, но у него не будет звука. Поэтому я добавил микс, чтобы добавить треки в видео. Но тогда в конце видео появится сообщение "Не удается воспроизвести это видео".
Надеюсь, это поможет в некоторых случаях.