3
март
2023
Работа с DVD дисками в Linux, программа ffmpeg
18:52

Работа с DVD дисками в Linux, программа ffmpeg

3 март 2023 18:52

Коллеги время от времени приносят DVD диски с просьбой сохранить фильм с диска на ПК и преобразовать его в файл MPEG4. Постарался разобраться в данной проблеме и рассказываю свой опыт работы с DVD дисками.

Введение

Данная статья написана для себя - чтобы обобщить опыт работы с DVD видео в Linux для применений, таких как:

  • захват видео с готового DVD
  • извлечение видео и звука
  • вырезка фрагментов
  • перевод видео и звука в другие форматы
  • объединение нескольких фрагментов в один файл
  • запись на другой диск.
    В разделе 10 приведены команды для работы с DVD.
    Также кратко рассмотрен вопрос авторского создания DVD в программах для оформления DVD.

История DVD-видео

Вначале были созданы CD-R, имеющие малую скорость чтения (150 кбит/с для скорости 1x, 1200 кбит/с для 8x), подходящую для воспроизведения звука. Алогоримы сжатия видео MPEG и MPEG2, используемые в то время (1996-2000) не позволяли хранить видео качества трансляции (D1 или PAL 720x576 на 50 полей в секунду). После изобретения DVD дисков, скорости передачи возросли. Практически, минимальная скорость чтения DVD диска составляет 1 385 000 байт в секуну (1.352 МБ/с), а на "24-ой" скорости - 33240000 кбит/с или 32.4 МБ/с Для сравнения, "студийное" качество видео - 25 Мбит/с, а потоки в цифровых ТВ мультиплексах DVB-T2 (MPEG4)- около 2.4-2.6 МБит/с. Диски DVD, на которых записано видео, должны соответстовать формату DVD-видео, который поддерживает не только хранение файлов, но и "обложки, "главы", многоканальный звук 5+1 (6) каналов и субтитры. Обычный диск DVD имеет объём - 4.7 Гбайт, что значительно выше, чем 700 Мбайт у CD-R. Высокое качество картинки на бытовых DVD-проигрывателях при использовании кодека MPEG2 и стерео и многоканального звука в Dolby AC3 способствовало быстрому распространению DVD проигрывателей среди потребителей в области индустрии домашних развлечений. Настала эра "домашних кинотеаторов". Для любителей путешествий появилась видеокамеры Sony с записью напрямую DVD диски уменьшенного формата - диаметром 8 сантиметров и объёмом 1.46 Гбайт. Записи с которых можно было просматривать дома на DVD плеере или "видео двойке" (телевизоре со встроенным DVD проигрывателем) без необходимости монтажа или перезаписи. DVD-видео полностью вытеснили записи на видеокассетах VHS и VHS-C к 2000 году. В настоящее время наблюдается "плато" в использовании DVD. так как диски большой ёмкости BlueRay для 4K-видео распространяются медленно из-за высокой цены.

Актуальность проблемы перевода DVD в файлы MPEG4 (AVC) / MKV

Причина, по которой пользователи переходят с DVD-видео на хранение старых фильмов в виде файлов MPEG4 - долговечность. Если принять исходную дату начала использования DVD-видео - 2000 год, средний срок годности дисков 20-60 лет. В 2023 году определенная часть дисков DVD-R могут начать плохо читаться. Также, в последнее время получили распространение NFS (network file storage) домашние хранилища для домашнего видео, фильмов и фотографий. Преимущество NFS - резервирование и отсутствие риска потерять CD- или DVD- диск в результате механического повреждения (падения, царапины и т.п.) Таким образом, проблема перевода DVD-видео в другие форматы в 2023 году актуальна.

1. Схема работы с дисками DVD

До 2002 года работала схема по оцифровке старых видеокассет с аналогового VHS видеомагнитофона.
vhs-scheme

После 2002 года и настоящее время, после перехода на DVD оцифровка старого видео не производится,
Цикл обработки полностью в цифровом видео с использованием DVD и файлов AVI / MP4 / MKV на ПК.

dvd_scheme

Все этапы будут объяснены в статье позднее. Краткое описание схемы:

  1. В левой части - исходный DVD-R или CD-R диск с видео.

  2. Для снятия информации с DVD / CD дисков используется программа "риппер" от английского слова "rip" - срывать, сдирать, сносить. Вместо использования DVD, можно просто открыть диск в Проводнике и скопировать его содержимое на локальный ПК.

  3. В верхней правой части рисунка большой квадрат это - "транспортный" файл AVI в формате MPEG2, содержащий видео и звук того же качества, что и исходный DVD. Данный файл AVI будем рассматривать в качестве исходного материала.

Если пользователь попросит вырезать фрагмент видео, можно с помощью утилиты ffmpeg обработать файл и сохранить без изменений видео и звука часть видео в отдельный файл, с времени начала до времени конца. Видеомонтаж можно выполнить в программе - видеоредакторе openshot (есть в магазине приложений flatpak "FlatHub", и как системный пакет), и произвести монтаж видео. В этой статье вопросу монтажа будет уделено мало внимания.

  1. Если просьба заключается и в перекодировании видео, исходный файл AVI или вырезанный из видео фрагмент станет исходным материалом для конвертера в MPEG-4 layer 2 (AVC). В центральной части рисунка - результат: файл на выходе контейнера - MP4 или MKV с видео сжатым в MPEG-4 (AVC) и звуком AC-3, для хранения в архиве на ПК. Такой файл MP4 или MKV имеет размер, как правило, значительно меньший чем размер DVD диска. Так как сжатие в MPEG4 AVC более эффективное при том же качестве можно использовать более низкую скорость потока (битрейт). К примеру, на DVD записано 90 минут видео - 4.7 Гбайт, из которых на видео 4.2 Гбайт и на звук 0.5 Гбайт, значит скорость потока видео будет 4.2*8*1024/(1.5*3600)=6.37 Мбит/с, а при сжатии в MP4 с битрейтом 2.4 Мбит/с занимаемый объём меньше в 2.4/6.37*4.2=1.58 Гбайт видео + 0.5 Гбайт звук = ~ 2.08 Гбайт => т.е. фильм будет занимать теперь на 56% меньше места.

  2. Запись непосредственно MP4 на DVD как "диска с данными" возможна, но при этом он будет открываться некрасиво - не как диск, а как обычная папка с файлом, как "флешка". Чтобы создать красивый проект нового DVD диска или CD-R диска с основным меню - обложкой DVD, используется программа для авторской разработки (DVD мастерская) - такая как DVDStyler, о которой говорилось в предыдущей статье. В ней можно создать основное меню выводимое на экране ТВ при загрузке DVD. Начальное меню создает общее впечатление о диске, например "Мой отпуск" с фоном в виде летнего пейзажа и может содержать ссылки или кнопки, вызывающие отдельные главы видео фильма. Также, некоторые программы имеют в своем составе встроенный перекодировщик видео - "конвертер", который сожмёт видео к нужному объёму носителя.

  3. Программа - конвертер может использоваться не всегда, а лишь когда нужно перекодирование видео между форматами, например, из MPEG2 в MPEG4 (AVC). В качестве конвертера может выступать консольная утилита FFmpeg, примеры использования которой будут рассмотрена в данной статье.

  4. Прожиг проекта DVD на "болванку" DVD-R или CD-R часто может выполняться из программы авторской программы. Но по моему мнению лучше применять запись из файла образа ISO в специализированной утилите для записи ISO на DVD/CD, например, Xfburn, k3b или Brasero. Запись из образа также используется для выпуска нескольких копий диска.

Два способа обработки - с перекодированием и без:

  • Перекодирование Если на каком-то из этапов происходит изменение кодека видео или звука, имеет место перекодирование, например, из MPEG2 в MPEG4. В результате, качество ухудшается, особенно на движущихся сценах и если исходный материал был записан с очень высоким битрейтом (студийного уровня 25-50 Мбит/с), а результат с низким (0.8-1 Мбит/с). В зависимости от качества исходного видео, настроек программы-кодировщика, количества проходов (рекомендуется 2) при воспроизведении результата перекодирования - файла mp4 потери не будут заметны глазу при битрейтах 2.5 - 3 Мбит/с. При сильном сжатии видео полного разрешения PAL 720x576i возможно возникновение артефактов на видео - потери четкости, "квадратов", "желе" и т.п.
  • Сквозная обработка (paththrough). В случае, если на всех этапах не используется преобразование (перекодирование) видео и аудио данных, не происходит потери качества. Такой способ называется "path-through", данные при этом не искажаются, не ухудшаются или не улучшаются - "как есть". Файл MPEG2 будет иметь качество исходного DVD. После чего, файл можно также записать на DVD без перекодирования, в формате MPEG2 с тем же звуком, что и был ранее.

2. Установка пакетов в Linux для воспроизведения DVD дисков и отдельных AVI / MP4 файлов

2.1 Установка кодеков видео и звука

libavcodec-extra - это метапапкет, который отвечает за установку следующих кодеков:

  • Libaom3 - библиотека видеокодека AV1
  • Libaribbb24-0-lib для декодирования Arib std-b24 (файлы времени выполнения)
  • Libavutil56 - Библиотека FFMPEG с функциями для упрощения программирования - Файлы времени выполнения
  • Libcairo2 - Cairo 2D векторная графическая библиотека
  • libcodec2-1.0 - библиотека времени выполнения Codec2
  • libdav1d5 - быстрый и маленький декодер видеопотока AV1 (общая библиотека)
  • libgsm1 - Общие библиотеки для речевого компрессора GSM
  • liblzma5 - библиотека сжатия XZ -формата
  • libmfx1 - Intel Media SDK - Общая библиотека
  • libmp3lame0 - библиотека кодировки mp3
  • Libopencore -Amrnb0 - AMR речевой кодек - общая библиотека
  • Libopencore -Amrwb0 - AMR-WB широкополосный речевой кодек - общая библиотека
  • Libopenjp2-7 - JPEG 2000 библиотека сжатия изображений/декомпрессии
  • Libopus0 - библиотека выполнения времени выполнения Opus Codec
  • Librsvg2-2 - Библиотека рендеринга для файлов SVG (время выполнения)
  • Libshine3 - Библиотека кодировки MP3 с фиксированной точкой - файлы времени выполнения
  • libsnappy1v5 - библиотека быстрого сжатия/декомпрессии
  • libspeex1 -библиотека времени выполнения кода Speex
  • libswresample3 - Библиотека FFMPEG для пересмотра звука, пересмотра и т. Д. - файлы времени выполнения
  • libswresample3 - Кодек сжатия видео Theora
  • libtwolame0 - библиотека кодирования Audio MPEG Audio 2
  • libva2 - API Video Acceleration (VA) для Linux - время выполнения
  • libvo-amrwbenc0-библиотека энкодеров Amr-WB Visualon Amr-WB
  • libvorbis0a - библиотека декодеров для общего кодека сжатия звука Vorbis
  • libvorbisenc2 - библиотека Encoder для Vorbis General Audio Codec
  • libvpx7 - VP8 и VP9 Video Codec (общая библиотека)
  • libwebp7 - Сжатие с потерями цифровых фотографических изображений (WebP)
  • libwebpmux3 - Сжатие с потерями цифровых фотографических изображений
  • libx264-163 - x264 Библиотека кодирования видео
  • Libx265-199 - H.265/Vide -поток HEVC (общая библиотека)
  • libxvidcore4 - видеокодек с открытым исходным кодом MPEG -4 (библиотека)
  • libzvbi0 - Вертикальный интервал -декодер с интервалом (VBI) - Файлы времени выполнения
  • Zlib1g - библиотека сжатия - среда выполнения.

Как видно, пакет libavcodec-extra через зависимости установит важнейшие кодеки видео MPEG-4, x264, h.265/HEVC и кодеки звука MP2, MP3.

1) В Ubuntu и Debian за кодеки отвечает пакет "libavcodec-extra".

sudo apt install libavcodec-extra

2) В Linux Mint установка кодеков DVD производится следующей командой

sudo apt install mint-meta-codecs

Если ПК c Linux Mint не подключен к Интернет, нужно скачать пакет кодека (apt download mint-meta-codecs), распаковать архив "mint-meta-codecs.tgz" на машине без Интернета и выполнить "sudo dpkg -i *.deb"

Для просмотра коммерческих дисков скремблированных (если сессии защищенны CSS). Устанавливать следующие пакеты не обязательно, если будут использоваться только бытовые DVD.
su -
apt install libdvdcss2 libdvdread8
apt install libdvd-pkg
dpkg-reconfigure libdvd-pkg

Дополнительный пакет libavcodec-extra58 (не обазательный), содержит кодеки AMR для сотовых сетей, для DVD не требуется.

  • ARIB STD-B24 Captions (Subtitle Decoder)
  • OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band (Encoder/Decoder)
  • OpenCORE Adaptive Multi-Rate (AMR) Wide-Band (Decoder)
  • Android VisualOn Adaptive Multi-Rate (AMR) Wide-Band (Encoder)

    su -
    apt install libavcodec-extra58

2.2 Установка ffmpeg - подсистемы работы с видео из командной строки

Исходные тексты наиболее свежей версии ffmpeg находятся на сайте ffmpeg.org, предназначены для самостоятельной сборки (компиляции).
Для ленивых пользователей - можно установить ffmpeg из репозитория. командой "apt instal ffmpeg"

su -
apt install ffmpeg

Особенность Debian: поддерживается репозиторий www.deb-multimedia.org/pool с последними сборками ffmpeg для ОС Debian 10 Buster, 11 Bullseye, 12 Bookworm и нестабильной версиии "Sid". О подключении репозитория рассказано на сайте https://deb-multimedia.org/ - нужно добавить ключ в keyring, исправить файл apt - sources, после чего выполнить apt-get update и apt-get dist-upgrade
-> Пакет ffmpeg и все зависящие будут обновлены до последних версий.

Особенность Fedora: ffmpeg находится в репозитории для дополнительных пакетов: https://rpmfusion.org/, установка которого описана в разделе "Configuration" для наиболее часто используемых версий Fedora и Red Hat.

Узнать версию ffmpeg можно командой ffmpeg -version

В Linux Mint 21.1 версии:

  • ffmpeg version 4.4.2-0ubuntu0.22.04.1
  • libavutil 56. 70.100
  • libavcodec 58.134.100
  • libavformat 58. 76.100
  • libavdevice 58. 13.100
  • libavfilter 7.110.100
  • libswscale 5. 9.100
  • libswresample 3. 9.100
  • libpostproc 55. 9.100

2.3 Установка библиотек для аппаратного ускорения видео

Встроенная графика Intel:

Ubuntu:

sudo apt install libva2 libva-x11-2

Debian:

su -
apt install libva2 libva-x11-2

Fedora

sudo dnf install libva-intel-driver

Графика AMD (mesa) с поддержкой аппаратного декодирования видео:

Ubuntu:

sudo apt install mesa-va-drivers mesa-vdpau-drivers

Debian:

su -
apt install mesa-va-drivers mesa-vdpau-drivers

Fedora

sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld

Графика AMD - драйверы с поддержкой аппаратного ускорения:

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt-get update
sudo apt install -y radeon

Графика nVidia - драйверы с поддержкой аппаратного ускорения видео:

Ubuntu:
В меню "Система" - "Драйверы" заменить драйвер с исходным кодом Nouveau на "заказной" драйвер для видеокарты nVidia и перезагрузить ПК.
Linux Mint
В меню "Параметры" - "Менеджер драйверов" установить "заказной" драйвер для видеокарты nVidia и перезагрузить ПК.
Fedora: источник

sudo dnf install nvidia-vaapi-driver

2.4 Программы - "видеоплееры" для воспроизведения DVD или файлов AVI, MP4, MKV

Просмотр DVD видео в Linux производится в плеере командной строки MPV или графической оболочки к ней - программы - "celluloid".

su -
apt install mpv celluloid

Для современных, более мощных ПК для воспроизведения DVD больше подойдет видеоплеер VLC.

su -
apt install vlc vlc vlc-l10n vlc-plugin-base

3. Авторское создание DVD видео в Linux

Бесплатные программы (freewate):

  • Open DVD Producer
  • tovid - 2105г. можно задать фоновое изображение и звук для главного меню, запустить процесс создания DVD. Исходные тексты: https://github.com/tovid-suite/tovid
  • Varsha - программа для создания DVD с графическим интерфейсом (GUI), написана на Java, умеет прожигать DVD диски.
  • DVDStyler - программа для создания DVD для Linux, Mac и Windows

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

В качестве материала для видеороликов, или глав на диске рекомендую видео высокого качества, например, такого:

Исходный материал высокого качества
Разрешение видео - 720x576 чересстрочный (interlaced, верхнее поле первое).
Кодек видео - MPEG2 / H.262/MPEG-2 Part 2 с битрейтом 20 или 25 Мбит/с
Кодек звука - PCM 16 бит стерео

Параметры видео и аудио потоков внутри файла-контейнера можно увидеть в программе MediaInfo:

Программа DVDstyler умеет как перекодировать материал в MPEG4 / AVC, так и записывать потоки видео и звука без обработки "path-through", добавляя лишь мультиплексирование видео x.264 и звука AAC (или MP2). Субтитры и телетекст DVDstyler не поддерживает.

Параметры результирующего файла с видео со звуом для записи DVD: Параметр Значение
ИЗОБРАЖЕНИЕ
Формат контейнера AVI
Формат видео MPEG2 для "классических" DVD; для китайских DVD-проигрывателей фирмы BBK и т.п. допустым XVID или DIVX3 / DIVX4. DIVX5
Отношение сторон Ш:В 4:3 или 16:9
Цветовое пространство YUV
Цветовая субдискретизация 4:2:0 (основной формат)
4:2:2 (при повышенных требованиях к цветовому разрешению)
Глубина цвета 8 бит
Тип сканирования Чересстрочное (Interlaced)
Порядок следования полей Верхнее поле первое (Top Field First)
Сжатие С потерями
Степень сжатия Bits/(Pixe*Frame) от 0.8 до 2.2
Ширина 720 пикселей
Высота 576 пикселей
Скорость видеопотока (битрейт видео) от 2 до 25 Мбит/с - в зависимости от длительности контента DVD. Часто используется VBR (поток 5.0-8.0 Мбит/с). Для хорошего качества при использовании CBR рекомендуется выбирать битрейт выше 8 Мбит/с
25 Мбит/с CBR - студийное качество 720x576
4 Мбит/с - для разрешения 352x480
1.5-2 Мбит/с - для разрешения QCIF 352x288
Основные цвета, передаточные характеристики и коэффициенты матрицы BT.709
ЗВУК
Частота дискретизации аудиосигнала 48 кГц
Количество каналов (звуковых дорожек) 2 (для MP2 и PCM), 1 - 5.1 (для AC3)
Кодек MP2 (MPEG2 audio), Dolby AC-3 (AC3) или PCM (LPCM) 16 бит, 48 кГц - для "классических" DVD; для китайских проигрывателей допустим звук MP3 до 256k
Скорость аудиопотока (битрейт звука)

4. Запись диска - Xfburn

su -
apt install xfburn

XFburn

5. Захват информации с записанного DVD диска. Копирование файлов из папки VIDEO_TS

5.1 Способ №1 - извлечение файлов с диска DVD-Video

DVD диски на компьютере распознаются как обычный цифровой носитель данных, с папкой VIDEO_TS.
Её нужно скопировать на компьютер или вручную или с использованием утилиты "dvdbackup".
Маленькая программа dvdbackup для извлечения данных с DVD дисков для Debian и Ubuntu.
Установка dvdbackup:

 apt install dvdbackup

Использование dvdbackup:

cd ~; mkdir dvd123
dvdbackup -M -i /dev/cdrom -o ~/dvd123

главные параметры dvdbackup:

-I - вывод информации о DVD.
-M --mirror зеркальное копирование DVD в папку на локальном диске
-i DEVICE - исходное устройство, где DEVICE может быть /dev/cdrom и т.п.
-o DIRECTORY - выходная папка для сохранения файлов с DVD. Если папка назначения не указана, будет использоваться текущий каталог.

5.2 Способ №2 - создание образа диска DVD-Video - файла *.ISO

Снятие информации с DVE ("dvd ripping") может быть выполнено штатными средствами - программой DD:

sudo dd if=/dev/cdrom of=disk.iso bs=1M

Подключение ISO образов можно выполнить в Менеджере файлов PCmanFM (http://sourceforge.net/projects/pcmanfm)
в контекстном меню, вызываемом правой кнопкой мыши: "Открыть с помощью" - "Подключение образов дисков". Образ ISO подключится как виртуальный DVD.

6. Описание файлов в папке VIDEO_TS

Файл Размер Назначение Описание
VIDEO_TS.BUP 12K Video manager, v11 Резервная копия (BackUP) файла VIDEO_TS.IFO на случай плохого чтения последнего (из-за царапин)
VIDEO_TS.IFO 12K Video manager, v11 Файл с информацией о DVD диске (InFO). Сам файл IFO не содержит никакой видеоинформации. Вместо этого файл IFO ссылается на видеоданные. Он используется с файлами VOB, в которых хранятся фактические аудио- и видеоданные фильма.
VIDEO_TS.VOB 76K MPEG sequence, v2, program multiplex Начало контента и обычно содержит меню и видео трейлеры.
VIDEO_01_0.BUP 18K Video title set, v11 Резервная копия (BackUP) файла VTS_01_0.IFO на случай плохого чтения последнего (из-за царапин)
VTS_01_0.IFO 18K Video title set, v11 Меню и субтитры. Бинарный файл.
VTS_01_0.VOB 234K MPEG sequence, v2, program multiplex Файл видео, черная заставка 720x576i 25 кадров в секунду PAL, кодек видео MPEG2 / звука AAC. Часть 0
VTS_01_1.VOB 500M MPEG sequence, v2, program multiplex Основной файл видео, файл кино 720x576i 25 кадров в секунду PAL, кодек видео MPEG2 / звука AAC. Часть 1
VTS_01_2.VOB 500M MPEG sequence, v2, program multiplex Основной файл видео, файл кино 720x576i 25 кадров в секунду PAL, кодек видео MPEG2 / звука AAC. Часть 2
VTS_01_3.VOB 500M MPEG sequence, v2, program multiplex Основной файл видео, файл кино720x576i 25 кадров в секунду PAL, кодек видео MPEG2 / звука AAC. Часть 3

7. Воспроизведение файлов DVD-видео в различных программах

MPV:

mpv VIDEO_TS.IFO

celluloid:

celluloid VIDEO_TS.IFO

VLC - в отличие от предыдущих программ, воспроизведение фильма не начинается автоматически, а вызывается на экран меню диска (происходит "проигрывание меню)

vlc VIDEO_TS.IFO

8. Объединение VOB файлов в один и преобразование всего фильма в файл AVI без перекодирования (качество: "то же качество")

cd ~/dvd123/VIDEO_TS
cat \*.VOB | pv | dd of=combined.vob
ffmpeg -i combined.vob -q:a 0 -q:v 0 -c copy -sn -y combined.avi

8.1 Преобразование в AVI одного конкретного VOB-файла с DVD в формате MPEG2:

ffmpeg -i VTS_01_1.VOB -q:a 0 -q:v 0 -c copy out-part1.avi

Преобразование в AVI одного VOB-файла DVD в формата DIVX, XVID, MPEG4, AVC методом копирования:

ffmpeg -i VTS_01_1.VOB -c:v libx264 -crf 0 -c copy out-x264.avi

где ключ -crf заменяет ключи -q:v / -qscale:v которые игнорируются libx264.

CRF - Constant Rate Factor (FFmpeg Wiki кодирование H.264)
-crf 0 означает кодирование без потерь.

8.2 Преобразование в AVI с одновременным перекодированием многоканального звука Dolby AC-3 в MP3 стерео:

Примечание: на коммерческих DVD и с видеокамер с 3D-звуком исходный звук может быть в формате AC3 («Dolby АС-3» ), тогда перекодировать звук всё-таки нужно, чтобы файл воспроизводился в большинстве плееров.

Поток звука 160 кбит/c, качество -aq 2:

ffmpeg -i VTS_01_1.VOB -q:v 0 -vcodec copy -acodec libmp3lame -b:a 160k -aq 2 out-mp3.avi

В данных примерах команд, если нужно преобразование всего фильма, замените имя файла VTS_01_1.VOB на combined.avi.

9. Вырезать фрагмент видео от ss секунд до tt секунд (качество: "то же качество") при помощи ffmpeg

Для файлов DVD в MPEG2:

ffmpeg -i VTS_01_1.VOB -q:a 0 -q:v 0 -c copy -ss 0:28 -to 0:35 out-1_28-35.avi

Для файлов в MPEG2 и DIVX/XVID/MPEG4/AVC:

ffmpeg -i VTS_01_1.VOB -crf 0 -c copy -ss 0:28 -to 0:35 out-1_28-35.avi

где
-ss - старт ; 0:28 - время с начала видео 0 минут 28 секунд
-to - финиш ; 0:35 - время с начала видео 0 минут 35 секунд

10. Перекодирование исходного видео файла AVI при помощи инструмента ffmpeg

Общий сопособ вызова ffmpeg:

ffmpeg -i исходный_файл параметры ... конечный файл

10.1 Перекодировать видео в формат MPEG4 / звук MP3 128k (кодек lame)

Преобразование файла 1.avi в out-mp4.avi в формате MPEG2
Контейнер результирующего файла - AVI, битрейт 1200 кбит/с CBR, формат MPEG4. Формат звука - MP3 128k.

ffmpeg -i 1.avi -f avi -c:v mpeg4 -b:v 1200k -g 300 -bf 2 -c:a libmp3lame -b:a 128k out-mp4.avi

10.2 Перекодировать видео в формат x264 / звук AAC 128k, в 2 прохода

Поток 1200 кбит/с CBR - constant bit rate, в два прохода (первый проход "изучает" материл, второй перекодирует видео и добавляет звук в формате AAC).

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null

ffmpeg -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -c:a aac -b:a 128k -passlogfile 1_pass.log out-avc.avi

10.3 Перекодировать видео в формат x264 / звук MP3 lame 128k с повышенным качеством, в 2 прохода

Поток 1200 кбит/с CBR - constant bit rate, кодек видео x264, звук VBR aq=2 (около 190 кБит/с, стерео).

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -acodec libmp3lame --aq 2 -passlogfile 1_pass.log out-avc.avi

Видео с качеством 23 (VBR) -crf 23 для потока около 2Мбит/с:

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -crf 23 -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vcodec libx264 -crf 23 -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out-avc-crf23.avi

10.4 Перекодирование видео в формат x264; копирование звука без обработки

Поток 1200 кбит/с CBR.

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -c:a copy -q:a 0 -passlogfile 1_pass.log out-avc-acopy.avi

10.4 Перекодирование видео в формат x264 (контейнер MKV); копирование звука (без обработки)

Поток видео 1200 кбит/с CBR:

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -c:a copy -q:a 0 -passlogfile 1_pass.log out-avc.mkv

10.5 Перекодирование видео файл формат x264 (контейнер MP4); копирование звука (без обработки)

Поток 1200к

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -c:a copy -q:a 0 -passlogfile 1_pass.log out-avc.mp4

10.6 Перекодирование видео с изменением разрешения ШxВ до 360x288, в файл формата x264 (контейнер MP4); звук MP3 lame

Поток 1200к

ffmpeg -i 1.avi -pass 1 -vf scale=360:288,setsar=1:1 -vcodec libx264 -b:v 700k -passlogfile 1_pass.log -f rawvideo -y /dev/null ffmpeg -y -i 1.avi -pass 2 -vf scale=360:288,setsar=1:1 -vcodec libx264 -b:v 700k -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out-avc.mp4

10.7 Перекодирование видео с изменением разрешения ШxВ до 360x756, при сохранении отношения сторон 4x3, в файл формата x264 (контейнер MP4); звук MP3 lame

ffmpeg -i 1.avi -pass 1 -vf scale=360:576,setsar=2/1 -vcodec libx264 -b:v 700k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vf scale=360:576,setsar=2/1 -vcodec libx264 -b:v 700k -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out_avc360x576.avi

10.8 Перекодирование видео с изменением разрешения ШxВ до 720x288, при сохранении отношения сторон 4x3, в файл формата x264 (контейнер MP4); звук MP3 lame

ffmpeg -i 1.avi -pass 1 -vf scale=720:288,setsar=1/2 -vcodec libx264 -b:v 700k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vf scale=720:288,setsar=1/2 -vcodec libx264 -b:v 700k -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out_avc720x288.avi

10.9 Перекодирование видео с изменением разрешения ШxВ до 360x288, в файл формата hevc x265 (контейнер MKV); звук MP3 lame

ffmpeg -i 1.avi -pass 1 -vf scale=360:288,setsar=1/1 -vcodec libx265 -b:v 500k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vf scale=360:288,setsar=1/1 -vcodec libx265 -b:v 500k -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out_x265.mkv

10.10 Перекодирование файла для Web (аккуратная установка флагов - x264 профиль High, level 3.1), формат 4:3; звук mp3

Формат видео 4:3:

ffmpeg -i 1.avi -t 10 -vf scale=360:288,setsar=1/1 -vcodec libx264 -b:v 400k -level 21 -refs 2 -pix_fmt yuv420p -profile:v high -level 3.1 -color_primaries 1 -color_trc 1 -colorspace 1 -movflags +faststart -af "pan=mono|c0=c1" -acodec libmp3lame -b:a 60k -dn web.mp4

Формат видео 16:9 -
Параметр "аспект": -aspect 16:9 при любом входном разрешении.

ffmpeg -i 1.avi -t 10 -vf scale=640:360,setsar=1/1 -vcodec libx264 -level 21 -refs 2 -pix_fmt yuv420p -profile:v high -level 3.1 -color_primaries 1 -color_trc 1 -colorspace 1 -movflags +faststart -af "pan=mono|c0=c1" -acodec libmp3lame -b:v 500k -b:a 48k -dn web2.mp4

ffmpeg -i 1.avi -t 10 -vf scale=360:288,setsar=1/1 -vcodec libx264 -level 21 -refs 2 -pix_fmt yuv420p -profile:v high -level 3.1 -color_primaries 1 -color_trc 1 -colorspace 1 -movflags +faststart -af "pan=mono|c0=c1" -acodec libmp3lame -b:v 500k -b:a 48k -dn web2.mp4

-dn означает не копировать поток данных (Data - no).

Звук:

Для моно звука добавить фильтр аудио -af "pan=mono|c0=c1". Для отключения звука - параметр -an (означает audio - no).

Вместо предельной скорости -b:a 112k можно использовать параметр среднего качества
-aq 6 - приличное качество, битрейт 100-130k;
-aq 5 - удовлетворительное качество, битрейт 120-150;
-aq 4 - по умолчанию 140-185k;
-aq 2 очень хорошее качество 170-210k.
При -aq 1 размер файла в 1.5 раза выше, чем при -aq 6, что не оправдано для кодирования, например, речи.

10.11 Кодирование с переменным битрейтом, скорость VBR от 1 Мбит/с до 2 Мбит/с (на сложных участках), звук тоже VBR с качеством 8 (около 56 кбит/с)

ffmpeg -i 1.avi -c:v libx264 -b:v 1M -maxrate 2M -bufsize 2M -pass 1 -f mp4 -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -i 1.avi -c:v libx264 -b:v 1M -maxrate 2M -bufsize 2M -pass 2 -passlogfile 1_pass.log -acodec libmp3lame -af "pan=mono|c0=c1" -aq 8 vbr.mp4

10.12 Извлечение звуковой дорожки из видео - преобразование в AAC (стерео) или WAV (моно)

ffmpeg -i 1.avi -vn -ac 2 -acodec aac sound.aac
ffmpeg -i 1.avi -vn -ac 1 - sound.wav

См. также здесь.

10.13 Повышение уровня громкости звуковой дорожки на +2db

ffmpeg -i sound.wav -af "volume=+2dB" -y output.wav

10.14 Нормализация, компрессия звука

ffmpeg -i sound.wav -af loudnorm=I=-10:LRA=1:tp=0 -ac 1 -y output.wav

10.15 Преобразование WAV - MP2 (моно), скорость потока 80 kbit/s

ffmpeg -i output.wav -acodec mp2 -ac 1 -b:a 80k -y final.mp2

10.16 Объединение файла видео AVI с новой звуковой дорожкой MP2 (видео копируется без перекодирования)

ffmpeg -i 1.avi -i final.mp2 -c:v copy -map 0:v:0 -map 1:a:0 Final.avi

10.17 Кодирование с набором параметров

Ключ -target pal-vcd задает следующий набор параметров:
-f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324
-s 352x288 -r 25
-codec:v mpeg1video -g 15 -b:v 1150k -maxrate:v 1150v -minrate:v 1150k -bufsize:v 327680
-ar 44100 -ac 2
-codec:a mp2 -b:a 224k
Ключ -target pal-dvd задает следующий набор параметров:
-f dvd -muxrate 10080k -packetsize 2048
-s 720x576 -pix_fmt yuv420p -r 25
-codec:v mpeg2video -g 15 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008
-ar 48000
-codec:a ac3 -b:a 448k

Пример: исходный файл имеет разрешение 1280x720 (видео со смартфона),
ЗАДАЧА записать его на DVD:

ffmpeg -i 2.mp4 -target pal-dvd -aspect 16:9 out.avi

Результат:
mediainfo_dvd_16_9

11 Рекомендуемые битрейты для стерео звука

  • ac3 >= 160k (для многоканального звука 5.1)
  • aac >= 128k (низкое качество - речь -b:a 128k )
  • mp3 >= 128k (для музыки рекомендуется -b:a 192k -aq 2)

Пересчет битрейта на нужное число каналов:

*Битрейт = (битрейт для стерео) (число каналов / 2)**

Для моно:

  • ac3 >= 80k
  • aac >= 64k (низкое качество - речь -b:a 64k )
  • mp3 >= 64k (для музыки рекомендуется -b:a 96k -aq 2)

12. Стандартные разрешения видео и их рекомендуемые битрейты

Технология Разрешение P/I Частота кадров / полей, Гц Название Кодек Битрейт (веб, архив), Мбит/с Битрейт (хорошее качество), Мбит/с
аналоговая 352x240p, 4:3 PAL p 25/25 CIF, PAL DVD - VHS x.264 0.6 1.2
аналоговая 352x240p, 4:3 NTSC p 29.97/29.97 CIF, NTSC DVD@23.976fps x.264 0.6 1.2
аналоговая 352x288p, 4:3 PAL p 25/25 Full CIF, FCIF x.264 0.75 1.5
аналоговая 704x480i, 4:3 PAL i 25/50 D1, PAL x.264 0.8 2
аналоговая 720x480i, 4:3 NTSC i 30/60 NTSC-D1 x.264 0.9 2.2
аналоговая 720x288p, 4:3 25/25 p 2CIF, Half-D1 x.264 0.8 1.8
аналоговая / цифровая 720x576i, 4:3 или 16:9 i 25/50 Full-D1, PAL broadcast, DVD, SD x.264 1.3 2.5
цифровая 544x576i, 16:9 25/50 i трансляция с пониженным качеством x.264 1.2 2.2
цифровая 480x576i, 16:9 25/50 i трансляция с пониженным качеством x.264 1 2
цифровая 352x576i, 16:9 25/50 i трансляция с пониженным качеством x.264 0.8 1.8
цифровая 352x288p, 16:9 25/25 i трансляция с пониженным качеством x.264 0.6 1.3
аналоговая 768x576i, 16:9 25/50 i PAL-DV x.264 1.3 2.5
цифровая 1280x720p, 16:9 p 25/25 720p, HD x.264 2 4
цифровая / аналоговая (видеонаблюдение: AHD, MHD) 1920x1080 i 25/50 Full-HD или 2K) x.264 3 5
цифровая 1920x1080p 30/30 Full HD 1080p 30fps или 2K-30fps p 30 x.264 4 7
цифровая 1920x1080p 60/60 Full HD 60fps или 2K-60fps p 60 x.264 6 10
цифровая 2560x1440p 25, 3k p 25 x.265 12 22
цифровая 3840x2160p 30, 60, 120 4k или UHD p 30, 60 или 120 x.265 12 22

Приложение. Соотношение форматов видео по структуре кадра

D1 = PAL broadcast

D1 = 4CIF
CIF = 1/4 D1

HalfD1=1/2 D1
2CIF = 1/2 D1
2CIF=HalfD1

Приложение 2. Отношение площадей форматов видео (или число элементов изображения - пикселей)

FullHD = 2K
FullHD = 5 * PAL broadcast
FullHD = 2.25 HD
FullHD = 0.75 3K
FullHD = 1/2 UHD
FullHD = 1/4 8K


Источник: https://trac.ffmpeg.org/wiki