Сначала вы должны понять разницу между использованием профилей 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 на некоторых устройствах. Смотрите этот пост (который немного устарел) для некоторых руководящих принципов.
Если у вас есть пользователи с проблемами воспроизведения, вам нужно выяснить, какое видео вызывает проблемы, и получить более подробную информацию о том, какое оборудование и программное обеспечение проигрывателя они используют. Тогда мы могли бы поговорить о поиске неисправностей в этом конкретном случае.