Як зробити скринкаст за допомогою ffmpeg

Для тих, хто не знає, a скрінкасти це цифровий запис виводу на екран комп'ютера, іноді містить аудіо-розповідь.

En Linux, існує кілька інструменти робити екранізація. Однак ті, хто воліє це робити споживаючи мінімальні ресурси вони не можуть припинити читати цю статтю.


Використовуючи 2 інструменти (ffmpeg для зйомки екрана та xwininfo для отримання координат та розмірів вікна, яке слід записати) мені вдалося зробити скринкасти, використовуючи мінімальні ресурси та отримуючи оптимальні результати.

Сценарій для початку трансляції

#! / бін / баш

# Отримати координати та розмір вибраного вікна
# Це виключає оздоблення вікон.
  скасувати xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Абсолютний верхній лівий X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Абсолютний верхній лівий Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Ширина: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Висота: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 #, що ширина кратна 2, інакше ffmpeg скаржиться
WIN_XY = $ x "," $ y # формат XY координати
WIN_GEO = $ w "x" $ h # розмір вікна формату
# notify-send покаже повідомлення, що вказує на початок скринкасту.
# запустити ffmpeg із параметрами, які відповідають вашій конфігурації.
notify-send "Початковий скринкаст ..." && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -preset ultrafast - crf 0 -потоки 0 save.mp4

Вам не потрібно повністю розуміти все, що робить цей сценарій. Досить просто стежити за коментарями. Однак дуже можливо, що вам доведеться змінити деякі параметри в рядку, де виконується ffmpeg, щоб пристосувати їх до конфігурації вашої машини.

Аудіо архітектура

1) Якщо ви використовуєте OSS, замініть -f alsa -i hw: 0 на -f oss -i / dev / dsp

2) Якщо ви використовуєте лише ALSA, вам доведеться використовувати параметри, що входять до сценарію (-f alsa -i hw: 0). Щоб визначити число після hw: ви можете запустити aplay -l та вибрати відповідний номер звукової карти.

3) Якщо ви використовуєте Pulse Audio (Ubuntu та похідні використовують це), використовуйте параметри -f alsa -ac 1 -i pulse.

FPS

-r 25 вказує частоту кадрів в секунду (кадри в секунду або кадри в секунду), на які ви хочете записати. 25 - хороший варіант.

Аудіо, відео та кодек синхронізації

-acodec libmp3lame - це аудіокодек. Я вирішив записати його у mp3. Ви можете використовувати будь-який інший.

-async 1 дозволяє синхронізувати аудіо з відео.

-vcodec libx264-попередньо встановлений надшвидкий -crf 0 -потоки 0, повідомляє ffmpeg, що використовуваний відеокодек x264, а попередньо встановлений надшвидкий (існує швидкий, повільний тощо), інакше він не буде правильно записувати потрібну кількість кадрів в секунду Параметр -crf 0 вказує на рівень стиснення (чим нижче стиск, тим нижче стиск). Нарешті, потоки 0 вказують кількість потоків, які слід використовувати, при передачі 0 ffmpeg обчислює її автоматично. Як і в налаштуваннях звуку, ви можете вибрати інші варіанти.

Усі ці налаштування дали мені найкращі результати: відносно невеликий файл, гарна якість відео, із синхронізованим звуком і без затримок. Однак я рекомендую заглибитися в документацію ffmpeg, щоб виявити інших.

Сценарій закінчення трансляції

#! / бін / баш
сповістити-надіслати "Завершення скринкаста ..." && killall ffmpeg
Щоб обидва сценарії працювали, потрібно встановити notify-send. Усі дистрибутиви, похідні від Ubuntu, повинні поставлятися з встановленим цим інструментом. В Arch та похідні: sudo pacman -S libnotify.

ffcast

Шукаючи інформацію для написання сценаріїв, я виявив, що хтось мав ідею, дуже схожу на мою. Ffcast - це сценарій, що використовує ті самі інструменти (ffmpeg та xwininfo). Я згадую про це, тому що деяким може бути зручніше використовувати цей сценарій.

У Arch та похідних я відкрив термінал і запустив:

yaourt -S ffcast

Решту ви можете завантажити з тут.

До кінця…

Після того, як ви створили та зберегли сценарії, збережені у вашій папці HOME, ви повинні надати йому дозволи на виконання. Припускаючи, що викликаються start_screencast і finish_screencast, виконайте такі команди в терміналі:

chmod + x start_screencast
chmox + x terminate_screencast

Нарешті, залишається лише призначити кожен із сценаріїв 2 зручним для вас ярликами (ярликами). Таким чином, сценарії запускатимуться під час натискання вибраної комбінації клавіш.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Михайло Сп - сказав він

    Оскільки я пізнав Linux, я запитав себе точно те саме, що було щойно описано в цьому коментарі. це був би амбіційний проект.

  2.   pmf - сказав він

    Мені здається хорошим підручник, але як сказати щось легке для початківців користувачів? Ну, найкращим мені здається KAzam, він простий у використанні і, на мій погляд, не споживає багато !!!!!! Ура

  3.   Давайте використовувати Linux - сказав він

    Не всі. Крім того, я щиро вірю, що немає хорошого інтерфейсу для трансляції екрану (який має все, що мені потрібно), який працює з форматами, які я хочу, і який споживає мало ресурсів.

    У моєму випадку термінал - найкращий варіант. Я не прикидаюся, що це для всіх, але добре поділитися тим, що вчиться, так?

    На здоров’я! Павло.

  4.   Хорхе Роша - сказав він

    Неправильно, що якщо ми хочемо розширити ОС під GNU / linux, ми радимо користувачам робити такі речі в терміналі, люди хочуть чогось простого та функціонального

    @ingjorgerocha

  5.   чому союжуан - сказав він

    На рівні сервера я також використовую лише консоль, ніякого графічного середовища ... це найпрактичніше, і я роблю все звідти (автоматизую резервні копії, наприклад, як ти добре кажеш ...), але на машині, яку ти маєш як сервер ... для чого ви хочете зробити на ньому скринкаст? хе-хе .. Ffmpeg дуже дійсний, але я думаю, що проблема консолі повинна піти у фоновий режим залежно від того, які дистрибутиви.
    Оскільки у нас є такий різноманітний дистрибутив у світі Linux, і консоль достатньо вдосконалена, щоб нормально працювати в будь-яких ситуаціях (це майже безпомилково ..), нам слід почати вдосконалювати додатки для громадськості, почати полірувати, кодувати та графічний аспект ... що сьогодні вимагається.
    У нас є досить архаїчні та занедбані проекти Linux, ми всі знаємо, що ... хороший приклад, для мене, це те, чому більше не існує виконуваного формату файлу, який би дозволив взяти програму на мандрівник і просто двічі клацнути і просто інсталяція, крім необхідності сховищ (і, отже, мережі) .. немає APTonCD, це теж застаріло .. нам потрібен стандарт, ".tux" або щось подібне до Windows ".exe". Це для простору? .. у Windows виконуваний файл Gimp займає 72 Мб, а той самий для Linux (.deb) - 4,2 Мб ... чому це? Ну, оскільки сама програма Gimp, у Windows вона супроводжується усіма бібліотеками, щоб переконатися, що програма працює при встановленні ... в Linux ми могли мати щось подібне, виконуваний файл займав би більше, ми втратили б перевагу розміру але ми виграємо в переносимості (і більше завдяки таким великим спогадам, які ми сьогодні маємо в кишенях ... яка різниця, якщо носити 4 Мб, ніж 72 Мб, якщо майже всі ми маємо накопичувачі на 8 Гб?
    Всі ці речі повинні бути відполіровані ... система стабільна, має велику підтримку та сумісність драйверів ... чому б нам не покращити те, що є? ... якщо когось заохочують, ми запускаємо виконуваний проект хе-хе.!

  6.   хідабе - сказав він

    Е-е ... ну, люди, які люблять консоль, не люблять її, тому що дорогий друже, вони люблять її, бо з нею багато речей можна автоматизувати, наприклад, на рівні сервера (хоча це не так).

  7.   чому союжуан - сказав він

    Чесно кажучи, консоль дуже корисна ... але є програми з деяким графічним інтерфейсом, які використовують ffmpeg і є більш привабливими та конструктивними для можливих нових користувачів Linux ... Я рекомендую RecordMyDescktop, який є у сховищах майже всіх дистрибутивів. Я знаю Є багато людей, які люблять консоль, але на цьому потрібно якомога більше закінчити ... Linux повинен бути орієнтований на робочий стіл і можливого кінцевого користувача, який принципово цього хоче, графічний інтерфейс і, якщо можливо, красивий і практичний. ... це настільки складно, що ми не можемо дати нам наступити ... Linux має величезний потенціал, і ми повинні його вичавити!
    Незважаючи ні на що, це чудова програма! Хороший допис ^^

  8.   чому союжуан - сказав він

    Правда в тому, що так, чудово поділитися тим, що вивчаєш ... Це не критика в знецінювальному сенсі публікації, а критика того, чому більше людей не використовують Linux ... що б вони не говорили, консоль повинна бути зведена до другої площини, щоб поступитися графічним об'єктам (це не означає, що можливість робити щось за допомогою консолі виключається, але що хто хоче її використовувати, а хто ні, ну ні ..)
    Зрештою, те, що він продає, вражає простотою управління ОС ... внутрішньо Linux не зупинити, але якщо додати до цього простоту використання та інтуїтивно зрозумілі інтерфейси ... ми завойовуємо користувачів і це виграє розвиток спільноти, різні програми, підтримка компаній, що займаються відеоіграми і, отже, конкретне обладнання (скажімо, відеокарти ..), створення спеціалізованого програмного забезпечення, яке наразі існує лише на Windows / Mac ... Я не знаю, я думаю, що це є в плані 15M ... все дуже приємно, але зараз час трохи змінити курс ... і я кажу трохи!

    Ну, стандартний виконуваний проект в Linux все ще існує, якщо хтось його читає і хоче, щоб ми почали співпрацювати, ось мій електронний лист, я не приховую хе-хе (whysoyjuan@gmail.com)

    Привіт, і я сподіваюся побачити тут більше коментарів ... будь то критика чи похвала, справа в тому, що ми повинні поговорити.

  9.   Давайте використовувати Linux - сказав він

    Добре! Хороший внесок.
    Обійми! Павло.

  10.   Херардо - сказав він

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

    1.    давайте використовувати linux - сказав він

      Як правило, він використовується для конвертації відео. У цьому випадку ми демонструємо, як використовувати його для запису вашого робочого столу та, наприклад, зробити відеоурок.
      Обійми! Павло.

  11.   Тарібаліс - сказав він

    Дякую. У роздільній здатності, наприклад 1280X800, для роботи команди ffmpeg слід писати великі літери X.