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