Мультиплексирование h264 в файл mp4 с использованием mp4parser занимает слишком много времени.

Я использую mp4parser для мультиплексирования файла h264 и файла aac в файл mp4. Код ниже.

    String h264Path = "path to my h264 file, generated by Android MediaCodec";

    DataSource videoFile = new FileDataSourceImpl(h264Path);

    H264TrackImpl h264Track = new H264TrackImpl(videoFile, "eng", 5, 1); // 5fps. you can play with timescale and timetick to get non integer fps, 23.967 is 24000/1001

    Movie movie = new Movie();

    movie.addTrack(h264Track);

    Container out = new DefaultMp4Builder().build(movie);
    FileOutputStream fos = new FileOutputStream(new File("path to my generated file.mp4"));
    out.writeContainer(fos.getChannel());

    fos.close();

Но когда я его отлаживаю, на этом шаге уходит около 4 минут:

    DataSource videoFile = new FileDataSourceImpl(h264Path);

И мой образец видеофайла h264 имеет продолжительность около 20 секунд и размер 3 МБ (около 178 КБ в битрейте). Он создан MediaCodec. Это действительно неприемлемо в производственной среде. Есть ли какая-то ошибка в моем коде? Или это реальная эффективность mp4parser? Большое спасибо.


person Frank Bush    schedule 16.10.2014    source источник


Ответы (2)


Попробуйте библиотеку ExoPlayer от Google, хотя я считаю, что извлечение MP4 доступно только на разработчике ветку, см. демонстрационный код здесь.

person Peter Tran    schedule 25.04.2015

Укажите правильный путь к файлу H264, тогда он будет отлаживаться.

person Shubham    schedule 21.04.2015