С открытым исходным кодом mp4 muxer в Java
Доступен ли какой-либо проект Java с открытым исходным кодом MP4 muxer/writer (источник написан на java, нет нативного кода)?
У меня есть H.264 & AAC raw/ элементарные потоки, хранящиеся в отдельных файлах. Я хочу смешать их и получить видео файл.mp4, содержащий аудио и видео.
Заранее спасибо за ваши ценные предложения.
2 ответа
Решение
Используйте библиотеку isoparser, насколько я знаю, единственный инструмент Java, который может смешивать AAC и H264. В нем также приведен пример именно того случая использования, который вы описываете.
Полное раскрытие: я создатель библиотеки.
AACTrackImpl audio= new AACTrackImpl(new FileInputStream("sample.aac").getChannel());
H264TrackImpl video = new H264TrackImpl(new FileInputStream("sample.h264"));
Movie m = new Movie();
m.addTrack(video);
m.addTrack(audio);
IsoFile out = new DefaultMp4Builder().build(m);
FileOutputStream fos = new FileOutputStream(new File("output.mp4"));
out.getBox(fos.getChannel());
fos.close();
Предыдущий пример из isoparser не может быть скомпилирован с последними источниками. Я использую следующий код для смешивания строки h264(из Android MediaCodec) в контейнер.mp4
H264TrackImpl video;
try {
video = new H264TrackImpl(new FileDataSourceImpl("/home/aod/tmp/rec_1392309584754.h264"), "eng", 9, 1);
Movie m = new Movie();
m.addTrack(video);
BasicContainer out = (BasicContainer) new DefaultMp4Builder().build(m);
FileOutputStream fos = new FileOutputStream(new File("/home/aod/tmp/output.mp4"));
out.writeContainer(fos.getChannel());
fos.flush();
fos.close();
} catch ( IOException e) {
e.printStackTrace();
}