Я використовую такі речі:
avconv -f x11grab -s 1024x768 -r 24 -i 0:0 -deadline realtime -b 5000000 -minrate 200000 -maxrate 40000000 recording-filename-000.webm
Де:
-f x11grab
- застосовує "захоплення екрану" формату введення.
-s 1024x768
- роздільна здатність вхідного файлу (aka область захоплення). Наприклад, дорівнює роздільній здатності робочого столу. Якщо менше, то область запису буде зліва та вгорі. У цьому прикладі я використовував область запису 1024x768.
-r 24
- частота кадрів. В основному, 23-30 кадрів в секунду, які використовуються у справжніх фільмах, щоб забезпечити плавну картину запису. Однак для екранізації може бути нормально зменшити це, щоб отримати кращу картину на нижчих бітрейтах. Я використовував 24, щоб зробити ігровий екран.
-i 0:0
є підказкою використовувати дисплей 0: 0 як джерело (пристрій знаходиться в нотації xorg). Якщо у вас лише 1 монітор і налаштування Xorg за замовчуванням, більшість разів 0: 0 буде нормальним.
-deadline realtime
- є натяком на libvpx. Ми хочемо жити в захват. Ми хочемо виконання в режимі реального часу. Таким чином, libvpx зробить найкраще, щоб кодувати VP8 в REALTIME. Для цього воно дещо торгує якістю для швидкості. Якість бітрейт буде трохи гіршою, ніж це було б у режимі реального часу. Але швидкість кодування зростатиме. Тож на моєму апаратному забезпеченні він може розчавити 1024x768 при 24FPS, інтенсивні сцени, не скидаючи жодних кадрів (хоча рекомендується потужний процесор). У цьому прикладі я хотів гідної якості живого зйомки з хорошим FPS та досить великою площею зйомки. Тож використання процесора кодеком може бути проблемою. Ось чому цей натяк справді потрібен для хороших результатів.
-b 5000000
- цільовий бітрейт у бітах / секунду. Я використовував 5Mbits, щоб отримати більш-менш гарну картину досить інтенсивних сцен. Codec намагатиметься підтримувати середню швидкість бітрейту відео близькою до цього значення. Чим менше це значення, тим гірша якість і файл менше. Ви можете трохи експериментувати, щоб зрозуміти, який бітрейт хороший для конкретного використання. Служби обміну відео дозволять перетворити відео, якщо ви перестанете. Якщо ви збираєтеся використовувати власний сервер, вам належить подбати про трафік. Якщо підкреслити, якість зображення буде поганою. Не соромтеся змінювати значення, щоб зрозуміти, що найкраще для вас. 5Mbits були призначені для більш-менш приємного для зйомки в реальному часі напружених сцен в іграх, де ви не можете легко побачити, що картинка перекомпресована. Для зйомки ще додатків вам знадобиться набагато менше, ніж це.
-minrate
200000 - це мінімально дозволений бітрейт для кодека. Залежно від характеру речі, яку ви хочете захопити, іноді вам може знадобитися примусити мінімальний бітрейт дотримуватися розумного вигляду малюнка, незважаючи ні на що. Іноді кодек-евристика може зменшити бітрейт набагато нижче значень, які вам можуть захотіти, надаючи погані зображення на деяких сценах. Цей параметр дозволяє змусити кодек зберігати мінімальний бітрейт, навіть якщо кодек вважає, що сцена проста та може бути скинуто бітрейт. Високе значення цього параметра може збільшити розмір файлу, не дозволяючи кодеку використовувати менші бітрейти.
-maxrate 40000000
- Це значення керує максимальною швидкістю розриву при напружених сценах. Я використовував дійсно високе значення, щоб дозволити кодеку вийти набагато вище бажаного середнього, якщо він вважає, що більш висока швидкість є обов'язковою для збереження гідної якості на якійсь сцені. Щоб отримати гарну картинку в будь-яких умовах, бажано встановити цю досить високу (40 Мбіт - швидкість, схожа на BlueRay, і зробить фокус). З іншого боку, якщо ви збираєтесь передавати його за допомогою власного сервера, вам доведеться зменшити це значення за рахунок деякої якості зображення при інтенсивних сценах. Ще один сервер не може впоратися з потрібним бітрейтом, не в змозі доставити його користувачам у режимі реального часу. Тоді гравець зіткнеться із заниженням буфера (що дратує). Служби обміну відео доглядають самостійно і, як правило, знижують відео, щоб знизити параметри ціною якості зображення.
recording-filename-000.webm
- це ім'я виводу файлу. Якщо ви використовуєте розширення .webm, ffmpeg / avconv досить розумні, щоб зрозуміти, що вам потрібно WEBM. Це просто - avconv відгадує потрібний формат від імені файлу. Отже, файли .WEBM - це WEBM всередині.
Це все - ця команда робить запис прямого екрана на файл webm. Не потрібні додаткові конверсії, і libvpx
це натякає на максимальну швидкість. Немає звуку, оскільки немає специфікації для введення звуку. Це може бути або не бути тим, що ви хочете. Для звуку також потрібно вказати джерело входу для звукового потоку.
PS це може здатися трохи складним, але наприкінці дня ви можете зрозуміти, що один розмір не може вмістити всіх. Таким чином, щоб отримати гарний малюнок у будь-яких ситуаціях, ви, можливо, захочете використовувати деякі ручки для кодека та хочете їх налаштувати. Ffmpeg дає вам всі ручки, які вам можуть знадобитися, і набагато більше, ніж це. Це важке озброєння перетворення та кодування відео. Тож цей приклад - хороший момент для початку для тих, хто хоче зробити більш-менш вдосконалені кодування і готовий трохи експериментувати, щоб отримати дійсно гідні результати.