Яку купу сценаріїв ffmpeg мені потрібно, щоб отримати сумісне з HTML5 "Відео для всіх"?


12

Який список команд я повинен робити у ffmpeg / mencoder / some_other_CLI_app, щоб отримати відео у всіх потрібних форматах, щоб використовувати Video for Every ?

тобто чи є тонкість, яка перешкоджає існуванню механічного підручника, який говорить

VIDEO=video.mp4
TYPE=$(ffmpeg --find-information-about-the-video ... )
ffmpeg ... > video.mov
ffmpeg ... > video.flv
ffmpeg ... > video.webm
ffmpeg ... > video.h.264
...

Потім скопіюйте та вставте код "Відео для всіх" на свою сторінку?

Моя мета - створити вбудоване відео в мою особисту веб-сторінку, розміщену мною. Віддається перевагу HTML5 із запасним спалахом, тому, здається, найпростішим способом є відео для всіх. Але ця сторінка залишає найскладнішу частину, що кодує відео у всіх різних форматах, читачеві, щоб це зрозуміти, прочитавши довгу і повну статтю про відеоформати . Звичайно, це не потрібно. Я міг би надати список команд, щоб користувач наосліп перетворив аудіофайл у купу різних форматів. Сподіваємось, гуру ffmpeg міг би зробити те саме для відео.


1
Незначний коментар до ваших прикладів псевдокоду: Для .movвідео HTML5 немає , і h.264розширення також немає . Там є .264 , що сировина Додаток B потоковий для блоків NAL. Кодування відео - це не ракетна наука, але вам потрібно вкласти трохи часу, щоб познайомитися з концепціями.
slhck

Відповіді:


21

Примітка. Ця відповідь була сильно відредагована з моменту її початкового опублікування. Зараз 2017 рік; потокове працює інакше, ніж раніше. Цей посібник передбачає просте прогресивне завантаження одного відеопотоку за однією заданою роздільною здатністю - немає адаптивного потоку.

Вимоги

Спочатку переконайтеся, що завантажуєте останню ffmpegверсію (завантажте статичну збірку; не дзвоніть apt-get install ffmpegабо подібну). В ідеалі складіть його самостійно . Це не займе багато часу.

Щоб генерувати відео, підтримувані більшістю браузерів, завжди перевіряйте останню таблицю сумісності . Не існує єдиного кодека / формату, який працює у кожному браузері, але якщо ви генеруєте H.264 у MP4 та VP9 у WebM, з відповідним аудіокодеком, у вас буде підтримка Chrome, Firefox, Safari та деяких версій IE.

WebM (VP9 / Vorbis)

Дотримуйтесь рекомендацій у посібнику FFmpeg VP9 та використовуйте підхід кодування з двома проходами з обмеженнями швидкості:

ffmpeg -y -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 1 -f webm /dev/null && \
ffmpeg -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 2 output.webm

Цільовий бітрейт залежить від вашої роздільної здатності, частоти кадрів, типу вмісту та якості, яку ви хочете. 2,5 Мбіт / с повинен бути хорошим компромісом для HD-відео при 30 кадрів в секунду. Див. Цей посібник Google для отримання деяких рекомендацій.

MP4 (H.264 / AAC)

Дотримуйтесь рекомендацій у посібнику FFmpeg H.264 та використовуйте підхід кодування з двома проходами з обмеженнями швидкості:

ffmpeg -y -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 1 -c:a aac -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 2 -c:a aac -movflags faststart output.mp4

Тут цільовий бітрейт повинен бути приблизно на 50% вище, ніж для відео VP9, ​​оскільки H.264 не настільки ефективний. Додайте -movflags faststartопцію до другого проходу, щоб швидше було завантажено відео.

Для налаштування параметрів звуку див . Посібник з кодування AAC .


1
Версія одного з ваших абзаців 2013-12-19 рр. Переривається в середньому реченні. "Звукові налаштування за замовчуванням до 128 кбіт / с, але ви можете встановити q: a для змінної бітрейта, де значення варіюються від 0 до 500. 100 за замовчуванням, а вище означає краще. Якщо"
Alan De Smet

@slhck має багато сенсу, але два мої центи полягають у тому, що ви кидаєте Ogg і заміняєте його на mpegts / m3u8 для підтримки всіх пристроїв iOS або тих, хто приймає HLS. Ви можете повторно використовувати .mp4 файли та просто додати обробку mpeg-ts у ffmpeg.
Пол Грегуар

@Mondain Дійсно, але MPEG-TS / .m3u8, як правило, не підтримує HTML5 відео. Вам потрібен HLS-сервер, і вам потрібно знати трохи більше про потокове передавання, що насправді не входить в рамки цього питання.
slhck

Хороші моменти, але з мого досвіду поки що простий http-сервер може обслуговувати m3u8 до відеотега. Єдине, що зазвичай потрібно зробити - це додати типи mime для m3u8 і ts до відповідної конфігурації сервера.
Пол Грегуар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.