LINUX.ORG.RU

FFmpeg 2.8

 , , ,


1

4

Состоялся релиз мультимедиа-пакета FFmpeg 2.8, содержащего средства для работы с различными мультимедиа-форматами (преобразование, сжатие, декодирование как видео-, так и аудиоформатов). В новый выпуск также вошли изменения из пакетов libav (форк FFmpeg) и ffmpeg-mt (версия с многопоточным декодированием). Помимо этого, в новый выпуск включено большое количество новых фильтров, среди которых:

  • colorkey — для замены цветов на прозрачность (полезно при обработке материала, снятого на фоне зелёного экрана);
  • ssim (Structural SImilarity Metric) — для определения схожести между двумя видео;
  • removegrain и atadenoise для подавления шумов на видео;
  • bitstream-фильтр для преобразования HEVC из MP4 в формат Annex B;
  • dynaudnorm — система динамической нормировки звука (Dynamic Audio Normalizer);
  • reverse, areverse — для обратного воспроизведения видео и звука;
  • Random — для извлечения кадров в случайном порядке;
  • deband — для удаления из видео горизонтальных полос;
  • sidechaincompress --для сжатия входного сигнала с учётом дополнительного сигнала;
  • waveform — для визуализации интенсивности цветовых компонентов;
  • hstack и vstack — для горизонтальной и вертикальной компоновки нескольких видео;
  • framerate — для изменения частоты кадров с использованием интерполяции имеющихся кадров.

Помимо этого новый выпуск содержит кодировщик HEVC на базе библиотеки libkvazaar, использование VP9 и Opus в кодировщиках webm по умолчанию, новые распаковщики медиаконтента, такие как ASF и BFSTM/BCSTM, а также декодировщик изображений/текстур DirectDraw Surface. Также была улучшена реализация декодировщика JPEG2000, который отныне не является экспериментальным.

>>> Подробности

Ответ на: комментарий от gobot

Можно только так судя по тому, что там у тебя MP4, т.е. либо HEVC, либо ASP, либо AVC. Скорее всего, с компенсацией движения[]. Наименьшей независимой группой данных тут будет GOP. Чтобы оставить как можно больше оригинального видеоряда, придётся отрезать в твоём видео кусочек от начала и от конца, оставить середину, перекодировать концы с наложением, затем соединить три полученных фрагмента в исходном порядке. Другого варианта нет. Популярные Стандарты на видеокодеки не содержат функции композиции в основных профилях, т.к. это усложняет железо.

anonymous ()
Ответ на: комментарий от gobot

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

А если вырезать, перекодить, склеить обратно, то это надо тем же кодеком, с теми же параметрами кодить, иначе могут заглючить плееры.

А вообще логотипы зло, за такое надо руки отрубать (хотя хорошо хоть пытаешься без перекодирования сделать).

anonymous ()

Релиз хороший. А я как раз вчера собирал их изходников mpv и обратил внимание, что используемая им версия ffmpeg обновилась...

lucentcode ★★★★★ ()
Ответ на: комментарий от anonymous

Нужно консольное. Резать и клеить слишком муторно, поэтому лучше откажусь от этой затеи. Логотип(адрес) нужен чтобы указать сайт источник - в чем зло то?

gobot ★★★★ ()

На радостях нашли у них баг с утечкой дескрипторов tcp+lisen+interrupt-callback и заслали фикс :)

h4tr3d ★★★★★ ()
Ответ на: комментарий от gobot

Нужно консольное

Резать и клеить слишком муторно

Можно резать и клеить тоже консольным, если параметры подобрать. Вот моя подборка извращений на тему консольной резки-склейки, правда, часть инструментария там специфична для контейнера mkv.

hobbit ★★★★★ ()
Ответ на: комментарий от h4tr3d

Как не требует? И каким образом по-твоему будет происходить транскодинг в HLS/MPEG-DASH? Или мобильные устройства не нужны, лол?

soslow ()
Ответ на: комментарий от soslow

Ну, если вы так. То ок. Я же речь вёл о том, что на заре своей жизни nginx-rtmp имел компиляционную зависимость от ffmpeg и не мог собираться с libav. Эта зависимость нужна была для контейнеров mp4 и mpeg-ts. Сейчас внутри своя реализация.

И сам по себе nginx-rtmp не делает транскодинга. Перепаковка контейнеров это трансмуксинг. Когда нужно делать перекодирование, делается это запуском внешнего приложения. Лично я в качестве оного запускал и cvlc и avconv и свой обработчик-анализатор.

h4tr3d ★★★★★ ()
Последнее исправление: h4tr3d (всего исправлений: 1)
Ответ на: комментарий от h4tr3d

Ну а что бы не быть голословным, вот вам выдержка из `git log`

commit f4d974425c8fcc5fa404d42d4e75367796e99451
Author: Juarez Bochi <jbochi@gmail.com>
Date:   Mon May 6 16:59:43 2013 -0300

    Update README.md
    
    Remove additional build instructions for HLS since it is now included in rtmp module and does not need ffmpeg libs for compilation.

...

commit 0e01665e0bd6b473e2a09304890c1841a09d50b7
Author: Roman Arutyunyan <arut@qip.ru>
Date:   Mon Mar 4 21:13:17 2013 +0400

    native hls; first version without ffmpeg libs

h4tr3d ★★★★★ ()

framerate — для изменения частоты кадров с использованием интерполяции имеющихся кадров.

Это они что ли собираются сделать или уже сделали аналог SVP, только пока без поддержки GPGPU?

Fat_Green_Liar ()
Ответ на: комментарий от deep-purple

Они про бандинг (ступенчатость или полосчатость). Артефакт, возникающий на градиентах из-за недостаточной точности цвета. https://en.wikipedia.org/wiki/Colour_banding Для борьбы с ним нужен дебандинг.

trycatch ★★★ ()

framerate

Ну так чо framerate пробовал кто? Из 30fps можно 25 сделать?

anonymous ()

Запилили бы уже нормальную поддержку quick sync, что ли. Была бы киллер-фича.

anonymous ()
Ответ на: комментарий от anonymous

С учётом того, что её отлаживать не на любой Linux-машине можно - формулировка «нормальная поддержка» вызывает улыбку. Пусть сначала Intel сделает нормальный саппорт generic платформ. Ну и критерии «нормальности» тоже интересны. Архитектурно там сейчас неплохо сделано, один крупный косяк: это транскодинг без промежуточного буфера памяти. Затрудняюсь прикинуть как это можно прямо сделать. Все остальные косяки - детские болячки, которые, рано или поздно, вылечат.

h4tr3d ★★★★★ ()

Вот вроде неплохая прога, но некоторые вещи сделаны через такую задницу (crop, delay, add tracks)

anonymous ()
Ответ на: комментарий от soslow

libav это делать религия не позволяет

Вот за это я их уважаю.

просто мержат из libav фичи

А за это не уважаю ffmpeg. Все равно, что соседу в тетрадку смотреть, оно конечно не запрещено, но свои мозги надо иметь.

религиозных дебилов

Напомню изначально упоротым был ffmpeg. Так что одного поля ягоды.

anonymous ()
Ответ на: комментарий от anonymous

Все равно, что соседу в тетрадку смотреть, оно конечно не запрещено, но свои мозги надо иметь

Ой дебил (ц).

anonymous ()
Ответ на: комментарий от gobot

хочу вставить начало и конец файла свое лого, для этого нужно перекодировать все кадры?

Не нужно, но нужно писать приложение для таких тонкостей. См. proof of concept https://github.com/krieger-od/interval_transcoding

Krieger_Od ★★ ()
Последнее исправление: Krieger_Od (всего исправлений: 1)

Документация по нему дерьмовая.

a1batross ★★★★★ ()
Ответ на: комментарий от soslow

Забыл добавить, пользуюсь я, конечно, ffmpeg.

anonymous ()
Ответ на: комментарий от anonymous

Вот бы еще addborders сделали

Вообще-то можно. Вот например, есть леттербоксное видео 720x544 (4:3), с черными полосами сверху, снизу и немного сбоку. Полезный контент в нем занимает 716x440 (1,63:1). Цель: кропнуть, добавить бордеры по бокам и сохранить в формате 720x480 (16:9) MPEG2. Ну как-то так:

-vf crop=716:440,scale=656:480,pad=720:480:32:0 -aspect 16:9

В avisynth-е это можно было бы нагляднее сделать:

crop(4,50,0,-54)
LanczosResize(656,480)
addborders(32,0,32,0)

А delay добавляется так:

ffmpeg -i input.mkv -itsoffset -00:00:00.000 -i input.mkv -map 0:0 -map 1:1

Вот для звуковой дорожки (map 1:1) будет применен delay, указанный в itsoffset. Нумерация начинается с нуля. 1:1 значит второй файл, вторая дорожка.

для железного плеера

Для железных плееров, которые сами плохо воспроизводят текстовые SRT субтитры (например слабая окантовка и на светлом фоне плохо видно) можно перепаковать в TS или ISO BDAV контейнер через tsMuxer, он сгенерит графические PGS субтитры. Но у него столько ограничений: например под 3 вида разрешений SD, 720p, 1080p свой размер шрифта (26, 42, 69). А например 720p 4:3 (57). Xvid не поддерживается. AAC в BDAV тоже. delay не видит (надо указывать самому), временные метки в MKV игнорирует (проверка eac3to -demux), aspect берет видеопотока, а не контейнера (иногда они не совпадают). Длинные строки субтитров обрезаются (не влезают в экран) - предварительно лучше прогнать через Subtitle Edit > Исправить ошибки. Но нестандартные разрешения понимает (в том числе в BDAV!) но тут еще зависит от плеера как он такое переварит. Некоторые вообще PGS в TS не видят. Тогда прямая дорога в VobSub DVD (некоторые плееры понимают VobSub в MKV и даже в любом разрешении).

anonymous ()

Кстати, тут немец один в почту постучался. У него проблемы с кодированием кодеком VP9:

ffmpeg: /build/buildd/libvpx-1.3.0/vp9/encoder/vp9_encodeframe.c:1747: rd_pick_partition: Assertion `tp_orig < *tp' failed.
Если вы сидите на каком-нить Mint 17 или Ubuntu 14.04, то у вас в системе стоит libvpx версии 1.3.0 в котором есть баг: при параметре arnr-maxframes равным нулю он крешится вот таким вот образом. Причем 0 - это валидное значение согласно документации. Если эту опцию принудительно не указывать для vpxenc, то он нормально кодирует, т.е. использует какое-то значение отличное от нуля, если указать - такой же креш. А вот FFmpeg (там внутри тоже не без косяка) задаёт дефолтное значение в 0. Потому такая петрушка.

Лечится указанием ffmpeg опции "-arnr-maxframes" (минус один) со значением -1 или больше 0. -1 - включит это самое «дефолтное» значение внутри libvpx.

В новых версиях libvpx проблема исправлена. Репорты:
https://trac.ffmpeg.org/ticket/4413
https://bugs.chromium.org/p/webm/issues/detail?id=690

ЗЫ о целесообразности использования VP9 меня не спрашивайте. Меня просто спросили, а я разобрался :)

h4tr3d ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.