Получение информации о видео файле с помощью ffprobe
Для получения разнообразной информации о видео файле: длительности, о количестве, видах и свойствах потоков, можно использовать программу , она обычно устанавливается вместе с FFmpeg.
Получить информацию о потоках в формате, удобном для программного разбора, можно такой командой:
Будет выведена примерно такая информация:
Информация о каждом потоке начинается со строки .
Тип потока определяется по строке .
Также нужно обратить внимание, что частота кадров определяется в виде дроби. — это частота кадров из метаданных потока, а — это частота, полученная делением количества кадров на длительность потока
Отдельно нужно рассмотреть определение длительности видео.
То, что выводится в информации о потоках — это длительность, записанная в метаданных потока, она иногда может отсутствовать или быть неправильной.
Для определения правильной длительности файла можно использовать команду:
Результатом будет длительность в секундах:
ffmpeg hide_banner
- 軟體兄弟
- ffmpeg vframes
- 文章資訊
Summary of the bug: ffmpeg default output is confusing for new users. It there anything so important in the banner that it should be shown for every user and that … , 15 FFMPEG Command Examples in Linux. For more … ffmpeg -i video.flv -hide_banner … ffmpeg -f image2 -i image%d.jpg imagestovideo.mpg.,If you don’t want to see the FFmpeg banner and other details, but only the media file information, use -hide_banner flag like below. $ ffmpeg -i video.mp4 — … ,-hide_banner. Suppress printing banner. All FFmpeg tools will normally show a copyright notice, build options and library versions. This option can be used to … , ffmpeg -hide_banner -c:v 视讯解码器 -c:a 音讯解码器 -f 多工解讯器 -i 输入 … 通常不需要用到此选项,因为ffmpeg 会依据输出/入副档名自动判断。, ffmpeg -hide_banner -c:v 視訊解碼器-c:a 音訊解碼器-f 多工解訊器-i 輸入檔-c:v 視訊編碼器-c:a 音訊編碼器-f 多工器輸出檔 通常不需要手動指定
注意! 請解除 AdBlock 的阻擋廣告,才可以瀏覽完整網頁資訊…
相關軟體 FFmpeg 資訊 |
---|
FFmpeg 是領先的多媒體框架,能夠解碼,編碼,轉碼,多路復用,解復用,流,過濾器,並發揮人類和機器創造的任何東西。它支持最尖端的古代格式。無論是由某個標準委員會,社區或企業設計的.8997423 選擇版本:FFmpeg 3.4.1(32 位)FFmpeg 3.4.1(64 位) FFmpeg 軟體介紹 ffmpeg hide_banner 相關參考資料 #7211 (Make -hide_banner the default) – FFmpeg Summary of the bug: ffmpeg default output is confusing for new users. It there anything so important in the banner that it should be shown for every user and that … https://trac.ffmpeg.org 15 Useful 'FFmpeg' Commands for Video, Audio and Image … 15 FFMPEG Command Examples in Linux. For more … ffmpeg -i video.flv -hide_banner … ffmpeg -f image2 -i image%d.jpg imagestovideo.mpg. https://www.tecmint.com 20+ FFmpeg Commands For Beginners — OSTechNix If you don't want to see the FFmpeg banner and other details, but only the media file information, use -hide_banner flag like below. $ ffmpeg -i video.mp4 - … https://www.ostechnix.com ffmpeg Documentation -hide_banner. Suppress printing banner. All FFmpeg tools will normally show a copyright notice, build options and library versions. This option can be used to … https://ffmpeg.org FFmpeg 常用选项功能说明(视频专家地址)_lishenglong666的 … ffmpeg -hide_banner -c:v 视讯解码器 -c:a 音讯解码器 -f 多工解讯器 -i 输入 … 通常不需要用到此选项,因为ffmpeg 会依据输出/入副档名自动判断。 https://blog.csdn.net FFmpeg 常用選項功能說明- Mobile01 ffmpeg -hide_banner -c:v 視訊解碼器-c:a 音訊解碼器-f 多工解訊器-i 輸入檔-c:v 視訊編碼器-c:a 音訊編碼器-f 多工器輸出檔 通常不需要手動指定 … https://www.mobile01.com ffplay Documentation — FFmpeg -hide_banner. Suppress printing banner. All FFmpeg tools will normally show a copyright notice, build options and library versions. This option can be used to … https://www.ffmpeg.org ffprobe Documentation — FFmpeg -hide_banner. Suppress printing banner. All FFmpeg tools will normally show a copyright notice, build options and library versions. This option can be used to … https://ffmpeg.org How can I make ffmpeg be quieterless verbose? — Super User ffmpeg -hide_banner -loglevel panic. This is alluded to in a comment below the current answer. The option -hide_banner was introduced in late 2013 … https://superuser.com Why `-hide_banner` for `ffmpeg` is not the default? — Super User From https://trac.ffmpeg.org/ticket/7211#comment:1: -hide_banner is the bane of those providing help. Making it the default would make … https://superuser.com |
3 ответа
Лучший ответ
По умолчанию FFmpeg будет пытаться перекодировать ввод, даже если вы не используете никаких параметров, связанных с кодированием.
Если вы хотите просто скопировать поток как есть, попробуйте использовать функцию streamcopy:
Копируя входящие потоки, вы можете полностью пропустить процесс кодирования.
Итак, ваша команда будет выглядеть так:
(Не уверен, что это сработает.)
Когда вам нужно перекодировать входящий поток, вы должны добавить некоторые параметры кодирования в команду.
По умолчанию ffmpeg пытается сопоставить исходные параметры и качество, которые не всегда самые оптимальные в реальных приложениях.
«Очень быстрые, сверхбыстрые и сверхбыстрые» пресеты h264 — хорошее начало для повышения производительности.
Вы также можете поиграть с кодированием CRF (коэффициент постоянной скорости), более высокими битрейтами и т. Д.
Подробнее о кодировании H264: https://trac.ffmpeg.org/wiki/Encode/H. 264
16
JakeGould
18 Фев 2019 в 02:02
Хотя этот вопрос уже считается ответом, я полагаю, что в нем нет ответа, который не включает настройку параметров команды и, тем не менее, может использоваться с другими инструментами или командами, а не только с FFmpeg.
Инструмент CPUlimit предназначен именно для этой цели и будет эффективно работать не только для FFmpeg, но и для любых других ресурсоемких процессоров. Процесс, который вы хотите уменьшить использование этого ресурса.
Наиболее важным аргументом CPUlimit является , который позволяет вам указать процент CPU, который процессу будет разрешено использовать (в качестве его верхнего предела).
Также обратите внимание, что этот предел зависит от количества процессоров / ядер / потоков, которые есть на машине, например, если на машине установлено 8 процессоров, допустимые значения CPULimit будут в диапазоне от 0 до 800 (0 — бесполезно, конечно, и 800 означает не ограничивать процесс вообще, так как 800% означает всю производительность машины). Пример использования половины емкости для компьютера с 8 процессорами:
Пример использования половины емкости для компьютера с 8 процессорами:
Надеюсь, что это поможет для этого конкретного вопроса, а также аналогичные потребности в будущем.
Обновление: 2020/04/19
Исходный проект CPUlimit, похоже, перешел на github и теперь поддерживается пользователем здесь . Я оставляю исходную ссылку, потому что новый проект должен быть скомпилирован и не предлагает бинарную загрузку.
Кроме того, что касается исходного вопроса, если вы пытаетесь ограничить сценарий bash (или все, что разветвляется на дочерний процесс), обязательно добавьте параметр или и укажите местоположение сценария. если это не в PATH.
Пример обновления:
12
Buddacow
20 Апр 2020 в 11:17
Чтение ввода с частотой кадров. В основном используется для имитации устройства захвата или живого потока ввода (например, при чтении из файла). Не следует использовать с реальными устройствами захвата или живыми входными потоками (где это может привести к потере пакетов).
По умолчанию FFmpeg пытается читать ввод (ы) как можно быстрее. Эта опция замедлит чтение входных данных до исходной частоты кадров входных данных. Это полезно для вывода в реальном времени (например, прямой эфир).
4
JakeGould
18 Фев 2019 в 02:03
Как пользоваться ffmpeg
Как я уже сказал, утилита ffmpeg поддерживает большинство аудио и видео форматов. Чтобы проверить какие форматы поддерживаются вы можете выполнить:
Если вы новичок в использовании этого инструмента, то вот некоторые команды, которые могут вам очень сильно помочь. Дальше вы узнаете как пользоваться ffmpeg.
1. Получить информацию о видео
Чтобы получить доступную информацию о видео, достаточно просто указать файл источника. Выполните такую команду:
Опция -hide_banner указывает программе, что не нужно показывать информацию о себе, опции сборки и так далее. Вы можете выполнить команду без этой опции, тогда получите всю информацию, в том числе и об ffmpeg:
2. Разбить видео на кадры
Чтобы разбить видео на изображения подойдет такая команда:
Утилита сгенерирует изображения с именами image1.jpg, image2.jpg, image3.jpg и так далее. После завершения вы найдете очень большое количество изображений в папке с видео.
3. Собрать видео из изображений
Вы можете взять полученный набор картинок и собрать все обратно в видео. Для этого выполните:
Опция -f задает формат входного файла, вы можете использовать jpeg, png, jpg и другие картинки. И вы уже знаете как посмотреть поддерживаемые форматы ffmpeg.
4. Вытянуть звук из видео
Чтобы конвертировать видео в mp3 выполните команду:
Вот описание новых опций:
- -vn — не обрабатывать видео, вся видео информация будет отброшена;
- -ar — частота дискретизации, измеряется в герцах, чем больше, тем лучше качество звука;
- -ab — устанавливает битрейт аудио;
- -ac — устанавливает количество каналов;
- -f — указывает формат полученного файла.
6. Преобразовать видео в gif
Таким же самым образом можно переделать видео в анимированную gif картинку:
Мы не указываем кодеки ffmpeg и формат, потому что программа может их сама определить по расширению.
Чтобы конвертировать видео mpg в flv выполните:
Здесь мы уже задали битрейт и формат.
8. Преобразовать avi в mpeg
Для этого выполните команду:
Использованные опции:
- -target pal-dvd — формат исходящего файла;
- -ps 2000000000 — максимальный размер полученного файла;
- -aspect 16:9 — соотношение сторон экрана.
9. Конвертировать видео в CD или DVD формат
Чтобы выполнить конвертирование ffmpeg видео в формат DVD, нужно задать ваш формат с помощью опции -target. Доступны такие форматы: vcd, svcd, dvd, dv, pal-vcd или ntsc-svcd. Чтобы создать VCD выполните:
11. Увеличить/уменьшить скорость видео
Чтобы увеличить скорость воспроизведения видео мы будем использовать фильтры, с помощью опции -vf. За скорость отвечает фильтр setpts. Например:
А так можно уменьшить скорость:
12. Вырезать прямоугольник из видео
Для того чтобы вырезать определенный участок кадра из видео тоже используются фильтры. На этот раз фильтр crop:
- out_w — ширина нужного прямоугольника;
- out_h — высота нужного прямоугольника;
- x,y — задают координаты прямоугольника от начала видео.
Например, обрежем прямоугольник размером 80х60 от позиции 100х200:
Кроме этих опций, здесь можно задавать кодеки ffmpeg и форматы, чтобы параллельно выполнить кодирование ffmpeg.
13. Обрезать видео
Тут уже фильтры нам не помогут, но зато мы можем указать опциями из какого момента нужно начать и где завершить, например:
Начинаем от минуты и пишем еще минуту:
- -ss задает время на видео, из которого стоит начать запись;
- -t задает время когда запись нужно завершить относительно ss;
- -с задает кодеки для аудио и видео, в нашем случае просто копировать файлы, ничего не перекодируя.
15. Проиграть видео
Вы можете быстро проиграть видео, чтобы оценить его качество, для этого есть команда:
Программа открывает и видео, и аудио.
16. Фото-баннер для аудио
Вы можете добавить фото баннер к вашей аудио записи с помощью следующей команды:
Рассмотрим опции:
- -loop — задает, что нужно всегда повторять оду и ту же картинку;
- -i — задают входящие файлы, картинку и аудиофайл;
- -с:v — задает видеокодек, эквивалентно -vc;
- -c:a — задает аудиокодек, эквивалентно -ac;
- -b:a — задает битрейт аудио, эквивалентно -ab;
- -strict experimental — кодек aac для ffmpeg экспериментальный, поэтому чтобы его использовать нужна эта опция.
17. Добавить субтитры к видео
Если у вас есть отдельный файл субтитров, например с именем subtutle.srt, вы можете использовать такую команду, чтобы добавить его к видео:
Файлы DASH
Здесь будет описываться только некоторая часть формата DASH для VOD (Video-on-Demand), для LIVE-трансляций файлы и описания могут быть другими.
Формат DASH определяет три типа файлов:
- Файл описания (media presentation description, mpd)
- Сегменты инициализации
- Сегменты данных
Файл описания , созданный FFmpeg с параметрами, описанными выше, будет выглядеть так:
Это файл XML, в котором представлены основные параметры видео и аудио — общая продолжительность, количество потоков, форматы и имена файлов сегментов.
В файле можно выделить такие сведения:
- — общая продолжительность видео
- — ожидаемая длина сегмента (см. параметр выше)
-
— группировка потоков аудио и видео.
В данном случае, в одной группе находятся потоки, полученные из перекодирования одного и того же исходного потока — например здесь сгруппированы видео с разным битрейтом.
Аудио-поток находится в отдельной группе и, если в исходном файле было бы несколько потоков, то в mpd каждый находился бы в своей группе.
Также в AdaptationSet описывается тип потока и некоторые общие сведения (например соотношение сторон и частота кадров для видео). -
— описывает один поток.
Здесь описывается тип потока, кодек, битрейт, для видео — размеры изображения, для аудио — частота дискретизации. -
— описывает, как хранятся файлы сегментов потока:
— номер потока,
— шаблон имени сегмента инициализации (см. параметр ),
— шаблон имени файла с данными (см. параметр ).
Файлы … — это сегменты инициализации — они для каждого потока хранят информацию о кодеке (данных аудио и видео в них нет).
Сегменты инициализации скачиваются перед началом воспроизведения потока.
Файлы вида — это сегменты с данными, они хранят данные для каждого потока видео или аудио.
Формат этих файлов определяется выбранным типом контейнера (см. параметр ).
В каждом файле хранится фрагмент видео или аудио длиной около (в данном примере 10 секунд).
Эти файлы по отдельности могут не воспроизводиться обычными плеерами, т.к. они могут не содержать сведения о кодеке (которые находятся в сегменте инициализации).
Проанализировав файлы и их содержимое можно предположить, что вместо многократного полного перекодирования исходного файла можно попробовать создавать нужные файлы по запросу.
Т.е. содержимое файла mpd и сегментов инициализации известно заранее, и их можно быстро сгенерировать.
А сегменты с данными можно попробовать получать перекодировав только часть исходного файла (длиной в один сегмент).
Этот подход будет описан в следующих разделах.
2 Description
ffprobe gathers information from multimedia streams and prints it in
human- and machine-readable fashion.
For example it can be used to check the format of the container used
by a multimedia stream and the format and type of each media stream
contained in it.
If a url is specified in input, ffprobe will try to open and
probe the url content. If the url cannot be opened or recognized as
a multimedia file, a positive exit code is returned.
ffprobe may be employed both as a standalone application or in
combination with a textual filter, which may perform more
sophisticated processing, e.g. statistical processing or plotting.
Options are used to list some of the formats supported by ffprobe or
for specifying which information to display, and for setting how
ffprobe will show it.
ffprobe output is designed to be easily parsable by a textual filter,
and consists of one or more sections of a form defined by the selected
writer, which is specified by the print_format option.
Sections may contain other nested sections, and are identified by a
name (which may be shared by other sections), and an unique
name. See the output of sections.
Metadata tags stored in the container or in the streams are recognized
and printed in the corresponding «FORMAT», «STREAM» or «PROGRAM_STREAM»
section.
Что такое ffmpeg?
ffmpeg — это один из лучших мультимедийных фреймворков, который содержит различные инструменты, для решения разных задач. Например, ffplay — портативный медиа плеер, утилита ffmpeg может использоваться для обработки и инвертирования файлов, ffserver — для потоковой передачи данных, а ffprobe может анализировать мультимедийный поток.
В набор ffmpeg, кроме утилит, входят такие библиотеки: libavutil libavcodec libavformat libavdevice libavfilter libavresample libswscale libswresample libpostproc. Из-за своей архитектуры, этот набор инструментов очень безопасный, и с помощью него вы можете сделать почти все что угодно с видео или аудио. В этой статье мы будем рассматривать в основном утилиту ffmpeg. Давайте рассмотрим ее синтаксис:
$ ffmpeg -i
- Опции источника — указывают параметры чтения файла, настройки и так далее;
- Источник — опция -i задает источник, откуда будет читаться файл, источников может быть несколько и это может быть не только файл, но и устройство;
- Основные опции — задают параметры работы всей утилиты;
- Кодеки — кодек, который будет использоваться для сохранения видео и аудио;
- Преемник — файл или устройство, куда будут записаны данные.
Сейчас мы не будем подробно рассматривать опции, рассмотрим их потом, уже в самих командах.
ПОЛЕЗНЫЕ КОМАНДЫ FFMPEG
Как я уже сказал, утилита ffmpeg поддерживает большинство аудио и видео форматов. Чтобы проверить какие форматы поддерживаются вы можете выполнить:
Если вы новичок в использовании этого инструмента, то вот некоторые команды, которые могут вам очень сильно помочь. Дальше вы узнаете как пользоваться ffmpeg.
1. ПОЛУЧИТЬ ИНФОРМАЦИЮ О ВИДЕО
Чтобы получить доступную информацию о видео, достаточно просто указать файл источника. Выполните такую команду:
Опция -hide_banner указывает программе, что не нужно показывать информацию о себе, опции сборки и так далее. Вы можете выполнить команду без этой опции, тогда получите всю информацию, в том числе и об ffmpeg:
2. РАЗБИТЬ ВИДЕО НА КАДРЫ
Чтобы разбить видео на изображения подойдет такая команда:
Утилита сгенерирует изображения с именами image1.jpg, image2.jpg, image3.jpg и так далее. После завершения вы найдете очень большое количество изображений в папке с видео.
3. СОБРАТЬ ВИДЕО ИЗ ИЗОБРАЖЕНИЙ
Вы можете взять полученный набор картинок и собрать все обратно в видео. Для этого выполните:
Опция -f задает формат входного файла, вы можете использовать jpeg, png, jpg и другие картинки. И вы уже знаете как посмотреть поддерживаемые форматы ffmpeg.
4. ВЫТЯНУТЬ ЗВУК ИЗ ВИДЕО
Чтобы конвертировать видео в mp3 выполните команду:
Вот описание новых опций:
- -vn — не обрабатывать видео, вся видео информация будет отброшена;
- -ar — частота дискретизации, измеряется в герцах, чем больше, тем лучше качество звука;
- -ab — устанавливает битрейт аудио;
- -ac — устанавливает количество каналов;
- -f — указывает формат полученного файла.
6. ПРЕОБРАЗОВАТЬ ВИДЕО В GIF
Таким же самым образом можно переделать видео в анимированную gif картинку:
Мы не указываем кодеки ffmpeg и формат, потому что программа может их сама определить по расширению.
Чтобы конвертировать видео mpg в flv выполните:
Здесь мы уже задали битрейт и формат.
8. ПРЕОБРАЗОВАТЬ AVI В MPEG
Для этого выполните команду:
Использованные опции:
- -target pal-dvd — формат исходящего файла;
- -ps 2000000000 — максимальный размер полученного файла;
- -aspect 16:9 — соотношение сторон экрана.
9. КОНВЕРТИРОВАТЬ ВИДЕО В CD ИЛИ DVD ФОРМАТ
Чтобы выполнить конвертирование ffmpeg видео в формат DVD, нужно задать ваш формат с помощью опции -target. Доступны такие форматы: vcd, svcd, dvd, dv, pal-vcd или ntsc-svcd. Чтобы создать VCD выполните:
11. УВЕЛИЧИТЬ/УМЕНЬШИТЬ СКОРОСТЬ ВИДЕО
Чтобы увеличить скорость воспроизведения видео мы будем использовать фильтры, с помощью опции -vf. За скорость отвечает фильтр setpts. Например:
А так можно уменьшить скорость:
12. ВЫРЕЗАТЬ ПРЯМОУГОЛЬНИК ИЗ ВИДЕО
Для того чтобы вырезать определенный участок кадра из видео тоже используются фильтры. На этот раз фильтр crop:
- out_w — ширина нужного прямоугольника;
- out_h — высота нужного прямоугольника;
- x,y — задают координаты прямоугольника от начала видео.
Например, обрежем прямоугольник размером 80х60 от позиции 100х200:
Кроме этих опций, здесь можно задавать кодеки ffmpeg и форматы, чтобы параллельно выполнить кодирование ffmpeg.
13. ОБРЕЗАТЬ ВИДЕО
Тут уже фильтры нам не помогут, но зато мы можем указать опциями из какого момента нужно начать и где завершить, например:
Начинаем от минуты и пишем еще минуту:
- -ss задает время на видео, из которого стоит начать запись;
- -t задает время когда запись нужно завершить относительно ss;
- -с задает кодеки для аудио и видео, в нашем случае просто копировать файлы, ничего не перекодируя.
15. ПРОИГРАТЬ ВИДЕО
Вы можете быстро проиграть видео, чтобы оценить его качество, для этого есть команда:
Программа открывает и видео, и аудио.
16. ФОТО-БАННЕР ДЛЯ АУДИО
Вы можете добавить фото баннер к вашей аудио записи с помощью следующей команды:
Рассмотрим опции:
- -loop — задает, что нужно всегда повторять оду и ту же картинку;
- -i — задают входящие файлы, картинку и аудиофайл;
- -с:v — задает видеокодек, эквивалентно -vc;
- -c:a — задает аудиокодек, эквивалентно -ac;
- -b:a — задает битрейт аудио, эквивалентно -ab;
- -strict experimental — кодек aac для ffmpeg экспериментальный, поэтому чтобы его использовать нужна эта опция.
17. ДОБАВИТЬ СУБТИТРЫ К ВИДЕО
Если у вас есть отдельный файл субтитров, например с именем subtutle.srt, вы можете использовать такую команду, чтобы добавить его к видео:
Установка ffmpeg в Ubuntu и других Linux
Установка ffmpeg — это простой процесс. Это популярное приложение, которое доступно в большинстве дистрибутивов Linux через менеджер пакетов.
Установите ffmpeg в Ubuntu
В Ubuntu ffmpeg доступен в хранилище юниверсов, поэтому обязательно включите хранилище юниверсов. а затем обновите список пакетов и установите ffmpeg. Вы можете сделать все это, используя следующие команды в терминале:
sudo add-apt-репозиторий юниверс
обновление sudo apt
sudo apt установить ffmpeg
Так и должно быть! Вы можете проверить установку, просто набрав:
FFmpeg
Это должно отобразить некоторый текст, описывающий вашу конфигурацию ffmpeg (включая версию ).
Как видно из скриншота выше, установлена версия 3.4.4 . Однако последняя версия ffmpeg на момент написания этой статьи — 4.1 . Чтобы установить любую версию 4.x, вы должны будете использовать ffmpeg ppa . Нажмите, чтобы развернуть следующий раздел, чтобы увидеть подробности установки ffmpeg через PPA.
Существует неофициальный PPA, который вы можете использовать для установки последней версии ffmpeg. Просто используйте эти команды:
sudo add-apt-repository ppa: jonathonf / ffmpeg-4
обновление sudo apt
sudo apt установить ffmpeg -y
Чтобы установить ffmpeg в дистрибутивах на основе Arch, используйте следующую команду:
sudo pacman -S ffmpeg
Установите ffmpeg в дистрибутивы на основе Fedora
Чтобы установить ffmpeg в дистрибутивы Linux на основе Fedora, вы можете использовать эту команду:
sudo dnf установить ffmpeg
ЧТО ТАКОЕ FFMPEG?
ffmpeg — это один из лучших мультимедийных фреймворков, который содержит различные инструменты, для решения разных задач. Например, ffplay — портативный медиа плеер, утилита ffmpeg может использоваться для обработки и инвертирования файлов, ffserver — для потоковой передачи данных, а ffprobe может анализировать мультимедийный поток.
В набор ffmpeg, кроме утилит, входят такие библиотеки: libavutil libavcodec libavformat libavdevice libavfilter libavresample libswscale libswresample libpostproc. Из-за своей архитектуры, этот набор инструментов очень безопасный, и с помощью него вы можете сделать почти все что угодно с видео или аудио. В этой статье мы будем рассматривать в основном утилиту ffmpeg. Давайте рассмотрим ее синтаксис:
$ ffmpeg -i
- Опции источника — указывают параметры чтения файла, настройки и так далее;
- Источник — опция -i задает источник, откуда будет читаться файл, источников может быть несколько и это может быть не только файл, но и устройство;
- Основные опции — задают параметры работы всей утилиты;
- Кодеки — кодек, который будет использоваться для сохранения видео и аудио;
- Преемник — файл или устройство, куда будут записаны данные.
Сейчас мы не будем подробно рассматривать опции, рассмотрим их потом, уже в самих командах.
Потоковое воспроизведение видео в браузере
Для потокового воспроизведения (streaming, стриминга) видео в браузере в разное время использовались разные решения.
Раньше было популярно использование протоколов RTSP/RTMP.
Встроенной их поддержки в браузерах не было (ее и сейчас нет), но существовали плееры на основе Flash.
Сейчас использование Flash невозможно, поэтому RTSP/RTMP используются в основном для передачи видео между серверами, а в браузерах нужно использовать другие решения.
Специально для веба были разработаны протоколы передачи видео, использующие в качестве транспорта HTTP — стандартный протокол для всех браузеров.
Здесь можно выделить HLS, который разработан и поддерживается Apple,
и DASH, который разработан и поддерживается международной организацией MPEG.
Оба протокола зарегистрированы как стандарты:
- HLS зарегистрирован как стандарт IETF RFC 8216
- DASH зарегистрирован как стандарт ISO/IEC 23009-1:2019
Еще есть возможность передачи видео через WebRTC, но это требует использования специального сервера для передачи данных (вроде Kurento).
Далее будет рассматриваться использование протокола DASH — на практике он показался более гибким и удобным.
FFmpeg: быстрый старт
После установки FFmpeg можно творить магию преобразования видео в консоли.
Указанная команда сконвертирует видео из файла input.avi в output.mp4. По умолчанию для файлов mov и mp4 используется кодек H.264. Размер кадра и fps будут взяты из исходного файла.
В примере выше параметры по умолчанию могут не обеспечить желаемые качество или результат. Поэтому параметры можно задавать явно. Однако не обязательно указывать все, в этом случае FFmpeg возьмет их из исходного файла (например частоту кадров) или значение используемое по умолчанию.
Ниже перечислены основные параметры FFmpeg:
- -i имя исходного файла, который предстоит сконвертировать, если файлов несколько перед каждым из них нужно указать -i;
- -y ответит Да (yes) на все вопросы от FFmpeg, если они возникнут в процессе кодирования, например при для перезаписи файла, если тот уже существует;
- -vcodec или кратко c:v – параметры видеокодека, либо copy (если перекодирование не требуется), либо пустой параметр (по умолчанию);
- -f – формат контейнера;
- -b:v (-vb, -b) – битрейт видео в килобитах или мегабитах в секунду задаётся буквой K или M;
- -aspect – соотношение сторон картинки (4:3, 16:9, 1.3333, 1.7777);
- -r – частота кадров;
- -s – разрешение, поддерживаются как числовые значения (например, 640×480, 1920×1080), так и буквенные обозначения (например, qcif, qvga);
- -vf (или -filter:v) — опция со списком фильтров, которые будут применены к видео;
- -c:a (или -acodec) – параметры аудиокодека, либо copy (если аудио дорожку нужно оставить как есть), либо пустой параметр (по умолчанию);
- -f – формат аудио;
- -af (или -filter:a) — опция со списком фильтров, которые будут применены к аудио;
- -ab (или -b:a) – битрейт аудио;
- -ar – частота дискредитации;
- -ac – количество каналов.
Для примера рассмотрим следующую команду.
Данная команда перекодирует файл input.avi в output.mp4. В случае если в конечной папке будет содержаться файл output.mp4, он будет перезаписан (опция -y). В качестве кодека будет использован libx264 со среднем соотношением скорость/качество (-preset medium). Конечный битрейт 17000kbps, соотношение сторон картинки 16:9, частота 25 кадров в секунду. В качестве аудиокодека будет использован AAC с битрейтом 256kbps.
А так можно быстро перепаковать файл из одного контейнера в другой без пересжатия и потери качества.
или аналогичная (сокращенная запись)
Это может оказаться полезным, когда устройство, на котором вы хотите воспроизвести видео, не поддерживает исходный формат. Или, например программа видеомонтажа не умеет работать с каким либо форматом и не хочет импортировать его в проект (например Adobe Premiere не работает с mkv, хотя внутри – все тот же H.264). С помощью перепаковки проблема решиться.
С полным списком команд FFmpeg можно ознакомиться на официальной документации, а ниже разберем полезные примеры их использования.
Установка FFmpeg
FFmpeg распространяется в исходных кодах, но на официальном сайте есть ссылки на собранные бинарники для MaxOS и Windows.
Как установить FFmpeg в Windows
FFmpeg для Windows.
Разархивируйте содержимое скачанного архива, например в Program Files/ffmpeg (или в другую папку, например, где у вас хранятся портативные программы).
В PowerShell выполните следующую команду.
Для cmd немного модифицированная команда.
Если в консоли появилось сообщение о версии FFmpeg, значит программа работает.
Чтобы каждый раз не вводить длинный путь к программе C:\Program Files\ffmpeg\bin\ffmpeg.exe рекомендую добавить ее в системную переменную Path, для этого:
- перейдите в параметры Windows, в поиске введите Панель управления
- перейдите в Панель управления – Система и безопасность – Система;
- выберите пункт Дополнительные параметры системы;
- нажмите кнопку Переменные среды;
- в поле Системные переменные выберите значение Path и нажмите кнопку Изменить, чтобы добавить новое значение;
- укажите путь к папке с FFmpeg содержащую ffmpeg.exe;
- перезагрузите компьютер.
Теперь для того, чтобы вызвать FFmpeg используйте в консоли следующую команду.
Как установить FFmpeg в MacOS
Самый простой способ установить FFmpeg на MacOS, это Homebrew.
Либо можно поставить FFmpeg вручную. Для этого, FFmpeg для MacOS.
Перейдите в папку с загрузками, распакуйте скачанный архив, а затем переместите исполняемый файл ffmpeg в папку /usr/local/bin
Далее введите пароль и FFmpeg будет скопирован в директорию к остальным бинарникам.
Попробуйте выполнить следующую команду.
Если в консоли появилось сообщение о версии FFmpeg, значит программа работает.
Как установить FFmpeg в Linux
Для Linux можно самостоятельно собрать FFmpeg из исходников, либо установить его, используя менеджер пакетов входящий в состав операционной системы.
Например, для Ubuntu это можно сделать через репозиторий mc3man ppa, поддерживаемый сообществом Ubuntu.
В Debian 9 FFmpeg доступен в официальном репозитории, поэтому для установки достаточно одной команды.
CentOS не предоставляет официальный репозиторий для FFmpeg, поэтому, как и в случае с Ubuntu, его можно установить с помощью стороннего репозитория.
В CentOS 7 и RHEL 7 используйте следующую команду:
В CentOS/RHEL 6/5 команда отличается.
Далее установите FFmpeg.
После установки попробуйте выполнить следующую команду.
Если в консоли появилось сообщение о версии FFmpeg, значит программа работает.