Ffmpeg докладна інструкція. FFmpeg як консольний відеоредактор. Витягти аудіо з відео

FFmpeg - набір бібліотек та утиліт командного рядка, що дозволяють робити практично всі основні операції редагування та перетворення файлів відео та звукових файлів. Нижче шпаргалка з основних команд для роботи з FFmpeg, які можуть стати в нагоді при редагуванні відео. Особливо звернемо увагу на недеструктивне редагування файлів відео та звукових файлів. Ліцензія: GNU LGPL та GNU GPL. Сайт: http://ffmpeg.org

FFmpeg для початківців

Зйомка відео у цифрових форматах за допомогою смартфонів, фотоапаратів та інших цифрових пристроїв стала поширеним явищем. Звісно ж виникає необхідність якось редагувати зняті відеоролики, - наприклад, для розміщення на «Ютубі». Тобто відеоролики часто потрібно обрізати, замінювати або видаляти звукову доріжку, змінити розмір формату відео, а потім все склеювати в єдиний файл відео.

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

Чим хороший FFmpeg:

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

    Як і притаманно громадських програм, FFmpeg поширюється всім популярних операційних системах - GNU/Linux, Windows, MacOS.

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

    FFmpeg має власну бібліотеку з підтримкою великої кількості кодеків для різних форматів мультимедійних файлів практично на всі випадки життя. Плюс можна збирати FFmpeg із можливістю підключення сторонніх кодеків.

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

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

Також слід зазначити, що FFmpeg має альтернативу - форк Libav. Синтаксис параметрів команд є однаковим в обох випадках.

Про формати та кодеки

Коротко потрібно сказати як неліричний відступ про формати файлів відео та звукових файлів. Розуміння цього потрібне для того, щоб команди цього набору утиліт та бібліотек не виглядали як магічні заклинання.

Зазвичай файл відео є контейнером. Це щось на кшталт архіву, створеного архіватором zip чи tar, у якому міститься безліч файлів. По суті, в такому контейнері є файли відео, одна або кілька звукових доріжок, можуть бути текстові файли субтитрів, можуть бути ще якісь дані. Зазвичай ці файли, що входять в контейнер, називаються потоками.

Розповсюдженими форматами контейнерів для відео є 3gp, MP4, MOV, MPEG, AVI, MKV ("Матрьошка"), WEBM та ін. FFmpeg працює з великою кількістю таких форматів контейнерів.

Формат звукових файлів - MP3, OGG Vorbis, WAV та ін - зазвичай містить аудіотрек і текстові метадані про жанр, автора, виконавця і т.п.

Безпосередньо відеодані в контейнерах «упаковані» у вигляді різних форматів, що визначаються кодеками – програмами для кодування та декодування відео. Найбільш популярними кодеками є кодеки H.264 та H.265 для контейнера MP4, V8 та V9 для контейнера WEBM.

FFmpeg працює з великою кількістю кодеків, включаючи екзотичні. Дізнатися список можливих кодеків у FFmpeg можна, запустивши команду ffmpeg з параметром -codecs .

Ffmpeg-codecs

Основними параметрами відеоданих є:

  • роздільна здатність зображення відео - наприклад, 320х240, p720 і т.д;
  • формат та кодек, за допомогою якого створювався відеопотік;
  • бітрейт - кількість даних у кілобайтах або мегабайтах, які потрібні для програвання відео за одну секунду - наприклад, 240 Kb/s, 1Mb/s;
  • фремрейт - кількість кадрів за секунду (frame per second) - наприклад 24 fps, 30 fps.

Для аудіоданих важливими параметрами є:

  • формат та кодек, за допомогою якого створювався звуковий потік;
  • частота дискретизації – наприклад, 44 KHz;
  • бітрейт - кількість даних у кілобайтах, які потрібні для програвання аудіофайлу за одну секунду - наприклад, 96 Kb/s, 128Mb/s;
  • режим моно, стерео і т.д.

Але параметрів насправді більше. Дізнатися параметри контейнера відео та вхідних до нього відео та аудіо легко зробити за допомогою команди fmpeg з параметром -i, якому передається шлях та ім'я мультимедійного файлу

Ffmpeg-i video.mp4

VidCutter: графічний інтерфейс для FFmpeg

Але почати використання FFmpeg можна не лише з командного рядка. До FFmpeg існують і графічні оболонки – програми, в яких основні команди та операції можна виконувати за допомогою графічного інтерфейсу та маніпулятора «миша».

Прикладом такої простої графічної оболонки є дуже простенька програма VidCutter. Вона дозволяє в графічному інтерфейсі задіяти обрізання відеофайлів без перекодування, тобто без втрати якості.

Робота в цій програмі складається з однієї операції – виділити початок та кінець фрагменту та натиснути кнопку обрізки відео. Але здебільшого потрібно більше, ніж просто обрізати відеофайли.

Установка комплекту утиліт FFmpeg

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

Для Windowsі Mac OSможна скачати з офіційного сайту архів з готовими бінарними збірками FFmpeg, розпакувати їх у будь-який каталог. Потрібні утиліти зазвичай знаходяться у папці bin. Запускати їх потрібно з командного рядка, задаючи шлях до цих утиліт, безпосередньо в командному рядку або через додавання шляху до утиліт через глобальні системні змінні.

Основних утиліт у наборі FFmpeg дві:

  • ffmpeg – утиліта для всіх операцій з файлами мультимедіа;
  • ffplay - дуже простий програвач для мультимедійних файлів, замість якого можна використовувати будь-який інший програвач.

Редагуємо з FFmpeg

Припустимо, у нас є кілька дорогих нам файлів відео, зроблені колись якимось старим "Кеноном", або "Ніконом", або камкордером. Нам хотілося обрізати зайве в цих відео, прибрати з них фоновий звук і накласти якусь музику. Потім все склеїти в єдиний файл без перекодування та втрати якості.

Покладемо ці файли в окрему папку і заходимо в цю папку з командного рядка для редагування відеофайлів за допомогою команд ffmpeg.

Також потрібно тримати правильний порядок і групування параметрів командного рядка утиліти ffmpeg:

  • Не забуваємо, що вхідний файл(и) для маніпуляцій та редагування задається відразу після команди ffmpeg після опції -i: ffmpeg -i video.mp4;
  • після параметрів вхідного чи вхідних файлів йдуть глобальні параметри - наприклад, опція вибору потоків, опція нової роздільної здатності відеоролика;
  • потім йде опція відеокодека, за яким перераховуються його параметри, у тому числі і відеофільтри;
  • потім йде опція аудіокодека і перераховуються його параметри навіть фільтри;
  • Завершує команду ім'я файлу на виході.

Приклад рядка команди

FFmpeg: перекодування та деструктивне редагування

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

Основне призначення FFmpeg – це перекодування файлів мультимедіа з одного формату до іншого. І перекодування у FFmpeg може робитися дуже легко.

Як мінімум для перекодування в інший формат потрібно задати у вихідному файлі потрібне розширення файлу. І все. За цим розширенням утиліта підбере потрібний кодек і перекодує вхідний файл згідно з параметрами за промовчанням для цього кодека, виходячи з параметрів вхідного файлу. Наприклад, наступна команда перекодує вхідний файл формату MP4 video.mp4 у контейнер WEBM video.webm

Fmpeg -i video.mp4 video.webm

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

Опції ffmpeg для параметрів відео:

  • -vcodec або коротко c:v - параметри відеокодека, або "copy", або порожній параметр (за замовчуванням)
  • -f - формат контейнера
  • -b - бітрейт у кілобітах або мегабітах за секунду задається буквою K або M
  • -aspect - співвідношення сторін картинки (4:3, 16:9, 1.3333, 1.7777)
  • -r - фреймрейт

Опції ffmpeg для параметрів звуку:

  • -acodec або коротко c:a - параметри кодека звуку, або "copy", або порожній параметр (за замовчуванням)
  • -f - формат аудіо
  • -ab - бітрейт аудіо
  • -ar – частота дискредитації
  • -ac - кількість каналів

Наприклад, перекодуємо вхідний файл формату MP4 video.mp4 у контейнер WEBM video.webm з деякими явно заданими параметрами

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

FFmpeg: зміна роздільної здатності відео

Перекодування буде зроблено, природно, і якщо просто встановити новий дозвіл для відео за допомогою глобальної опції -s

Ffmpeg-i video.mp4-s 320х240 video.webm

FFmpeg: перекодування та недеструктивне редагування відео без втрати якості

Тепер про перетворення відео з одного формату на інший без втрати якості. Для деяких операцій можливе редагування без перекодування звуку та відео, без втрати якості, коли потоки всередині файлу контейнера залишаються недоторканими і просто копіюються з одного файлу в інший. Для цього для опцій -vcodec та -acodec використовується параметр copy. Наприклад, "переллємо" відеопотік і аудіопотік з файлу формату MP4 video.mp4 у файл контейнера TS video.ts:

В результаті новий файл контейнер video.ts міститиме недоторкане перекодуванням відео та звук із файлу контейнера video.ts.

FFmpeg: недеструктивна нарізка та обрізка файлів відео

Обрізання відеофайлу здійснюється за допомогою опцій -ss та -t. Опція -ss визначає початок обрізки, а опція -t задає тривалість подальшого фрагмента. Час задається у форматі "годинник: хвилини: секунди". Щоб не редагувати вміст відеофайлу, використовуйте параметр copy.

Обрізка без перекодування відбувається дуже швидко і не забирає багато комп'ютерної потужності.

FFmpeg: склеювання та з'єднання файлів відео

Щоб склеїти, з'єднати відеофайли за допомогою ffmpeg, вони повинні бути одного формату, у тому числі однаковими і за параметрами потоків відео та звуку цього формату. Якщо це не так, потрібно зробити попереднє перекодування файлів відео до єдиного формату.

Для багатьох форматів з'єднання файлів у ffmpeg відбувається за допомогою оператора concat, якому після двокрапки передається послідовність вхідних файлів, розділених символом вертикальної межі. Приклад склеювання однакових та однотипних за форматом файлів file1.avi та file2.avi без перекодування:

Ffmpeg -i "concat:file1.avi|file2.avi" -vcodec copy -acodec copy output.avi

Слід враховувати при з'єднанні фрагментів відео в єдиний файл, що потоки відео і аудіопотоки фрагментів складаються окремо, а потім об'єднуються в один контейнер. Тому якщо в одному з фрагментів звукова доріжка коротша за часом ніж відеопотік, то звукові доріжки інших фрагментів зрушать до кінця цієї короткої звукової доріжки і розсинхронізуватиметься звук. Це треба враховувати.

FFmpeg: склеювання та з'єднання файлів формату відео MP4

Відеофайли в контейнері MP4 не можна з'єднати за допомогою оператора concat. Але можна попередньо перетворити ці файли на контейнер, наприклад, MPEG-TS без перекодування відео та звуку:

Ffmpeg -i vid1.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts vid1.ts ffmpeg -i vid2.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts vid2.

А потім ці файли вже можна з'єднати за допомогою оператора concat у підсумковий файл mp4:

Ffmpeg -i "concat:vid1.ts|vid2.ts" -vcodec copy -acodec copy out.mp4

FFmpeg: видалення звукової доріжки

Часто з відеофайлу потрібно видалити звуковий потік, щоб потім замінити на якийсь інший. Це робиться за допомогою опції -an (audio not).

Ffmpeg -i zvuk.mpg -vcodec copy -an bezzvuka.mpg

FFmpeg: додавання або заміна звукової доріжки

Додати звуковий потік у відеофайл потрібно за допомогою додаткової опції -i якої в якості параметра передається шлях звуковому файлу.

FFmpeg: опція "-map" для звернення до потоків у відеофайлах

Вище ми побачили приклад багаторазового використання для ffmpeg опції -i, якщо обробляються, з'єднуються, мультиплексуються кілька вхідних файлів мультимедіа. Також вище було сказано, що файли-контейнери можуть містити кілька мультимедійних потоків відео, звуку і даних. FFmpeg має спеціальну опцію -map , за допомогою якої можна вказати конкретний вхідний мультимедійний потік або внутрішній потік контейнера для обробки, копіювання або вставки.

Потоки позначаються подвійним номером, розділених двокрапкою - "0:0", "0:1", "1:0", "2:1" і т.д. Перша цифра до двокрапки - це номер по порядку кожного вхідного файлу, що задається опцією -i, починаючи з нуля. А номер після двокрапки позначає номер потоку всередині файлу.

Розглянемо опцію -map на конкретних прикладах

Зберегти окрему звукову доріжку із відеофайлу (демультиплексація)

Номери потоків у кожному відеофайлі можна визначити через виведення команди ffmpeg -i , який матиме приблизно такий формат:

Ffmpeg -i video.mkv ... Stream #0:0(und): Video ... Stream #0:1(ger): Audio ... Stream #0:2(eng): Audio ... Stream # 0:3(rus): Subtitle …

Тобто 0 перед двокрапкою означає, що це перший порядок вхідний файл для ffmpeg - у прикладі вище це файл video.mkv. А номери після двокрапки означають номери внутрішніх потоків цього файлу. Для обробки конкретного потоку -map потрібно передати конкретний номер цього потоку. Приклад команди з опцією -map, яка демультиплексує, тобто зберігає одну із звукових доріжок контейнера в окремий файл:

Ffmpeg -i video.mkv -map 0:2 sound.wav

FFmpeg: додати кілька звукових доріжок до відеофайлу (мультиплексація)

Тепер розглянемо приклад додавання кількох звукових доріжок до відеофайлу за допомогою FFmpeg. Для цього знову використовуємо опцію -map.

Допустимо у нас є чистий відеофайл video.avi і ми підібрали до нього кілька звукових доріжок zvuk1.mp3 і zvuk2.mp3 - наприклад, різна музика або коментарі різними мовами. Тепер використовуємо опцію "-map" для мультиплексації, тобто з'єднання цих файлів до єдиного файлу контейнера:

Ffmpeg -i video.avi -i zvuk1.mp3 -i zvuk2.mp3 -map 0:0 -map 1:0 -map 2:0 out.avi

Як бачите, для вхідних файлів після опцій -i у опціях -map використовуються номери перед двокрапкою. І ми отримали вихідний відеофайл із двома звуковими доріжками всередині, між якими можна перемикатися у багатьох плеєрах - наприклад, у плеєрі mpv перемикання між звуковими доріжками робиться через "#" (Shift+2).

Природно можна було додати параметри кодування нового відеофайлу. Наприклад, опції -c:v copy -c:a copy дозволили б у прикладі вище скласти новий файл out.avi чистим копіюванням без перекодування вхідних файлів video.avi, zvuk1.mp3 і zvuk2.mp3.

Таким чином, за допомогою FFmpeg можна додати до відеофайлу субтитри. Головне не заплутатися у номерах вхідних потоків та потоків усередині контейнера.

Завжди під рукою

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

Стаття може бути доповнена новими прикладами використання FFmpeg. Але у всіх завжди під рукою є керівництво та довідник англійською мовою.

Ffmpeg -h full > ffmpeg_help.txt

ffmpeg дійсно потужний відеокодер/декодер. Він працює у командному рядку, а не у графічному інтерфейсі. Командний рядок - це чорне вікно, яке ви знайдете, клацнувши і набравши cmd , потім натисніть enter. Це також називається "командного рядка". Після налаштування ви вводите команди ffmpeg в одному з цих вікон, щоб використовувати його.

Ось основні кроки, щоб «установити» та використовувати його:

Встановлення

ffmpeg тепер "встановлений". Командний рядок тепер розпізнає команди ffmpeg та спробує запустити їх.

Оновлення FFmpeg

Щоб оновити FFmpeg, просто повернутися на сторінку завантаження в кроці 1 і завантажити файл поштового індексу. Розпакуйте файли та скопіюйте їх поверх старих файлів у папці, створеній на кроці 2.

Використання FFmpeg

Використання FFmpeg вимагає, щоб відкрити вікно командного рядка, а потім введіть FFmpeg певні команди. Ось типова команда FFmpeg:

Ffmpeg -i video.mp4 -vn -ar 44100 -ac 1 -b:a 32k -f mp3 audio.mp3

Ця команда складається з чотирьох частин:

  1. ffmpeg – Ця команда повідомляє CMD, що ми хочемо запустити FFmpeg команди. cmd спочатку шукає ffmpeg.exe в одній з папок з кроку 6 у розділі "Установка". Якщо його знайдено, він спробує виконати команду.
  2. -i video.mp4 – Це вхідний файл. Ми будемо працювати над цим файлом.
  3. -vn -ar 44100 -ac 1 -b:a 32k -f mp3 - Це "аргументи". Ці символи нагадують міні-команди, які точно визначають, що ми хочемо робити. В цьому випадку говориться, що потрібно створити mp3-файл із джерела введення.
    • -vn - Залиште з відеопотоку
    • -ar 44100 - Визначає аудіо роздільну здатність у герцах.
    • -ac 1 – Аудіоканали, тільки 1. Це ефективно «зробити моно».
    • -b:a 32k – Бітрейт аудіо, встановлений на 32 кбіт/с.
    • -f mp3 – Примусове перетворення MP3. Без цієї команди ffmpeg намагається інтерпретувати те, що ви хочете, на основі розширення, яке ви використовуєте на ім'я вихідного файлу.
  4. audio.mp3 – Це вихідний файл.

Як ви можете здогадатися, ця коротка команда робить аудіофайл MP3 з MP4.

Щоб виконати цю команду, якщо у вас є файл MP4, щоб спробувати це на, виконайте такі дії:

  1. Натисніть клавішу Windows + R.
  2. Тип cmd потім введіть.
  3. Змінити шлях до файлу, над яким потрібно працювати. Тип cd. Він повинен виглядати приблизно як cd C:\Users\name\Desktop\.
  4. Тепер введіть команду ffmpeg із ім'ям вашого вхідного файлу. Команда працюватиме з деяким зворотним зв'язком. Коли це буде зроблено, cmd буде доступним для більшої кількості команд.

Це основний спосіб використання ffmpeg. Команди можуть бути набагато складнішими, але це тільки тому, що програма має стільки енергії. Використовуючи ffmpeg documentation , ви можете дізнатися всі команди і створити дуже потужні скрипти. Після цього ви можете зберегти ці сценарії файл.bat, щоб вам просто потрібно двічі клацнути файл, а не набирати всю команду щоразу. Наприклад, цей answer contains a script that will create MP3's from all the MP4's in a folder . Потім ми будемо комбінувати потужність ffmpeg з потужністю cmd і це приємне місце, коли вам потрібно робити професійне відео/аудіо кодування в гірських файлах.

Переклад дуже кривий, але уявлення про опції можна отримати.

FFMPEG (1) FFMPEG (1)

Найменування

FFmpeg - FFmpeg відео конвертер

СИНТАКСИС

FFmpeg [[Опції_вхідного_файлу] [-i INFILE ]]... ([Опції_вихідного_файлу] OUTFILE) ...

ОПИС

Зазвичай застосовуються параметри на будь-який зазначений файл.

Таким чином, порядок важливий, ви можете використовувати одну і ту ж опцію в

Командному рядку кілька разів. У кожному випадку застосовуються до

Вхідний або вихідний файл.

* Щоб встановити відео бітрейт вихідного файлу в 64 Кбіт/с:

FFmpeg -i input.avi -b 64K output.avi

* Щоб встановити частоту кадрів вихідного файлу до 24 кадрів за секунду:

FFmpeg -i input.avi -r 24 output.avi

* Щоб встановити частоту кадрів вхідного файлу (дійсний лише для сирих форматів)

1 кадр на секунду, а частоту кадрів вихідного файлу 24 кадри на секунду:

Ffmpeg -r 1 -i input.m2v -r 24 output.avi

Опції формату можуть бути потрібні для вхідних файлів.

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

Використовує ті ж аудіо та відео параметри виходу, як і біля входу.

ВАРІАНТИ ОПЦІЙ

*Загальні опції*

Ці опції доступні із інструментів ffmpeg*.

L Показати ліцензії.

H, -?, -help, --help.

Показати довідку.

Version

Показати версію.

Формат

Показати доступні формати.

Поля попереднього формату мають такі значення:

D декодування доступне

E Кодування доступне

Codecs

Показати доступні кодеки.

Поля назви кодеків мають такі значення:

D декодування доступне

E Кодування доступне

V/A/S

Відео / аудіо / субтитрів кодек

S кодек підтримує скибочки

D Кодек підтримує прямий рендеринг

T кодек може обробляти вхідні усічення у випадкових місцях, а не

Тільки у межі кадрів

Bsfs

Показати доступні біти фільтрів.

Protocols

Показати доступні протоколи.

Filters

Показати доступні libavfilter фільтри.

Pix_fmts

Показати доступні формати пікселів.

LogLevel LogLevel

Встановити рівень ведення журналу використовується бібліотека LogLevel, число або

Рядок, що містить одне з наступних значень:

Quiet

Panic

Fatal

Error

Warning

Info

Verbose

Debug

Основні опції:

F fmt

Група форматів.

I файлу

Вхідне ім'я файлу

У Переписати вихідний файл.

T Тривалість

Обмежити транскодування / захоплення відео послідовності з тривалістю,

Яке вказується за секунди. "Чч: мм: [. XXX] SS" синтаксис також підтримується.

Fs limit_size

Встановлює граничний розмір файлу.

Ss позиція

Прагніть даний момент положення за лічені секунди. "Чч: мм: [. XXX] SS" Синтаксис

Також підтримується.

Itsoffset

Встановіть вхідний зсув у секундах. "[-] Чч: мм: сс". Синтаксис

Також підтримується. Цей параметр впливає на всі вхідні файли, які

Ті, що йшли за ним. До зміщення додається мітки із вхідних

Файли. Вказівка ​​позитивного зміщення означає, що відповідні

Потоки із затримкою "compensation" секунд.

Timestamp час

Встановити позначку.

Metadata Значення метаданих<ключ ="значение">

Встановлює метадані в парі ключ/значення.

Наприклад, для встановлення титул у вихідний файл:

FFmpeg -i in.avi -metadate Title = "мій титул" out.flv !}

V число

Встановити реєстрацію рівень подробиці.

Target Цільового типу

Вкажіть цільовий тип файлу ("VCD", "SVCD", "DVD", "DV", "DV50",

"PAL-VCD", "NTSC-SVCD", ...). Усі варіанти формату (бітрейт,

Кодеків, розмір буфера) при цьому встановлюється автоматично. Ви можете просто

Вказати тип:

FFmpeg -i myfile.avi -target VCD /tmp/vcd.mpg

Тим не менш, ви можете вказати додаткові параметри, як ви знаєте

Вони не конфліктують зі стандартними, як і в:

FFmpeg -i myfile.avi -target VCD -bf 2 /TMP/vcd.mpg

Dframes число

Встановлює кількість кадрів для запису.

Scodec кодек

Група субтитрів кодека ("copy", щоб скопіювати потік).

Newsubtitle

Slang код

Встановлює код мови ISO 639 (3 літери) із поточного рядка

Потоку.

Параметри відео

B бітрейт

Встановлює швидкість передачі відео біт/с (за замовчуванням = 200 Кб/с).

Vframes число

Встановлює кількість кадрів відеозаписів.

R fps

Встановлює частоту кадрів (Гц значення, частки або абревіатура) (за замовчуванням =

25).

S розмір

Встановлює розмір кадру. Формат WxH (ffserver за замовчуванням = 160x128, ТВМ-

Прив'язки за замовчуванням = такі, як і вихідного). Наступні скорочення

Визнано:

SQCIF

128x96

QCIF

176x144

352x288

4CIF

704x576

16cif

1408x1152

QQVGA

160x120

QVGA

320x240

640x480

SVGA

800x600

1024x768

UXGA

1600x1200

QXGA

2048x1536

SXGA

1280x1024

Qsxga

2560x2048

Hsxga

5120x4096

WVGA

8520x480

WXGA

1366x768

WSXGA

1600x1024

WUXGA

1920x1200

Woxga

2560x1600

Wqsxga

3200x2048

Wquxga

3840x2400

Whsxga

6400x4096

Whuxga

7680x4800

320x200

640x350

Hd480

852x480

Hd720

1280x720

Hd1080

1920x1080

Aspect аспект

Встановлює співвідношення сторін (4:3, 16:9 чи 1,3333, 1,7777).

Croptop розмір

Встановити верхній розмір групи культур (у пікселях).

Cropbottom розмір

Встановлює нижній розмір групи культур (у пікселях).

Cropleft розмір

Обрізати ліву смугу (у пікселях).

Cropright розмір

Встановити правильний розмір групи культур (у пікселях).

Padtop розмір

Встановіть верхній майданчик розміром групи (у пікселях).

Padbottom розмір

Встановіть нижній розмір групи панелі (у пікселях).

Padleft розмір

Лівий розмір майданчика (у пікселях).

Padright розмір

Встановити правильний розмір групи майданчика (у пікселях).

Padcolor hex_color

Встановити колір прокладеної смуги. Співвідношення padcolor виражається як

Шість цифр шістнадцяткового числа, де перші дві цифри репрезентують

Червоний, дві середні цифри зеленого та останні дві цифри синій (за замовчуванням

000 000 (чорний)).

Вимкнути запис відео.

Bt толерантності

Встановіть швидкість передачі відео (у бітах за промовчанням 4000K). З мінімальним та

Максимальним значенням: (target_bitrate/target_framerate). У 1-прохідному режимі,

Бітрейт толерантності визначає, як далеко<битпоток>готовий ділити

З бітрейтом середнє значення цілі. Це не пов'язано з

Мін/макс бітрейтом. Зниження толерантності надто негативно впливає

На якість.

Maxrate бітрейт

Встановити максимальну швидкість передачі відео (у біт/с). Потрібно що б

Bufsize бути встановлений.

Minrate бітрейт

Встановити мінімальний відео бітрейт (у біт/с). Найкорисніші у створенні кодування:

FFmpeg -i myfile.avi -b 4000K -minrate 4000k -maxrate 4000K -bufsize 1835k out.m2v

Це мало користі elsewise.

Bufsize розмір

Встановлює відео буфера верифікатор розміру буфера (у бітах).

Vcodec кодек

Викличте відео кодек для кодека. Використовуйте "copy" щоб задати особливе значення з

RAW Codec дані мають бути скопійовані, як є.

Sameq

Використання якості відео в якості джерела (має на увазі VBR).

Pass n

Виберіть номер (1 або 2). Він використовується для передачі відео

Кодування. Статистика відео записуються у першому

Перейти до лог-файлу (див. також опцію -passlogfile), а в

Другий прохід, що лог-файл використовується для створення відео,

Точне запитаний бітрейт. На прохід 1, ви можете просто вимкнути звук

І встановити вихід до нуля, приклади для Windows та Unix:

FFmpeg -i foo.mov -vcodec libxvid -pass -an -f rawvideo -y NULL

FFmpeg -i foo.mov -vcodec libxvid -pass -an -f rawvideo -y /dev/null

Passlogfile префікса

Встановити двопрохідну назву файлу журналу префікса імені файлу за замовчуванням

Префікс ``ffmpeg2pass''. Повне ім'я файлу буде PRE-

FIX-N.log, де N це номер конкретної у вихідний потік.

Newvideo

Додати новий потік відео на вихідний потік.

Vlang код

Встановіть ISO 639 код мови (3 літери) поточного відео

Потоку.

Опції Advanced Video

Pix_fmt формат

Встановіть формат пікселів. "list" використовується як параметр для відображення

Усіх підтримуваних пікселів форматів.

Sws_flags прапори

Встановити прапори SwScaler.

G gop_size

Встановити групи розміру фотографії.

Intra

Використовуйте лише всередині кадру.

Vdt n

Скасування порога.

Qscale q

Використання фіксованого масштабу відео (VBR).

Qmin q

Мінімальний масштаб відео (VBR)

Qmax q

Максимальний масштаб відео (VBR)

Qdiff q

Максимальна різниця між квантувачем ваги (VBR)

Qblur розмиття

Відео квантувача масштаб розмиття (VBR) (діапазон 0,0 – 1,0)

Qcomp стиснення

Масштаб стиснення відео (VBR) (за замовчуванням 0,5). Постійна

Lmin лямбда

Мінімальний коефіцієнт відео Лагранжа (VBR)

Lmax лямбда

Максимальний відео множник Лагранжа (VBR)

Mblmin лямбда

Мінімальний масштаб квантувач макроблоків (VBR)

Mblmax лямбда

Максимальний масштаб квантувача макроблоків (VBR)

Ці чотири варіанти (Lmin, Lmax, mblmin, mblmax) одиниць "lambda" використання,

Але ви можете використовувати значення постійного QP2LAMBDA легко конвертувати з "Q"

Одиниць:

Ffmpeg -i src.ext-Lmax 21 * QP2LAMBDA dst.ext

Rc_init_cplx складності

Початкові складнощі для проходження одного кодування

B_qfactor-фактор

Qp фактором між P- та B-кадром

I_qfactor-фактор

Qp фактором між Р- та I-кадром

B_qoffset зміщення

Qp зміщення між P- та B-кадром

I_qoffset зміщення

Qp зміщення між Р- та I-кадром

Rc_eq рівняння

Встановити курс управління рівняння (за замовчуванням = "text^qComp").

Rc_override перевизначити

Контролює перевизначення швидкості у певні проміжки часу

Me_method метод

Встановити метод оцінки руху до методу. Доступні методи

(Від найнижчої до найкращої якості):

Zero

Спробуйте просто (0, 0) вектор.

Phods

Epzs

(За замовчуванням метод)

Full

Вичерпний пошук (повільно і трохи краще, ніж epzs)

Dct_algo алгоритм

Встановити алгоритм DCT. Можливі значення:

0 FF_DCT_AUTO (за замовчуванням)

1 FF_DCT_FASTINT

2 FF_DCT_INT

3 FF_DCT_MMX

4 FF_DCT_MLIB

5 FF_DCT_ALTIVEC

алгоритм Idct_algo

Встановити IDCT алгоритм. Можливі значення:

0 FF_IDCT_AUTO (за замовчуванням)

1 FF_IDCT_INT

2 FF_IDCT_SIMPLE

3 FF_IDCT_SIMPLEMMX

4 FF_IDCT_LIBMPEG2MMX

5 FF_IDCT_PS2

6 FF_IDCT_MLIB

7 FF_IDCT_ARM

8 FF_IDCT_ALTIVEC

9 FF_IDCT_SH4

10 FF_IDCT_SIMPLEARM

Er n

Встановити стійкість до помилок n:

1 FF_ER_CAREFUL (за замовчуванням)

2 FF_ER_COMPLIANT

3 FF_ER_AGGRESSIVE

4 FF_ER_VERY_AGGRESSIVE

Ec bit_mask

Встановити маскування помилок у bit_mask. bit_mask маски мають

Наступні значення:

1 FF_EC_GUESS_MVS (за замовчуванням = увімкнено)

2 FF_EC_DEBLOCK (за замовчуванням = увімкнено)

Bf кадрів

Використовуйте "frame" B-кадрах (підтримуються MPEG-1, MPEG-2 та MPEG-4).

Mbd режим

Рішення макроблоків

0 FF_MB_DECISION_SIMPLE: Використовуйте mb_cmp (не може змінити його ще в mmpeg).

1 FF_MB_DECISION_BITS: Виберіть один, який вимагає меншої кількості

Біт.

2 FF_MB_DECISION_RD: співвідношення сигнал-шум

Використовуйте чотири вектори руху на макроблоках (тільки MPEG-4).

Part

Використання секціонування даних (тільки MPEG-4).

Bug параметра

Обходити помилки кодувальника, які автоматично не виявлені.

Strict суворості

Як суворо дотримуватися стандартів.

Включити розширені всередині кодування (h263+).

Включити Необмежені вектори руху (h263+)

Deinterlace

Deinterlace фотографії.

Ilme

Група підтримки в переплетенні кодера (тільки MPEG-2 та MPEG-4). Використовуйте

Цю опцію, якщо вхідний файл із черезрядковою розгорткою або ви хочете зберегти

Черезрядковий формат із мінімальними втратами. Альтернативою є

Деінтерлейсинг вхідного потоку з -deinterlace, але деінтерлейсингу

Вводить втрат.

Vstats

Дамп кодування відео статистики vstats_HHMMSS.log.

Vstats_file файл

Дамп кодування відео статистики у файл.

Top N

Вгорі = 1/bottom = 0/auto =- 1 поле перше

Dc точності

Intra_dc_precision.

Vtag FourCC / теги

Викличте відео теги / FourCC.

Qphist

Показати QP гістограми.

Vbsf bitstream_filter

Bitstream_filter є:

Dump_extra

Remove_extra

Noise

H264_mp4toannexb

Imxdump

Mpegadump

*Аудіо Функції*

Aframes aframes

Встановіть кількість кадрів аудіо запису.

Ar частота

Встановіть частоту дискретизації звуку (за промовчанням = 44100 Гц).

Ab бітрейт

Встановити аудіо бітрейт у біт/с (за замовчуванням = 64K).

Aq Q

Встановіть якість звуку (кодек конкретних, VBR).

Ac канали

Встановіть кількість аудіо каналів (за промовчанням = 1).

An Вимкнути запис звуку.

Acodec кодек

Група аудіо-кодек для кодека. Використовуйте "copy" особливе значення для вказівки

Що RAW Codec дані мають бути скопійовані, як є.

Newaudio

Додати нову звукову доріжку у вихідний файл. Якщо ви хочете задати

Параметрів, зробити це треба приблизно так: "-newaudio" ("-acodec", "-ab" і т.д..).

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

Дорівнює числу вхідних потоків, інакше він вибиратиме до першого збігу.

Ви можете змінити відображення за допомогою "-map"

Як зазвичай.

Приклад:

FFmpeg -i file.mpg -vcodec copy -acodec AC3 -ab 384k test.mpg -acodec MP2

Ab 192K-newaudio

Alang-код

Встановіть ISO 639 код мови (3 літери) поточного аудіо

Потік.

Advanced Audio варіантів:

Atag FourCC / теги

Група аудіо тег / FourCC.

Absf bitstream_filter

Bitstream_filter є:

Dump_extra

Remove_extra

Noise

Mp3comp

Додані можливості:

Scodec

Група субтитрів кодеків ("copy", щоб скопіювати потік).

Newsubtitle

Додати новий потік субтитрів на вихідний потік.

Alang код

Встановіть ISO 639 код мови (3 літери) з поточного рядка

Потоку.

Sn Вимкнення запису субтитрів.

Sbsf bitstream_filter

Bitstream_filer є:

Mov2textsub

Text2movsub

Ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt_

* Аудіо / Відео варіанти захоплення *

Vc канал

Встановити відеозахоплення (тільки DV1394).

Tvstd стандарт

Встановіть стандарт телебачення (NTSC, PAL (SECAM)).

Isync

* Додаткові параметри:*

Map input_stream_id [:sync_stream_id]

Встановити потік відображення вхідних потоків у вихідні потоки. Просто enu

Merate вхідних потоків у порядку, ви хочете їх на виході.

Sync_stream_id якщо вказані множини вхідного потоку для синхронізації проти.

Map_meta_data OUTFILE: INFILE

Перенесення мета-даних інформації від INFILE до OUTFILE.

Debug

Друкувати конкретну інформацію налагодження.

Benchmark

Показати порівняння інформації наприкінці кодування. Показує процесор

Час використовується і максимальне споживання пам'яті. Максимальний обсяг пам'яті споживання,

(Не підтримується на всіх системах). Якщо він не підтримується, видається як 0.

Dump

Дамп кожного вхідного пакета.

Використовується коли потрібне скидання пакетів, а також звалища корисного навантаження.

Bitexact

Використовується лише трохи точні алгоритми для тестування кодека.

Ps Розмір

Встановити RTP розмір корисного навантаження в байтах.

Пристрої.

Loop_input

Цикл для входу. В даний час він працює тільки для потоків

Зображення. Ця опція використовується для автоматичного тестування ffserver.

Loop_output number_of_times

Неодноразові петлі виходу для форматів, які підтримують цикли, такі як

Амінування GIF (0 буде петлі виходу нескінченно).

Threads кіл

Нитки

VSync параметр

Відео метод синхронізації:

0 Кожен кадр та його мітка передається від демультиплексора на мультиплексор

1 Кадри будуть дублюватися та викидатися для досягнення постійної частоти кадрів.

2 Кадри проходять через свої мітки або викидаються щоб запобігти проходженню 2х

Кадрів через одну мітку.

1 Вибирає між 1 та 2 залежно від можливостей мультиплексора

Ви можете вибрати, з якого потоку мітки і вони повинні бути

Прийнято. Ви можете залишити або відео або аудіо без змін та синхронізації

Інші потік (ів) до незмінних.

Async samples_per_second

Аудіо метод синхронізації."Розширює / стискає" аудіо потік у сеансі мітки,

Значення максимальної кількості відліків за секунду, в які звук змінювався.

Async 1 є окремим випадком, де змінюється тільки початковий аудіо потік без

Будь-яких подальших змін

Copyts

Копіювати відмітки від входу до виходу.

Shortest

Готове кодування при найкоротшому вхідному потоку закінчується.

Dts_delta_threshold

Timestamp розриву дельта порога.

Muxdelay секунд

Встановити максимальну затримку демультиплексування-декодування.

Muxpreload секунд

Встановити початкову затримку демультиплексування-декодування.

Current файлів

Заданий файл містить послідовність пари параметр = значення, по одному для кожної

Лінії, із зазначенням послідовності варіантів, які б незручно лягали

У командному рядку. Рядки, що починаються з символу ('#') хеш

Ігноруються та використовуються для коментарів. Перевірте ffpresets

Каталог у дереві FFmpeg джерело прикладів.

Поточних файлів вказані з "vpre", "apre", "spre" та "fpre"

Варіанти. "Fpre" опція має ім'я файлу з попередньо встановлених замість

Ім'я шаблону як вхідні дані і може бути використаний для будь-якого виду кодека. Для

"Vpre", "apre", і "spre" опції, параметри, вказані в заданому

Файл застосовуються для вибраного кодека типу,

Заданої опції.

Аргумент, що передається "vpre", "apre", і "spre" встановлених параметрів

Визначає заданий файл для використання відповідно до таких правил:

Перший FFmpeg пошук файлу з ім'ям arg.ffpreset у каталогах

$ HOME / .ffmpeg, і в DATADIR визначено під час конфігурації (зазвичай-

Союзник PREFIX / частки / FFmpeg) в такому порядку. Наприклад, якщо аргумент

Є "libx264-макс", він шукатиме файл libx264-max.ffpreset.

Якщо такий файл знайдено, то FFmpeg шукатиме файл з ім'ям

Codec_name-arg.ffpreset у вищезгаданих каталогів, де

Codec_name це назва кодека для яких встановлено параметри файлу

Застосовуватиметься. Наприклад, якщо ви вибираєте відео кодек

"-Vcodec libx264" і використовувати "vpre-макс", то він буде шукати файл

Libx264-max.ffpreset.

@ Якір (FFmpeg формула оцінювача)

FFmpeg формула оцінювача

При оцінці рядка контролю швидкості, FFmpeg використовує внутрішні формули

За оцінкою.

Наступні бінарні оператори доступні: "+", "-", "*", "/", "^".

Наступні унарні оператори доступні: "+", "-", "(...)".

Наведені нижче інструкції доступні: "LD", "ST", "а".

Доступні такі функції:

Sinh (х)

Cosh(х)

Tanh (х)

Sin (х)

COS (X)

Тan(х)

Atan(х)

Asin (х)

Acos (х)

Ехр (х)

Log(х)

Abc (X)

Squish (х)

Gauss (х)

Mod (х, у)

Мах (х, у)

Мin (х, у)

Eq (х, у)

Gte (х, у)

Gt (х, у)

Lte (х, у)

Lt (х, у)

Bits2qp (біти)

Qp2bits (QP)

Наступні константи доступні:

ITex

PTex

FCode

ICount

McVar

AvgQP

QComp

AvgIITex

AvgPITex

AvgPPTex

AvgBPTex

AvgTex

ПРИКЛАДИ

Відео та аудіо захоплення

FFmpeg можете захопити відео та аудіо з пристроїв за умови, що ви вкажете

Формат вхідних та пристрої.

Ffmpeg -f OSS -i /dev/DSP -f video4linux2 -i /dev/video0 /tmp/out.mpg

Зверніть увагу, що ви повинні активувати права джерела відео та каналу до

Запуск ffmpeg з будь-якого телеглядача, таких як XawTV (

Sex.org / XawTV />) Герд Knorr. Ви також повинні встановити аудіо записів

ING рівні правильно з стандартного мікшера.

X11 захоплення

Ffmpeg -f x11grab -x CIF -i: 0,0 /tmp/out.mpg

Змінне середовище.

Ffmpeg -f x11grab -x CIF -i: 0.0 +10,20 /tmp/out.mpg

0,0 представляє display.screen номер вашого сервера X11, так само як DISPLAY

Змінне середовище. 10, X-зміщення та 20 Y-зміщення для

Захоплення.

Відео та аудіо файлів формату перетворення

* FFmpeg можна використовувати в будь-якому з підтримуваних форматів файлів і протоколів як вхідні дані:

Приклади:

* Ви можете використовувати YUV файли як вхідні дані:

Ffmpeg -i /tmp/випробування %d.Y /tmp/out.mpg

Вона використовуватиме файли:

/ Tmp/test0.Y, / tmp/test0.U, / tmp/test0.V,

/ Tmp/test1.Y, / tmp/test1.U, / tmp/test1.V, і т.д. ..

У файлів використовувати вдвічі дозвіл U і V файлів. Вони сировини

Файлів без заголовка. Вони можуть бути викликані всі порядні відео

Декодерів. Ви повинні вказати розмір зображення з S-варіант, якщо

FFmpeg не може здогадатися.

* Ви можете ввести від сировини файл YUV420P:

Ffmpeg -i /tmp/test.yuv /tmp/out.avi

Test.yuv це файл, який містить сировини плоских YUV даних. Кожен кадр COM-

Поставлені у площині Y слідують U та V літаків на половині вертикальної

І горизонтальна роздільна здатність.

* Ви можете вивести на сировину файл YUV420P:

Ffmpeg -i mydivx.avi hugefile.yuv

* Ви можете встановити кілька файлів вхідних та вихідних файлів:

FFmpeg -i /tmp/a.wav -х 640x480 -i /tmp/a.yuv /tmp/a.mpg

Конвертує аудіо a.wav файл та сировини відео YUV файл a.yuv у MPEG

файл a.mpg.

* Ви також можете зробити аудіо- та відео-перетворення в той же час:

Ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2

Перетворює а.wav аудіо MPEG за частоти дискретизації 22050 Гц.

* Ви можете кодувати кілька форматів в той же час і визначити карту-

Пінг із вхідного потоку у вихідний потоки:

Ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0, 0:0 -map

Перетворює a.wav до a.mp2 при 64 кбіт і b.mp2 на 128 кбіт. '-map

Файл: індекс "вказує, які вхідні потоки використовуються для кожного виходу

Потік з метою визначення вихідних потоків.

* Ви можете перекодувати розшифровані VOB-файли:

Ffmpeg -i snatch_1.vob -f AVI -vcodec MPEG4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi

Це типовий приклад копіювання DVD; вхід файл VOB,

Вихідний файл AVI з MPEG-4 відео та MP3 аудіо. Зазначимо, що в цьому

Команда використовується в B-кадрах так MPEG-4 потік DivX5 сумісні, і

Республіканська партія розмір становить 300, що означає один усередині кадру кожні 10 секунд

29.97fps відеовхід. Крім того, аудіопотік MP3-кодованих так

Вам необхідно включити підтримку LAME, передавши "- включити -libmp3lame" до

Налаштувати. Відображення особливо корисна для DVD транскодування в

Отримати бажану мову аудіо.

ПРИМІТКА: Щоб побачити підтримувані вхідні формати, використовуйте формати FFmpeg.

* Ви можете витягувати зображення з відео, або створити відео з багатьох

Зображення:

Для вилучення зображень з відео:

Ffmpeg -i foo.avi -r 1 -s WxH -f -image2 Foo% 03d.jpeg

Це дозволить витягти один кадр на секунду з відео і буде

Вихід в файли з ім'ям Foo-001.jpeg, Фу-002.jpeg і т.д. Зображення будуть

Бути перераховані для підходять нові значення WxH.

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

Вище команди в поєднанні з -vframes або -t варіант, або в ком-

Бінації -ss почати витяг з певного часу.

Для створення відео з багатьох зображень:

Ffmpeg -f image2 -i -foo -%03d.jpeg -r 12 WxH foo.avi

Синтаксис "foo-03d.jpeg%" вказує на використання десяткового номера, що складається

Із трьох цифр доповнюються нулями, щоби виразити порядковий номер. Це

Це ж синтаксис підтримується функція ЕС, але тільки формати

Приймати нормальне ціле підходять.

* Ви можете помістити багато потоків того ж типу, на виході:

Ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy

Acodec copy test12.avi-newvideo-newaudio

На додаток до перших відео та аудіо потоків, в результаті виходу

Test12.avi файл буде містити друге відео та другий аудіо

Потік знайти у списку вхідних потоків.

"Newvideo", "-newaudio" та "-newsubtitle" варіанти повинні бути

Вказаного відразу після імені вихідного файлу, до якого ви

Бажаєте додати їх.

ТАКОЖ

Ffserver (1), ffplay (1) та документації HTML з FFmpeg.

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

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

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

Отримуємо інформацію про файл

ffmpeg -i file.mp4

Тут все просто, вводимо шлях до файлу, отримуємо інформацію про нього: кодеки, кількість доріжок, роздільну здатність, бітрейт та фреймрейт. Ми вказуємо шляхи до файлів прапором -i (input):

I file1.mp4 -i file2.mp4.

Конвертуємо у mp4

Допустимо у нас є сайт, на якому відео програвалося через Flash плеєр. Ми хочемо змінити його на HTML5 Video. Для цього конвертуємо відео файли на сервері з формату flv в mp4.

  • output.mp4 - шлях до конвертованого файлу.
  • -vcodec libx264 - вказуємо який відео кодек хочемо отримати. У нашому випадку це H264, який підтримується більшістю браузерів.
  • -acodec libvo_aacenc - аудіо кодек AAC.

Список підтримуваних ffmpeg кодеків можна отримати через ffmpeg -codecs .

Замість -vcodec зустрічається запис -codec:v та -c:v. Якщо не вказати кодеки для конвертації ffmpeg-i flashvideo.flv output.mp4, то ffmpeg встановить дефолтні кодеки для формату файлу на виході.

При конвертації задають не лише кодеки. Збільшимо кількість налаштувань:

Ffmpeg -i flashvideo.flv -b:v 700k -r 25 -pix_fmt yuv420p-vcodec libx264 \ -b:a 128k -ar 44100-acodec libvo_aacenc -y output.mp4

Ми встановили бітрейт для відео -b:v та аудіо -b:a у 700 та 128 кб/c. Бітрейт можна позначити іншими прапорами: -vb та -b для відео або -ab для аудіо.

Три параметри, що залишилися, - це фреймрейт -r 25 в кадрах в секунду, колірна модель YUV дорівнює звичайному значенню yuv420p і частота дискретизації звуку 44100 Гц. Прапор -y потрібний для перезапису файлу, якщо він уже існує.

Вирізаємо фрагмент відео

ffmpeg -ss 10 -t 20-i source_video.mp4 -vcodec copy -acodec copy result.mp4

Прапором -ss вказуємо з якого моменту вихідного відео обрізаємо, -t - тривалість. На виході ми отримаємо двадцяти секундне відео, яке розпочнеться з десятої секунди вихідного. Запис -ss 00:00:10.250 -t 00:00:20.120 знадобиться для більш точного проміжку часу. До версії 2.1 FFmpeg в обох випадках обрізав відео за найближчим ключовим кадром. У нових версіях підсумкове відео максимально близьке до вказаного інтервалу.

Ми додали -vcodec copy -acodec copy щоб зберегти кодеки вихідного відео. Інакше ffmpeg перекодував би їх у кодеки за промовчанням. Наразі відео не перекодується і команда виконається швидко. Далі спростимо цей запис прапором -c copy.

Якщо розташувати прапори -ss і -t після вхідного відео, то підсумкове відео буде таким самим, але команда виконуватиметься довше. Прапори будуть відноситися до підсумкового відео і FFmpeg декодуватиме фрагмент відео до -ss. У першому випадку ця частина буде проігнорована.

Прапор -t можна замінити на -to, вказавши замість тривалості кінцеву точку. Цей прапор не можна застосувати до вхідного відео:

Ffmpeg -ss 10 -i source_video.mp4 -to 30 -c copy result.mp4

Команда дала нам інший результат: тридцяти секундне відео із десятої секунди вихідного. Це сталося, тому що -to використовував тимчасову шкалу result.mp4, тридцята секунда на якому дорівнює сороковій секунді source_video.mp4. Щоб використовувати вихідну шкалу, додамо прапор -copyts. Так ми отримаємо таке саме відео, як від першої команди:

Ffmpeg -ss 10 -i source_video.mp4 -to 30 -copyts-c copy result.mp4

Фільтри. Змінюємо дозвіл

Один з найпотужніших інструментів ffmpeg – фільтри. Вони можуть додавати ефекти, накладати різні відео один на одного, зшивати кілька файлів один. Побачити список встановлених фільтрів ми можемо за командою ffmpeg-filters. Змінимо з їх допомогою роздільну здатність відео:

Ffmpeg -i source_video.avi -vf scale=640:480 source_preview.avi

Ми використовували прапор -vf, вказавши фільтр scale та роздільну здатність 640:480. Цей фільтр може зберігати пропорції та обчислювати роздільну здатність динамічно.

Об'єднання фільтрів. Прискорюємо відтворення

ffmpeg -i source_video.mp4 \ -filter_complex "setpts=0.5*PTS;atempo=2.0" accelerated.mp4

Ми об'єднали кілька фільтрів в один прапор filter_complex і отримали прискорений в два рази файл. Щоб розібратися застосуємо фільтри поодинці.

Ffmpeg -i source_video.mp4 -vf setpts=0.5*PTS accelerated_video.mp4

Ми прискорили відтворення відео доріжки фільтром setpts. Однак аудіодоріжка не змінилася, і файл вийде тієї ж тривалості, що й був: відео програється в 2 рази швидше, а останній кадр висітиме всю другу половину файлу. Якщо прибрати аудіо доріжку прапором -an , то тривалість підсумкового файлу визначатиметься по відео доріжці і буде вдвічі меншою за вихідну.

Навпаки, якщо потрібне лише прискорене аудіо без відео, скористаємося фільтром atempo, а прапором vn приберемо відео доріжку.

Ffmpeg -i source_video.mp4 -af atempo=2.0 -vn accelerated_audio.mp3

Додавши filter_complex і застосувавши обидва фільтри, ми прискорили файл повністю.

Виконаємо ту саму операцію іншим методом:

Ffmpeg -f concat-i list.txt -c copy output.mp4

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

Вміст list.txt:

File "input1.mp4" file "input2.mp4"

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

Але перший метод застосовується найчастіше. По-перше, він може прийняти на вхід відео з різними кодеками. По-друге, дає більшу гнучкість. Наприклад, якщо потрібна лише частина першого відео, ми можемо скористатися прапорами -ss та -t. Зверніть увагу, ці прапори діють лише на перший файл input1.mp4.

Ffmpeg -ss 5 -t 2 -i input1.mp4 -i input2.mp4 \-filter_complex "concat=n=2:v=1:a=1[v][a]" \-map "[v]" - map "[a]" -y result.mp4

Водяний знак

Останній приклад, який ми розглянемо – це накладення водяного знака. Фільтр overlay приймає на вхід координати розташування водяного знака на підсумковому відео.

Розташуємо водяний знак по центру. Знаючи розмір вихідного відео та png картинки, можна обчислити координати самим. Наприклад при відео 1280 720 і водяному знаку 200 200, положення по горизонталі x = (1280 - 200) / 2 = 540 і по вертикалі y = (720 - 200) / 2 = 260 . Відповідно значення фільтра "overlay=540:260" . Однак зручніше написати універсальну команду, щоб ffmpeg порахував усе за нас. Розмір відео отримаємо з параметрів main_w і main_h, а водяного знака з overlay_w та overlay_h. Далі ту формулу, за якою ми обчислювали координати запишемо значення фільтра "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" . Готово ми отримали команду для накладання водяного знака по центру:

Ffmpeg -i source_video.mp4 -i watermark.png \-filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2"\-codec:a copy video_protected.mp4

Твітнути

Від перекладача:
Багато хто знає, що ffmpeg – це сила, але не всі знають, яка саме. Він багатогранний і безмежний, яке man об'ємний і місцями малозрозумілий, лише мало хто збагнув дао професійної роботи з ним. Проте цей інструмент може бути корисним майже всім, хто хоч іноді працює з відео і звуком, навіть на побутовому рівні. Про деякі корисні консольні команди ffmpeg і йтиметься у статті. У деяких місцях я взяв на себе сміливість вставити посилання на статті, що пояснюють.

Ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
Формат PAL:

Ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg

18. Стиснути.avi у VCD mpeg2
Формат NTSC:

Ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
Формат PAL:

Ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg

19. Багатопрохідне кодування за допомогою ffmpeg
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
Примітка перекладача:
Пропоную в коментарях навести й інші корисні команди ffmpeg, адже їх набагато більше, ніж 19. ;)