8

Так что у меня есть пользователи, которые говорят, что видео H264 MP4 не воспроизводит звук на Apple iPad, и я изо всех сил пытаюсь заставить видео MP4 нормально воспроизводиться на Android тоже.

Есть две разные командные строки, какую командную строку я должен использовать.

-profile:v baseline -level 3.0

А также :

-vpre baseline

Что я должен использовать, чтобы он работал на всех устройствах?

Я также читал, что это может быть аудио битрейт мой текущий аудио битрейт

-ab 192k

Возможно я должен понизить это до

-ab 160k

Командная строка используется для кодирования аудио MP3 в файлы MP4.

"C:/server/ffmpeg/bin/ffmpeg.exe" -y -i Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/55/ac/fb/54bbf30bb11a0f6b9dc832114c26fd29.mp4 -strict experimental -acodec libmp3lame -ar 44100 -ac 2 -ab 192k -s 480x360 -aspect 16:9 -r 24000/1001 -vcodec libx264 -b:v 1000k -minrate 800k -maxrate 1000k -bufsize 800K -crf 18 -preset veryslow -f mp4 -threads 0 -movflags +faststart Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/55/ac/fb/98382d43d31d4ff91ea44cb2aa1bbc49.mp4 2>&1

1 ответ1

13

Сначала вы должны понять разницу между использованием профилей FFmpeg и опциями прямой командной строки. -vpre использует файл .ffpreset расположенный в /usr/share/ffmpeg/ или там, где был установлен ffmpeg. Это серия пар " опция = значение" , и в вашем случае вам пришлось бы определять его самостоятельно (по крайней мере, я не знаю baseline пресет, поставляемый с ffmpeg).

Я бы рекомендовал не использовать пресеты, если вы не создали его сами и не знаете, для чего нужны параметры командной строки. Я использую ffmpeg уже много лет, и я никогда не использовал пресеты - мне это никогда не приходилось.

Типичная командная строка для генерации видео H.264, совместимого с большинством устройств:

ffmpeg -i <input> \
  -c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
  -c:a aac -ac 2 -b:a 128k \
  -movflags faststart \
  output.mp4

Некоторые заметки:

  • H.264/AAC - лучшая комбинация для широкой поддержки в HTML5. Браузерам, у которых нет декодеров H.264, также потребуется видео VP8/Vorbis. Для некоторых примеров командной строки, смотрите этот ответ. Смотрите также страницу поддержки браузера в Википедии для других кодеков.

  • H.264 также хорошо работает на мобильных устройствах.

  • Опции -profile:v baseline и -level 3.0 необходимы только для старых мобильных устройств, которые не могут обрабатывать ресурсоемкие функции H.264. Обычно вы можете не указывать их или использовать -profile:v main .

  • CRF устанавливает качество (18–28 - разумный диапазон, более низкий - лучшее качество). Конечно, вы также можете использовать фиксированный битрейт с -b:v 1000k или подобным. Выберите битрейт, соответствующий разрешению видео. Некоторые маломощные устройства могут не справиться с излишне высокими битрейтами.

  • Опция -movflags faststart необходима для потоковой передачи, поскольку она перемещает метаданные контейнера в начало файла, а не оставляет его в конце. Это позволит немедленно начать воспроизведение, а не ждать, пока файл загрузится полностью.

Однако все это сводится к поиску наименьшего общего знаменателя для всех целевых устройств, которые могут не всегда существовать. Конечно, вы не захотите использовать какой-либо другой (то есть, хуже) кодек, чем H.264. На самом деле, было бы нецелесообразно предлагать видео с базовой кодировкой клиентам, которые могут декодировать основной или высокий профиль. Вы бы поменяли качество на снижение сложности декодирования.

По моему опыту, устройства Android могут воспроизводить Baseline H.264 с аудио AAC-LC в контейнере MP4. У меня никогда не было проблем с этим. На самом деле, некоторые устройства могут воспроизводить и более высокие профили, хотя это официально не поддерживается. iOS обычно также поддерживает Baseline H.264, но вы также можете использовать профиль Main на некоторых устройствах. Смотрите этот пост (который немного устарел) для некоторых руководящих принципов.

Если у вас есть пользователи с проблемами воспроизведения, вам нужно выяснить, какое видео вызывает проблемы, и получить более подробную информацию о том, какое оборудование и программное обеспечение проигрывателя они используют. Тогда мы могли бы поговорить о поиске неисправностей в этом конкретном случае.

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