У меня проблемы с преобразованием FLV в MP4, который будет воспроизводиться на iPhone/iPad через Video-JS.

Кажется, что команды ffmpeg не преобразуются должным образом.

Вот одна из оригинальных команд, которые программное обеспечение, cumulusclips, выполняет при преобразовании:

/usr/bin/ffmpeg -i /var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi -s 640x480 -vb 800k -ac 2 -ab 96k -ar 44100     -f flv /var/www/html/cumulus/cc-content/uploads/flv/M2q9rmYjSkElrCJA34Cr.flv

Вывод похож на следующий:

Input #0, avi, from '/var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi':
  Metadata:
    ISFT            : MEncoder 2:1.0~rc2-0ubuntu13
  Duration: 00:09:56.45, start: 0.000000, bitrate: 9586 kb/s
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1920x1080, 24 tbr, 24 tbn, 24 tbc
    Stream #0.1: Audio: mp3, 48000 Hz, 2 channels, s16, 160 kb/s
Output #0, flv, to '/var/www/html/cumulus/cc-content/uploads/flv/M2q9rmYjSkElrCJA34Cr.flv':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: flv, yuv420p, 640x480, q=2-31, 800 kb/s, 1k tbn, 24 tbc
    Stream #0.1: Audio: libmp3lame, 44100 Hz, 2 channels, s16, 96 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1

После этого он запускает следующее для мобильных устройств:

/usr/bin/ffmpeg -i /var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi -s 480x360 -vb 600k -ac 2 -ab 96k -ar 44    100 -f mp4 /var/www/html/cumulus/cc-content/uploads/mobile/M2q9rmYjSkElrCJA34Cr_temp.mp4

Выход:

Input #0, avi, from '/var/www/html/cumulus/cc-content/uploads/temp/M2q9rmYjSkElrCJA34Cr.avi':
  Metadata:
    ISFT            : MEncoder 2:1.0~rc2-0ubuntu13
  Duration: 00:09:56.45, start: 0.000000, bitrate: 9586 kb/s
    Stream #0.0: Video: msmpeg4v2, yuv420p, 1920x1080, 24 tbr, 24 tbn, 24 tbc
    Stream #0.1: Audio: mp3, 48000 Hz, 2 channels, s16, 160 kb/s
Output #0, mp4, to '/var/www/html/cumulus/cc-content/uploads/mobile/M2q9rmYjSkElrCJA34Cr_temp.mp4':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 480x360, q=2-31, 600 kb/s, 24 tbn, 24 tbc
    Stream #0.1: Audio: libfaac, 44100 Hz, 2 channels, s16, 96 kb/s

1 ответ1

1

Я уверен, что используемая вами версия ffmpeg устарела. Пожалуйста загрузите статическую сборку для вашей системы с официальной домашней страницы и используйте путь к новому ffmpeg вместо старого /usr/bin/ffmpeg .

Например, если вы загрузили статическую сборку, вы можете поместить ее в /usr/local/bin/ffmpeg , сделать ее исполняемой (chmod ugo+x /usr/local/bin/ffmpeg) и затем использовать ее.

Затем вы хотите, чтобы команда, подобная этой, конвертировала видео в MP4, готовый к HTML5 и воспроизводимый всеми видами мобильных устройств:

ffmpeg -i input.avi -c:v libx264 -c:a aac -strict experimental -b:a 128k \
-crf 23 -profile:v baseline -movflags faststart output.mp4

Измените CRF в зависимости от того, какое качество вы хотите (18–28 - хороший диапазон, более низкий - лучший), или, например, выберите -b:v 2M для кодирования с фиксированным битрейтом со скоростью 2 Мбит / с.

При первоначальном преобразовании использовалось видео MPEG-4 Part 2 вместо MPEG-4 Part 10, которое должно поддерживаться мобильными устройствами, но не обязательно. Так безопаснее.

Кроме того, в наши дни вам действительно не нужно создавать FLV-видео. Я не знаю ни одного устройства или технологии воспроизведения, которые бы требовали такого (немного старинного) формата.

Возможно, вас это тоже заинтересует: какой набор сценариев ffmpeg мне нужен, чтобы получить HTML5-совместимое "Видео для всех"?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .