Библиотеки для декодирования видео. сравнение на python и rust

ЧТО ТАКОЕ FFMPEG?

ffmpeg — это один из лучших мультимедийных фреймворков, который содержит различные инструменты, для решения разных задач. Например, ffplay — портативный медиа плеер, утилита ffmpeg может использоваться для обработки и инвертирования файлов, ffserver — для потоковой передачи данных, а ffprobe может анализировать мультимедийный поток.

В набор ffmpeg, кроме утилит, входят такие библиотеки: libavutil libavcodec libavformat libavdevice libavfilter libavresample libswscale libswresample libpostproc. Из-за своей архитектуры, этот набор инструментов очень безопасный, и с помощью него вы можете сделать почти все что угодно с видео или аудио. В этой статье мы будем рассматривать в основном утилиту ffmpeg. Давайте рассмотрим ее синтаксис:

$ ffmpeg  -i    

  • Опции источника — указывают параметры чтения файла, настройки и так далее;
  • Источник — опция -i задает источник, откуда будет читаться файл, источников может быть несколько и это может быть не только файл, но и устройство;
  • Основные опции — задают параметры работы всей утилиты;
  • Кодеки — кодек, который будет использоваться для сохранения видео и аудио;
  • Преемник — файл или устройство, куда будут записаны данные.

Сейчас мы не будем подробно рассматривать опции, рассмотрим их потом, уже в самих командах.

Setting

Here is what another person once did for broadcast:

ffmpeg -f dshow -i video="Virtual-Camera" -preset ultrafast -vcodec libx264 -tune zerolatency -b 900k -f mpegts udp://10.1.0.102:1234

And here is what another person ​did:

ffmpeg -f dshow -i video="screen-capture-recorder":audio="Stereo Mix (IDT High Definition" \
-vcodec libx264 -preset ultrafast -tune zerolatency -r 10 -async 1 -acodec libmp3lame -ab 24k -ar 22050 -bsf:v h264_mp4toannexb \
-maxrate 750k -bufsize 3000k -f mpegts udp://192.168.5.215:48550

NB that they also (for directshow devices) had to adjust the rtbufsize in that example.

You can see a description of what some of these means, (for example bufsize, bitrate settings) in the Encode/H.264.

Here’s how one guy broadcast a live stream (in this instance a Capture/Desktop#Windows screen capture device):

$ ffmpeg -y -loglevel warning -f dshow -i video="screen-capture-recorder" -vf crop=690:388:136:0 -r 30 -s 962x388 -threads 2 -vcodec libx264 -vpre baseline -vpre my_ffpreset -f flv rtmp:///live/myStream.sdp

with a custom FFmpeg preset (libx264-my_ffpreset.ffpreset) in this case:

coder=1
flags2=+wpred+dct8x8
level=31
maxrate=1200000
bufsize=200000
wpredp=0
g=60
refs=1
subq=3
trellis=0
bf=0
rc_lookahead=0

Here is how you stream to twitch.tv or similar services (rtmp protocol), using ffmpeg 1.0 or ffmpeg-git (tested on 2012-11-12), this is also for pulseaudio users:
Example 1, no sound:

ffmpeg -f x11grab -s 1920x1200 -framerate 15 -i :0.0 -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 -threads 0 -f flv "rtmp://live.twitch.tv/app/live_********_******************************"

Example 2, first screen (on dual screen setup, or if on a single screen):

ffmpeg -f x11grab -s 1920x1200 -framerate 15 -i :0.0 -f pulse -ac 2 -i default -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 -c:a aac -b:a 160k -ar 44100 -threads 0 -f flv "rtmp://live.twitch.tv/app/live_********_******************************"

Example 3, second screen (on dual screen setup):

ffmpeg -f x11grab -s 1920x1200 -framerate 15 -i :0.0+1920,0 -f pulse -ac 2 -i default -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 -c:a aac -b:a 160k -ar 44100 -threads 0 -f flv "rtmp://live.twitch.tv/app/live_********_******************************"

Решение проблемы плавного просмотра flash-видео в Linux

Проблема с просмотром flash-видео в Linux достаточно просто и эффективно решается с помощью соответствующих расширений для браузеров.

В браузере FireFox я использую расширение с аналогичными функциями – Flash Video Downloader – Youtube Downloader. Установка через “Инструменты” -> “Дополнения” -> “Получить дополнения”.

Различных загрузчиков Flash Video сегодня можно найти много. Возможно, Вам придется по душе какой-то другой. 

После установки расширения находим в Интернет нужный нам видео-контент и запускаем его просмотр непосредственно в браузере. Если найденный контент пригоден для скачивания, значок расширения FVD Video Downloader на панели браузера немедленно сообщит об этом изменением цвета (голубая стрелка вниз).  >

Если в начале демонстрируется рекламный ролик, то дожидаемся начала основного фильма и нажимаем на стрелку >

В открывшемся окне выбираем нужный файл (на представленном примере – по размеру файла), после чего начинается загрузка файла на жесткий диск вашего компьютера.

После начала загрузки файла просмотр фильма в браузере нужно остановить. В варианте Flash Video Downloader – Youtube Downloader в FireFox скачивание запускается в самостоятельном приложении и можно вообще закрыть закладку в браузере или закрыть сам браузер.

Не дожидаясь завершения скачивания файла открываем его в любом подходящем видео-проигрывателе. В Ubuntu с такими файлами отлично справляется видеопроигрыватель Totem, возможно кому-то больше понравится другой видеопроигрыватель, например, медиаплеер VLC.

Все, проблема с Adobe Flash Player решена. Не с ним самим, конечно, а с комфортным просмотром Flash Video в Linux. Смотрим загрузку процессора – она колеблется в районе 35%. Совсем другое дело.

Просмотр онлайн-видео на медленных интернет-каналах

Описанное выше решение отлично работает для всех операционных систем на медленных интернет-каналах. По сути дела имеет место создание и использование очень большого видео-буфера или, в предельном случае, просмотр готового локального видео-файла вместо онлайн-видео. Правда, в этом случае придется подождать с началом просмотра.

Желаю всем приятного и комфортного просмотра видео в Интернет.

А как у вас обстоят дела с просмотром Flash Video? Очень интересно было бы узнать мнение владельцев планшетов на Android. Существует ли такая проблема в ARM устройствах?

Опубликовано  —  15 апреля, 2013  в рубрике  —  Интернет & Веб, Мультимедиа, Семейство ОС Linux  Теги: Adobe, Flash, , Linux, Расширения для браузеров

Developer Documentation

  • Development Policies and Guides
  • Guide for Using Git
  • Notes on Maintaining FFmpeg Source Code and Being a Maintainer
  • FATE – Our Continuous Integration Platform / regression testing system
  • Cleanup – A list of components that may be considered candidates for removal
  • Debugging
  • How to conduct merges from Libav
  • How to apply patches from Patchwork

FFmpeg-related Sponsoring Programs

  • Google Summer of Code
    • GSoC 2021
    • GSoC 2020
    • GSoC 2019
    • GSoC 2018
    • GSoC 2017
    • GSoC 2016
    • GSoC 2015
    • GSoC 2014
  • Outreachy
    • Outreachy — Dec 2016
    • Outreachy — May 2016
    • Outreachy — May 2015
    • OPW — Dec 2014

FFmpeg Developer Meetings

  • FFmeeting/2020-12
  • FFmeeting/2020-02
  • FFmeeting/2019-12
  • FFmeeting/2016-05
  • FFmeeting/2015-09
  • FFmeeting/2014-10
  • FFmeeting/2014-01

Community Contributed Documentation

The guides below have been written by users and for users to supplement the official FFmpeg Documentation. If you’re confused about something refer to the official documentation and if you’re still having problems we can help.

Examples

Scaling

Starting with something simple. Resize a 640×480 input to a 320×240 output.

ffmpeg -i input -vf scale=iw/2:-1 output

is input width. In this example the input width is 640. 640/2 = 320. The tells the scale filter to preserve the aspect ratio of the output, so in this example the scale filter will choose a value of 240. See the for additional information.

Multiple input overlay in 2×2 grid

Here four inputs are filtered together using the option. In this case all of the inputs are the (the ) but could be other inputs.

Within the filtergraph the first input is unchanged, and the other three inputs are individually filtered using , , and . The and filters are then used to stack each video into the desired location.

ffmpeg -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -filter_complex \
"negate; \
 hflip; \
 edgedetect; \
 hstack=inputs=2; \
 hstack=inputs=2; \
 vstack=inputs=2" -map "" -c:v ffv1 -t 5 multiple_input_grid.avi

This next example is the same as above, but uses the and filters instead. The pad filter is used to make an appropriate sized background, and overlay is used to place each video into the correct location. This method is slower than using hstack + vstack as shown above.

ffmpeg -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -filter_complex \
"pad=iw*2:ih*2; \
 negate; \
 hflip; \
 edgedetect; \
 overlay=w; \
 overlay=0:h; \
 overlay=w:h" -map "" -c:v ffv1 -t 5 multiple_input_grid.avi

Be aware that frames are taken from each input video in timestamp order, so it is a good idea to pass all overlay inputs through a filter to have them begin in the same zero timestamp, such as .

Burnt in Timecode

Using the video filter.

PAL 25 fps non drop frame:

ffmpeg -i in.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/DroidSans.ttf: timecode='09\:57\:00\:00': r=25: \
x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y out.mp4

NTSC 30 fps drop frame

(change the : to a ; before the frame count)_________________________________________________________
                                                                                                     \
ffmpeg -i in.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/DroidSans.ttf: timecode='09\:57\:00\;00': r=30: \
x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y out.mp4

Synthetic Input

The generates a test video pattern showing a color pattern, a scrolling gradient, and a timestamp. This is useful for testing purposes.

This example will create a 10 second output, 30 fps (300 frames total), with a frame size of 1280×720:

ffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=30 output.mpg

can also be used to view the resulting filtergraph:

ffplay -f lavfi -i "testsrc=duration=10:size=1280x720:rate=30"

You can also specify testsrc as a filter:

ffmpeg -filter_complex testsrc OUTPUT

Another type of testsrc is using the :

ffmpeg -f lavfi -i "smptebars=duration=5:size=1280x720:rate=30" output.mp4

Or a color

./ffmpeg -f lavfi -i color=c=red:size=100x100

There are other options for generating synthetic video input, see ​here and ​here («generic equation» filter).

Other Filter Examples

  • Fancy Filtering Examples – Examples for various psychedelic effects and other weird filtering.
  • Null describes the nullsink filter.

Streaming a simple RTP audio stream from FFmpeg

FFmpeg can stream a single stream using the ​RTP protocol. In order to avoid buffering problems on the other hand, the streaming should be done through the -re option, which means that the stream will be streamed in real-time (i.e. it slows it down to simulate a live streaming ​source.

For example the following command will generate a signal, and will stream it to the port 1234 on localhost:

ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -ar 8000 -f mulaw -f rtp rtp://127.0.0.1:1234

To play the stream with ffplay (which has some caveats, see above), run the command:

ffplay rtp://127.0.0.1:1234

Note that rtp by default uses UDP, which, for large streams, can cause packet loss. See the «point to point» section in this document for hints if this ever happens to you.

ПОЛЕЗНЫЕ КОМАНДЫ 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, вы можете использовать такую команду, чтобы добавить его к видео:

Filter Metadata

Filters may write metadata entries that can be used for debugging their functionality, or extracting additional information from the input file. For a general description, see .

Metadata keys are defined by the respective filters, and there is no globally accessible list. Some of them are mentioned in the filter documentation itself.

Here are some important metadata keys, all starting with , where is the name of the filter itself.

Filter Key Description
Duration of the freeze period
End of the freeze period
Start of the freeze period
Duration of the silence period
End of the silence period
Start of the silence period

Installing FFmpeg (latest) on Ubuntu 18.04 LTS

https://youtube.com/watch?v=tf4p-SMw5jA

Installing FFmpeg (latest) on Ubuntu 18.04 LTS

FFmpeg — это бесплатный инструмент командной строки с открытым исходным кодом для перекодирования мультимедийных файлов. Он содержит набор общих аудио и видео библиотек, таких как libavcodec, libavformat и libavutil. С FFmpeg вы можете конвертировать различные видео и аудио форматы, устанавливать частоту дискретизации и изменять размер видео.

В этом руководстве рассматриваются шаги, необходимые для установки FFmpeg в Ubuntu 18.04. Мы покажем вам, как установить стабильную версию дистрибутива и последнюю версию FFmpeg.

Те же инструкции применимы для Ubuntu 16.04 и любого дистрибутива на основе Ubuntu, включая Linux Mint и Elementary OS.

Предпосылки

Для завершения установки вам необходимо войти в систему как пользователь root или пользователь с привилегиями sudo.

Установка FFmpeg 3.x в Ubuntu

Официальные репозитории Ubuntu содержат пакеты FFmpeg, которые можно установить с помощью менеджера пакетов . Это самый простой способ установить FFmpeg в Ubuntu. Однако версия, включенная в репозитории, может отставать от последней версии FFmpeg.

На момент написания этой статьи текущая версия FFmpeg, доступная в репозиториях Ubuntu 18.04, была .

Для установки FFmpeg 3.x в Ubuntu 18.04 выполните следующие действия:

  1. Начните с обновления списка пакетов:

    Затем установите FFmpeg, введя следующую команду:

    Чтобы проверить правильность установки пакета, используйте команду которая печатает версию FFmpeg:

    Вывод должен выглядеть примерно так:

    Чтобы напечатать все доступные кодеры и декодеры FFmpeg, введите:

Вот и все. FFmpeg 3 теперь установлен в вашей системе, и вы можете начать использовать его.

Установка FFmpeg 4.x в Ubuntu

Версия 4.x FFmpeg добавляет ряд новых фильтров, кодеров и декодеров.

Самый простой способ — установить FFmpeg 4.x в Ubuntu 18.04 с помощью системы упаковки snappy.

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

Загрузка может занять некоторое время в зависимости от скорости вашего соединения.

После этого проверьте установку FFmpeg, выполнив команду :

Вывод должен выглядеть примерно так:

Это оно! FFmpeg установлен в вашей системе и готов к использованию.

FFmpeg 4 также доступен в PPA Роба Сэвори.

Основное преобразование

При конвертации аудио и видео файлов с помощью вам не нужно указывать форматы ввода и вывода. Формат входного файла определяется автоматически, а выходной формат определяется по расширению файла.

Конвертируйте видео файл из mp4 в webm:
ffmpeg -i input.mp4 output.webm
Конвертировать аудиофайл из mp3 в ogg:
ffmpeg -i input.mp3 output.ogg

Указание кодеков

При конвертации файлов вы можете указать кодеки, которые хотите использовать с опцией . Кодек может быть именем любого поддерживаемого декодера / кодера или специального значения, которая просто копирует входной поток.

Преобразуйте видеофайл из mp4 в webm, используя видеокодек libvorbis и аудиокодек libvorbis :

ffmpeg -i input.mp4 -c:v libvpx -c:a libvorbis output.webm
Конвертируйте аудиофайл из mp3 в ogg, закодированный с libopus кодека libopus .
ffmpeg -i input.mp3 -c:a libopus output.ogg

Вывод

Вы успешно установили FFmpeg на Ubuntu 18.04. Теперь вы можете посетить официальную страницу документации FFmpeg и узнать, как использовать FFmpeg для преобразования ваших видео- и аудиофайлов.

ffmpeg Ubuntu

Если вы хотите загрузить изображение с вашего Xbox One и использовать его как изображение геймера, это можно сделать. Вы также можете использовать USB-накопитель для загрузки изображения и установить его в качестве игрового игрока Xbox One.

FFmpeg — это бесплатная коллекция инструментов с открытым исходным кодом для обработки мультимедийных файлов. Из этого туториала Вы узнаете, как установить FFmpeg в CentOS 7.

FFmpeg — это бесплатный инструмент командной строки с открытым исходным кодом для перекодирования мультимедийных файлов. В этом руководстве объясняется, как установить FFmpeg в Debian 9.

Как запустить ffmpeg?

Для начала его надо скачать. Свежая сборка для Windows есть , пакеты для Debian — . В посте будет описана работа с ffmpeg в Windows.

После загрузки архива из него нужно распаковать содержимое папки bin в какое-нибудь удобное место. Там три файла — ffmpeg.exe, ffplay.exe, ffprobe.exe. Вероятнее всего, вам понадобится только ffmpeg.exe. ffplay — простой плеер с возможностью использования библиотек ffmpeg, ffprobe — инструмент для анализа потока.

Чтобы было удобнее — положите файл, который надо перекодировать, в папку рядом с файлом ffmpeg.exe (или наоборот, переместите исполняемый файл ffmpeg к видеофайлу). Теперь нужно запустить командную строку в файле — для этого нажимайте Shift+ПКМ
(правая кнопка мыши), в контекстном меню выбирайте «Открыть командную строку здесь» («Open command window here»).

На этом подготовка закончена, в запущенную командную строку требуется ввести команду для запуска кодирования.

CPU usage / File size

In general, the more CPU you use to compress, the better the output image will be, or the smaller of a file the output will be for the same quality.

Basically, the easiest way to save cpu is to decrease the input frame rate/size, or decrease the output frame rate/size.

Also you could (if capturing from live source), instruct the live source to feed a «smaller stream» (ex: webcam stream 640×480 instead of 1024×1280), or you could set a lower output «output quality» setting (q level), or specify a lower output desired bitrate (see Encode/H.264 for a background). Or try a different output codec, or specify new parameters to your codec (for instance, a different profile or preset for libx264). Specifying $ -threads 0 instructs the encoder to use all available cpu cores, which is the default. You could also resize the input first, before transcoding it, so it’s not as large. Applying a smoothing filter like hqdn3d before encoding might help it compress better, yielding smaller files.

You can also set a lower output frame rate to of course decrease cpu usage.

If you’re able to live capture in a pixel format that matches your output format (ex: yuv420p output from a webcam, instead of mjpeg), that might help with cpu usage, since it avoids an extra conversion. Using 64-bit instead of 32-bit executables (for those that have that choice) can result in a slight speedup. If you’re able to use -vcodec copy that, of course, uses the least cpu of all options since it just sends the frames verbatim to the output.

Sometimes you can change the «pixel formats» somehow, like using rgb16 instead of rgb24, to save time/space (or yuv420 instead of yuv444 or the like, since 420 stores less information it may compress better and use less bandwidth). This may not affect latency.

Codecs

The most popular streaming codec is probably ​libx264, though if you’re streaming to a device which requires a «crippled» baseline h264 implementation, you can use the x264 «baseline» profile. Some have have argued that the mp4 video codec is ​better than x264 baseline, because it encodes about as well with less cpu. You may be able to use other codecs, like mpeg2video, or really any other video codec you want, typically, as long as your receiver can decode it, if it suits your needs.

Also note that encoding it to the x264 «baseline» is basically a «compatibility mode» for older iOS devices or the like, see ​here.

The mpeg4 video codec sometimes also comes «within a few percentage» of the compression of x264 «normal settings», but uses much less cpu to do the encoding. See for some graphs (which may be slightly outdated). Basically in that particular test it was 54 fps to 58 fps (libx264 faster), and libx264 file was 5.1MB and mpeg4 was 6MB, but mpeg4 used only half as much cpu for its computation, so take it with a grain of salt.

Пакетная обработка FFmpeg

Если необходимо сконвертировать не один, а несколько десятков файлов, очевидным неудобством станет то, что придется множество раз вводить одну и ту же команду и прежде, чем поставить кодироваться следующий файл, нужно будет дождаться завершения предыдущего.

Написание скриптов, тема для отдельной статьи, здесь же приведу примеры для Windows и MacOS, с помощью которых за раз можно сконвертировать всю папку с файлами.

Примеры скриптов FFmpeg для Windows

Создайте текстовый файл, с расширением .bat, поместите в него содержимое указанное ниже и скорректируйте по своему усмотрению.

Чтобы воспользоваться скриптом, потребуется указать путь до папки с файлами, которые хотите сконвертировать, расширение исходных файлов, выходной формат и расширение (контейнер) выходных файлов.

Скрипт из примера возьмет все файлы из папки ( C:\folder\ ) с расширением .avi и сконвертирует их (используя двухпроходное кодирование) в формат mp4, расширение выходных файлов так же будет mp4. Выходные файлы будут помещены в ту же папку, что и исходные.

Ниже приведен аналогичный пример для конвертации аудио. Cкрипт конвертирует файлы с расширением .wav в .mp3.

Примеры скриптов FFmpeg для MacOS

Создайте текстовый файл, с расширением .sh, поместите в него содержимое указанное ниже и скорректируйте по своему усмотрению.

Чтобы воспользоваться скриптом, потребуется указать расширение исходных файлов, расширение (контейнер) выходных файлов, выходной формат, а также путь до папки с файлами, которые хотите сконвертировать.

Не забудьте сделать скрипт исполняемым.

Скрипт из примера возьмет все файлы из папки ( ~/Desktop/folder/ ) с расширением .avi и сконвертирует их (используя двухпроходное кодирование) в формат mp4, расширение выходных файлов так же будет mp4. Выходные файлы будут помещены в ту же папку, что и исходные.

Ниже приведен аналогичный пример для конвертации аудио. Cкрипт конвертирует файлы с расширением .wav в .mp3.

Miscellaneous

  • General command line usage:
    • Solutions to some errors and messages
    • Creating multiple outputs from the same input
    • How to concatenate, join, or merge media files
    • How to use -map option to select exactly which streams to process
    • Seeking to split a file or select a segment
    • framemd5 Intro and HowTo for using per-frame checksums
    • FFprobe Tips for getting frame rate, frame size, duration, etc.
  • Effects:
  • Video:
    • Changing the frame rate
    • Limiting the output bitrate
    • Chroma Subsampling
    • Colorspace support in FFmpeg
    • Debugging Macroblocks and Motion Vectors
    • Viterbi Algorithm
  • Audio:
    • Audio Types – List of the different types of raw audio
    • FFmpeg and the SoX Resampler – High quality audio resampling
  • Working with other tools:
    • How to encode with FFmpeg from Adobe Premiere Pro
    • Using FFmpeg from PHP scripts
  • Other:
    • How to ask good questions on ffmpeg-user mailing list
    • Articles for Creation – A simple idea/reminder list for new community contributed wiki articles
    • Downstreams – A list of downstream software products that distribute FFmpeg, including versions and end-of-life dates
    • Projects – A list of free projects and programs known to incorporate work from FFmpeg.

Установка 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 
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: