Как конвертировать mpeg2 в потоковый или фрагментированный mp4?

Я пытаюсь преобразовать файлы mpg (mpeg2), записанные в мифтв, в потоковые файлы mp4. Конвертация в mp4 проста, однако весь файл должен быть конвертирован в первую очередь, прежде чем его можно будет использовать. Даже используя инструменты преобразования, которые помещают «mov atom» в начало файла для быстрой потоковой передачи, требуют, чтобы весь mp4 был закодирован до того, как это произойдет.

Я прочитал в avconv docs, что «muxer mov / mp4 / ismv поддерживает фрагментацию». который может поместить «поддельный» атом mov в начало файла, а затем поместить новый элемент в каждый ключевой кадр по всему файлу, чтобы видео могло быть передано в потоковом режиме во время его перекодирования или если преобразование было прервано.

Я полагаю, что следовал инструкциям avconv ( http://libav.org/avconv.html#MOV_002fMP4_002fISMV ) о том, как преобразовать файл, но продолжаю получать ошибки, которые указывают, что кодировщик не выполняет преобразование. понять параметры. Ниже моя команда, и вывод ошибки она генерирует. Я исчерпал Google и сам искал ответы и оказался пустым, поэтому любая помощь будет принята с благодарностью.

Система работает под управлением Ubuntu 12.04x64 с версией avconv 0.8.1-4: 0.8.1-0ubuntu1.

Команда:

avconv -i 1081_20111227200000.mpg -f mp4 -movflags frag_keyframe+empty_moov -c:v libx264 -c:a copy output.mp4

Ошибка:

[mp4 muxer @ 0x36772e0] [Eval @ 0x7fffeddb69b0] Undefined constant or missing '(' in 'frag_keyframe'
[mp4 muxer @ 0x36772e0] Unable to parse option value "frag_keyframe+empty_moov"
[mp4 muxer @ 0x36772e0] Error setting option movflags to value frag_keyframe+empty_moov.
Output #0, mp4, to 'output.mp4':
    Stream #0.0: Video: libx264, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=-1--1, 90k tbn, 29.97 tbc
    Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, 384 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video -> libx264)
  Stream #0:1 -> #0:1 (copy)
Could not write header for output file #0 (incorrect codec parameters ?)

Я пробовал разные мультиплексоры (-f параметры, такие как h264 и т. Д.), И у меня были другие ошибки, такие как movflag даже не поддерживался (логическое).

Мне не хватает пакета, зависимости или просто суть? Заранее спасибо.

5
задан 9 May 2012 в 22:02

2 ответа

Существует ошибка зарегистрированы с libav об этой точной проблеме. Уныло, кажется, не обращен. Я думаю, лучше считать avconv хорошим инструментом кодирования, но не хорошим инструментом инкапсуляции.

лучший способ пойти об этом состоит в том, чтобы использовать MP4Box от GPAC. Это - утилита, которая, кажется, прежде всего, касается инкапсуляции мультимедийных потоков в mp4 файлы. Это не делает en/de/transcoding, например. При установке GPAC на Ubuntu можно сказать:

MP4Box -add non-streamable.mp4 new-shiny-streamable.mp4

MP4Box по умолчанию делает mp4 файлы streamable:

С версии 0.2.4, MP4Box всегда хранит файл с 0,5 вторыми чередованиями и метаданными в начале, делая это подходящим для потоковой передачи HTTP. ( источник )

2
ответ дан 9 May 2012 в 22:02

См. здесь : это - руководство ffmpeg, но это применяется одинаково хорошо к avconv.

я не знаю о создании файлов для потоковой передачи, но ошибка могла состоять в том, потому что Вы пропускаете предварительную установку и также возможно качественную установку (хотя я полагаю, что avconv использует-crf 23 в качестве значения по умолчанию, если никакая другая качественная установка не обеспечивается). Попробуйте:

avconv -i 1081_20111227200000.mpg -f mp4 -movflags frag_keyframe+empty_moov -c:v libx264 -preset medium -c:a copy output.mp4

предварительные установки: сверхбыстрый, сверхбыстрый, veryfast, быстрее, быстро, носитель, медленный, медленнее и veryslow. Более быстрые предварительные установки дадут, Вы быстрее кодируете, но большие файлы, в то время как более медленные имеют меньшие файлы, но занимают больше времени для создания. Нет никакого качественного различия между различными предварительными установками. Существует также предварительная установка 'плацебо', но это - шутка x264 разработчиками и должно быть проигнорировано.

, Если , который не работает, Вы могли попытаться использовать:

avconv -i 1081_20111227200000.mpg -f mp4 -movflags frag_keyframe+empty_moov -c:v libx264 -crf 20 -preset medium -c:a copy output.mp4

20 абсолютно произвольно, выберите любой crf устанавливающие работы лучше всего для Вас. Качество изображения Lower=better, но больший размер файла. Согласно тому руководству, необходимо, вероятно, использовать между 18-28.

0
ответ дан 9 May 2012 в 22:02

Другие вопросы по тегам:

Похожие вопросы: