• Медіа
  • 23 Вересня 2017 року о 15:11
  • 94
  • Андрій Скидан

FFmpeg, який має велику кількість параметрів і можливостей, можна вважати швейцарським армійським ножем серед аудіо- і відео-додатків. У вас, напевно, він уже встановлений на комп’ютері у вигляді залежності для програми, призначеної для перегляду відео або прослуховування музики. У цій статті ми розглянемо, як використовувати цей пакет з командного рядка без звернення до графічних додатків.

FFmpeg це проект вільного програмного забезпечення з відкритим вихідним кодом, в рамках якого створюються бібліотеки і програми для обробки мультимедійних даних. Найбільш відомими частинами FFmpeg є: libavcodec – бібліотека аудіо / відео кодеків, використовується декількома іншими проектами, libavformat – бібліотека для роботи з аудіо / відео контейнерами і програма ffmpeg, що працює з командного рядка і призначена для перекодування мультимедійних файлів. FFmpeg опублікований під ліцензіями GNU Lesser General Public License 2.1 + або GNU General Public License 2 + (в залежності від того, які використовуються можливості).

Компонетни

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

  1. ffmpeg – інструментальний засіб командного рядка для перетворення одного формату відео файлів в інший. З його допомогою також можна з ТБ-тюнера в режимі реального часу захоплювати і кодувати відеозображення;
  2. ffserver є HTTP і RTSP мультимедійним потоковим сервером, призначеним для прямих трансляцій. З його допомогою можна під час прямого ефіру виконувати часовий зсув відеозображення;
  3. ffplay це простий медіаплеєр, який базуються на бібліотеках SDL і FFmpeg;
  4. ffprobe – інструментальний засіб командного рядка для відображення (аналізу) мультимедійної інформації;
  5. libavcodec є бібліотекою, в якій знаходяться всі аудіо і відео кодеки пакету FFmpeg. Для того, щоб отримати максимальну продуктивність і можливість їх повторного використання, більшість кодеків були розроблені з нуля;
  6. libavformat – це бібліотека, в якій містяться засоби для роботи з форматами аудіо і відео контейнерів;
  7. libavutil – допоміжна бібліотека, в якій знаходяться процедури, загальні для різних частин FFmpeg. У цій бібліотеці є adler32, crc, md5, sha1 декомпресор lzo, кодер / декодер Base64, кодер / декодер des, кодер / декодер rc4 і кодер / декодер aes;
  8. libpostproc – це бібліотека, в якій знаходяться процедури післяобробки відеозаписів;
  9. libswscale – це бібліотека, в якій знаходяться процедури масштабування і колірного попиксельного перетворення відеозображень;
  10. libavfilter – фільтр, який заміняє vhook, що дозволяє виконувати модифікацію або аналіз відео / аудіо записів між декодуванням і кодуванням.

Перевірка підтримуваних форматів

FFmpeg підтримує безліч популярних форматів, так що можна не турбуватися про більшість з них. До числа форматів, підтримуваних Ffmpeg, відносяться MPEG, MPEG-4 (DivX), ASF, AVI, Real Audio / Video і Quicktime. Щоб побачити перелік всіх кодеків / форматів, підтримуваних FFmpeg, запустіть наступну команду:

ffmpeg -formats

В результаті буде видано довгий перелік форматів, зліва від кожного формату буде вказано E (означає, що можна кодувати в цей формат) і / або D (означає, що можна декодувати з цього формату).

Перетворення аудіо

Скажімо, ви маєте аудіо файл з ім’ям my_audio.wav і ви хочете перетворити його на mp3.

ffmpeg -i my_audio.wav  my_audio.mp3

Ключ -i вказує на вхідний файл.

Неймовірно просто, чи не так? Змінити розширення вихідного файлу на розширення будь-якого підтримуваного формату і виконати перетворення в інший формат!

Перетворення відео

Основний принцип використання схожий на приклад, показаний для аудіо, так що ви можете просто написати:

ffmpeg -i my_video.mpeg -s 1024?768 my_video.flv

Ключ -s (size – розмір) встановлює розмір вихідного відео. У нашому випадку ми отримаємо flv-файл з розміром кадру 1024×768 пікселів.

Нарізка зображень з відео

Ця функція свого часу добряче мене виручила. Було необхідно нарізати фоток з відеопотоку, а під рукою був лише ffmpeg – і він відмінно впорався із задачею.

ffmpeg -i test.mpg image%d.jpg

Для кожної секунди відео можна створити 25 зображень, але за допомогою параметра -r можна вказати більшу або меншу кількість зображень. Параметр -r встановлює кількість кадрів, що генеруються в буфері кадрів (за замовчуванням – 25 кадрів). За допомогою нижченаведеної команди буде створено 1 зображення на секунду.

ffmpeg -i test.mpg -r 1 image%d.jpg

Часові позначки

Ви також можете вказати момент в запису, з якого буде розпочато обробка і тривалість обробки за допомогою наступних ключів:

  • за допомогою ключа -ss вказується початкова позиція в секундах; також підтримується формат “hh: mm: ss [.xxx]”.
  • за допомогою ключа -t обмежується тривалість перетворення / захоплення, що вказується в секундах; також підтримується формат “hh: mm: ss [.xxx]”.

Наступна команда буде створювати 25 зображень щосекунди, починаючи з десятої секунди і впродовж 5 секунд.

ffmpeg -i test.mpg -r 25 -ss 00:00:10 -t 00:00:05 images%05d.png

Видобування аудіо з відео

За допомогою ffmpeg ви також можете мікшувати відео та аудіо і можете витягувати з відеозапису аудіодоріжку в форматі mp3:

ffmpeg -i video.avi -f mp3 audio.mp3

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

ffmpeg -i video.avi -vn audio.mp3

Запис відео зі стільниці

За допомогою ffmpeg ви можете записувати відео зі своєї стільниці. При цьому ви можете використовувати ключі, які ми розглянули вище. Наприклад нижченаведена команда створить відео тривалістю (ключ -t) 10 секунд, розміром (ключ -s) 1920×1080 пікселів і частотою кадрів (ключ -r) 25 за секунду. Файл буде записано у домашню теку з ім?ям outputFile.mpg.

ffmpeg -f x11grab -r 25 -s 1920x1080 -i :0.0 -t 00:00:10 ~/outputFile.mpg

Примітка: 0.0 є номером display.screen (дісплея.екрана) для вашого сервера X11 точно так, як це зазначено в змінній оточення DISPLAY.

Офіціна сторінка ffmpeg

Тут ви можете отримати більш докладну інформацію про можливості ffmpeg

Відвідати офіційний сайт

Коментарі