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