Як швидко перетворити mp4 в webm за допомогою ffmpeg?


20

Мені доводиться конвертувати 76 mp4 файлів у webm для веб-сайту, що використовує відео HTML5. Я говорю про 10 Gb файлів mp4 ... Я знаю, що я можу просто попросити ffmpeg зробити це за допомогою:

ffmpeg -i input_file.mp4 output_file.webm

Звичайно, я зроблю це рекурсивно:

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" "${0%%.mp4}.webm"' {} \;

Я навіть спробував щось, що знайшов десь в Інтернеті:

ffmpeg -i input_file.mp4 -cpu-used 4 -threads 8 output_file.webm

Але річ у тому, що це не займе у мене менше тижня !!! Що я роблю неправильно? Чи можливий спосіб прискорити це? Якщо я переходжу на ogg, я наберу на швидкість? Будь ласка, допоможіть!!!



@LordNeckbeard вам слід написати відповідь на основі цього посібника. Крім того, слід зазначити, що кодер vpx повільний як меляса, навіть із розумними налаштуваннями тощо, порівняно з x264 ... якщо ви не готові пожертвувати великою якістю, освітлення неможливо отримати дійсно швидко кодує з ним.
зол

Проблема полягає у сумісності. Це невелика таблиця сумісності: {x264: IE (+) Safari (+) Chrome (+) Firefox (-) Opera (-)} {webm: IE (-) Safari (-) Chrome (+) Firefox (+) Opera (+)} Я знаю, що вони кажуть, що Safari та IE займають найбільшу частину ринку, але я серйозно сумніваюся в цьому і ставлю на Firefox та Opera! ;)
пр.нізар

@ pr.nizar Завдяки випуску OpenH264 Cisco під BSD, firefox тепер підтримує h.264.
Wyatt8740

Відповіді:


11

Перекодування відео потребує часу. Також потрібно набагато більше знань про параметри кодування; За замовчуванням ffmpeg навряд чи підходить для вас і може навіть не створити корисний вихідний файл.

Ось початок:

http://blog.pcode.nl/2010/10/17/encoding-webm-using-ffmpeg/

Ці параметри будуть кодувати до певного середнього бітрейт (відео бітрейт розміром 3900 кбіт), тому у бітрейті будуть шипи.

MP4 та WebM використовують різні відеокодеки, тому немає короткого доступу; відео має бути перекодовано.

Швидкість кодування, звичайно, буде сильно відрізнятися залежно від розміру кадру, частоти кадрів та налаштувань якості. Для кодування 720p, можливо, ви очікуєте, що зможете кодувати приблизно 1: 1 (тобто 10 годин відео за 10 годин) на процесорі за останні кілька років. Якщо ви робите двопрохідне кодування ABR, як у прикладі, наведеному у посиланні, майже вдвічі більше.


8

Подвійно це чи наполовину виріжте це? Таким чином, це глухий кут .. Я не буду грати з бітрейтом, я ніколи не знаю, чого очікувати від якості або розміру .. Я думаю, я буду дотримуватися цього і змусити клієнта затриматися, поки конверсія не закінчиться ..

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 "${0%%.mp4}.webm"' {} \;

Я розміщую його для майбутніх користувачів, насправді я набрав швидкості, але мій процесор працює як пекло: від 60 до 80% на кожне ядро! Тепер я думаю, що це займе менше часу: 3 дні замість 6 чи 7 .. Я сподіваюся, що це не зруйнує .. ^ _ ^

Все одно дякую, чоловіче!

Редагувати: Видалений перемикач -sameq після коментарів LordNeckbeard та neon_overload -sameq не означає те саме "якість"


3
-sameqне означає "однакової якості" і було видалено вище за течією. Не використовуйте. Детальні інструкції з кодування libvpx перейдіть за посиланням у моєму коментарі до вашого питання.
llogan

2
-sameq означає той самий квантователь, однак порівняти квантозатори між h.264 та VP8 неможливо, тож навіть якщо б це не спрацювало, ви майже напевно отримали б зламані результати, якби використовували його, так що не варто.
thomasrutter

2
Дякую чоловікові, що привернув мою увагу до цього! Я відредагував свою відповідь ..;) Насправді я не користувався цим перемикачем, тому що побачив, що він отримує його ще повільніше .. Я навіть відмовився від ffmpeg і використав avconv: Швидше! Завдання було виконано за півтора дня з цим: find ./ -name '* .mp4' -exec bash -c 'avconv -i "$ 0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 " $ {0 %%. Mp4} .webm "'{} \; Я знаю, що я відволікаю тему цим коментарем, але я подумав, що це варто сказати .. ^ _ ^ Сподіваюся, це комусь допоможе! ;)
пр.нізар

Що стосується якості, то я не можу визначити відмінності між оригінальними файлами та тими транскодованими веб-сайтами: це майже однакові якості аудіо та відео!
пр.нізар

1
Все ще рекомендується встановити значення CRF або бітрейт на відміну від використання за замовчуванням ffmpeg / avconv, як би це не було.
thomasrutter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.