С открытым исходным кодом 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();
    }
Другие вопросы по тегам