The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск мультимедиа-пакета FFmpeg 3.1

27.06.2016 10:00

После четырёх месяцев разработки представлен мультимедиа-пакет FFmpeg 3.1, включающий набор приложений и коллекцию библиотек для операций над различными мультимедиа-форматами (запись, преобразование и декодирование звуковых и видеоформатов). Кроме изменений, созданных внутри проекта, в новую версию также включены все последние наработки, развиваемые в ветках ffmpeg-mt (многопоточное декодирование) и libav (форк FFmpeg). Пакет распространяется под лицензиями LGPL и GPL, разработка FFmpeg ведётся смежно с проектом MPlayer.

Из изменений, добавленных в FFmpeg 3.1, можно выделить:

  • Возможность применения VAAPI и libnpp/CUDA для аппаратного ускорения преобразования форматов и масштабирования видео;
  • Поддержка декодирования HEVC Main10 с задействованием средств аппаратного ускорения DXVA2;
  • Поддержка ускорения кодирования H.264, HEVC и MJPEG при помощи VAAPI;
  • Поддержка ускорения декодирования H264 и HEVC при помощи CUDA;
  • Новые фильтры:
    • fieldhint - создания новых кадров путём копирования верхнего и нижнего полей из окружающих кадров;
    • loop и aloop - фильтры для зацикливания кадров видео и образцов звука;
    • bwdif (Bob Weaver deinterlacing filter) - адаптивный алгоритм устранения чересстрочности в видео, использующий интерполяцию;
    • firequalizer - выравнивание частотных характеристик звука;
    • datascope - анализатор видеоданных;
    • bench и abench - измерение скорости работы произвольных видео и аудио фильтров;
    • ciescope - показывает диаграмму цветов CIE, отражающую распределение цветов пикселей;
    • colorspace - преобразование параметров цветов и трансформация из одного цветового пространства в другое;
    • hdcd - декодирует со звукового CD 16-разрядные PCM-данные c hdcd флагами в 20 разрядный PCM-поток;
    • readvitc - чтение информации об интервале кадрового гасящего импульса (VITC) из верхних строк видеокадра;
    • loudnorm - фильтр для линейной и динамической нормализации громкости;
    • coreimage - задействование аппаратного ускорения с привлечением GPU для обработки изображений и видео на платформе OS X (используется Apple CoreImage API);
    • remap - переназначение пикселей в видеопотоке;
    • bitstream - применение системы автоматической фильтрации битового потока для извлечения данных DTS.
  • Добавлены декодировщики для DST (Direct Stream Transfer), MediaCodec H264, MTAF, BitJazz SheerVideo, YUY2 Lossless Codec, MagicYUV, IFF ANIM, Duck TrueMotion 2.0 Real Time, DTS Express (LBR) и ADPCM IMA DAT4;
  • Добавлены распаковщики медиа-контейнеров (demuxer) для форматов musx, aix, WSD (Wideband Single-bit Data), MTAF и IFF ANIM;
  • Реализован API для ведения чёрного списка протоколов;
  • Добавлены распаковщики и упаковщики payload-данных (depacketizer и packetizer) для формата VC-2 HQ RTP. Упаковщик для формата VP9 RTP;
  • В декодировщик utvideo добавлена поддержка 10-разрядной глубины цвета;
  • Добавлены упаковщики медиа-контейнеров (muxer) для форматов hash и framehash;
  • Добавлен кодировщик Generic OpenMAX IL с поддержкой Raspberry Pi;
  • Обеспечена поддержка декодировщиков и кодировщиков фреймворка AudioToolbox;
  • Из поставки удалена библиотека libdcadec и прослойка libutvideo.


  1. Главная ссылка к новости (http://ffmpeg.org/download.htm...)
  2. OpenNews: Выпуск мультимедиа-пакета FFmpeg 3.0
  3. OpenNews: В FFmpeg устранена уязвимость, которая может привести к утечке локальных файлов
  4. OpenNews: Выпуск мультимедиа-пакета FFmpeg 2.8 с обилием новых фильтров
  5. OpenNews: Лидер проекта FFmpeg сложил с себя полномочия
  6. OpenNews: Утверждён переход Debian на FFmpeg
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44674-ffmpeg
Ключевые слова: ffmpeg
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (34) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Mihail Zenkov (ok), 11:44, 27/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > hdcd - декодирует со звукового CD 16-разрядные PCM-данные c hdcd флагами в 20 разрядный PCM-поток;

    Декодировщик добавили спустя двадцать лет. Кодировщика, очевидно, не будет. Слава патентам! Еще одна интересная технология была благополучна ими похоронена ...

     
     
  • 2.7, Аноним (-), 12:18, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Зачем тратить время на кодировщик который уже не актуален по всем техническим параметрам? Сейчас более актуален декодировщик, чтобы хотя бы раскодировать то что накодировали.
     
     
  • 3.13, Mihail Zenkov (ok), 14:18, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Так я о том и говорю - нет смысла писать кодировщик, когда cd-audio фактически умер.

    > Сейчас более актуален декодировщик, чтобы хотя бы раскодировать то что накодировали.

    Даже он не особо актуален, так как сам формат не получил широкого распространения.

     
     
  • 4.18, Stax (ok), 14:59, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Это как сказать.
    Иногда внезапно при проигрывании очередного диска можно увидеть, как загорается индикатор "hdcd". Даже когда на самом диске ничего не указано. Это я к тому, что их определенно больше, чем кажется, я совершенно случайно натыкался на hdcd диски, узнавая об этом уже при проигрывании.

    А еще это важно, потому что без понимания, что это hdcd он воспроизводится не так хорошо (уровни громкости фрагментов друг относительно друга могут быть неправильные, возможен клиппинг и прочие неприятности). Формат "совместим" с не-HDCD проигрыванием только в том смысле, что звучать будет, но не совсем то, что записывали.

    И т.к. все это переносится при любом loseless рипе и кодировании - flac, рипнутый с таких дисков тоже требует hdcd-aware декодера, чтобы звучать корректно. Без этого - звучит с огрехами. Так что либо надо во все проигрыватели поддержку hdcd при проигрывании, либо при рипе расшифровывать hdcd и превращать его в 24-х битный flac уже без этих странных технологий (там, конечно, 20 бит, но так не выйдет). В принципе, сейчас, когда есть декодер, можно пройтись по библиотеке и расшифровать найденные hdcd, перекодируя их в 24-х битные записи без hdcd.

     
     
  • 5.22, Mihail Zenkov (ok), 19:23, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Хотел проверить сколько же реально hdcd у меня в коллекции.
    Написал скрипт:
    ffmpeg -v error -i "$1" -f wav - | md5sum
    ffmpeg -v error -i "$1" -af hdcd -f wav - | md5sum

    При декодировании с фильтром hdcd сумма всегда другая. Вероятно фильтр работает некорректно и вносит изменения даже там, где они не нужны :(

     
     
  • 6.25, Stax (ok), 21:03, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Эээ не совсем. Это фильтр, если его активировали, он всегда работает. Выходной формат фильтра заявлен как 24 бита (смысл фильтра же в распаковке 16 bit -> 20 bit). Ну а дальше.. просто ffmpeg так работает. Если HDCD-меток нет, получаем преобразование 16->24 бита без какого-либо преобразования. Но сумма, конечно, не сойдется.

    В текущем виде это более пригодно для проигрывателя. Преобразование 16->24 будет всегда (ну и что такого), но если были HDCD-метки, будет преобразование.

    Насчет выяснить. Надо понимать, что фильтр пригоден только для 44100 файлов, не надо через него гнать 48khz записи. По ссылке https://trac.ffmpeg.org/ticket/4441#comment:13 предлагают старый конвертер (на 64-х битной системе сделать замены типа, как описано в тикете). Он после конвертации пишет что-то типа "Total = 0  A = 0    B = 0     C= 0". Вот если Total отличен от нуля, было преобразование.

     
     
  • 7.27, Mihail Zenkov (ok), 22:02, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В первом моем варианте оба выходных формата были s16le.

    При варианте s24le сумма все равно разная.
    ffmpeg  -i "$1" -f s24le - | md5sum
    ffmpeg  -i "$1" -af hdcd -f s24le - | md5sum

     
     
  • 8.28, Stax (ok), 22:18, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ээ результат hdcd-декодирования в 16 бит положить невозможно Искажения буд... текст свёрнут, показать
     
     
  • 9.30, Mihail Zenkov (ok), 00:27, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Очень даже возможно Не будет Начнем с того, что 16 бит с дитерингом вполне... большой текст свёрнут, показать
     
     
  • 10.32, Stax (ok), 15:01, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Будут элементарно Проще показать на примере, вместо вместо 24 бит - 8, вместо 1... большой текст свёрнут, показать
     
     
  • 11.34, Mihail Zenkov (ok), 16:49, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вы наверное отпечатались в вашем примере будет 0011 Вы не учитываете два факта... текст свёрнут, показать
     
     
  • 12.36, Stax (ok), 18:20, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Это просто был пример, почему после hdcd-декодирования в 16 бит без дальнейших п... текст свёрнут, показать
     
     
  • 13.37, Mihail Zenkov (ok), 20:22, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    При преобразовании HDCD в 16 бит мы по сути делаем тоже самое, что и звукорежисс... текст свёрнут, показать
     
  • 9.31, Mihail Zenkov (ok), 12:04, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Проверил свою коллекцию metal rock classic jazz flac - нашел семь альбомов Эт... текст свёрнут, показать
     
     
  • 10.33, Stax (ok), 15:09, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ну кое-что Ясненько Вообще реальный проигрыватель по-моему смотрит на тэги т... текст свёрнут, показать
     
     
  • 11.35, Mihail Zenkov (ok), 16:55, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    mpv Но он больше для видео Возможно есть удобный frontend Я пока не все прове... текст свёрнут, показать
     

  • 1.2, robux (ok), 11:44, 27/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Есть какая-нибудь годная кроссплатформенная обёртка для использования FFmpeg (только не Gstreamer) в виде библиотеки, чтобы просто подавать на вход сырые медиа данные и получать закодированные, не погружаться в адовый API FFmpeg'а?
     
     
  • 2.4, Аноним (-), 11:56, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    обертка на каком языке (вообще, их как грязи на любом)? И чем плохо запускать его просто из командной строки?
     
     
  • 3.5, Аноним (-), 12:11, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вероятно, он хочет на Ruby для своего проекта Pandoranet. Там впрочем, довольно странная архитектура. Лучше бы разделить на модули, сделать основу да отдать остальные модули (типа видеосвязи, бухгалтерия и прочее) на откуп обществу.
     
  • 3.6, robux (ok), 12:12, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В идеале на ruby. Уже сижу покуриваю:
    https://github.com/petems/mplayer-ruby
    http://www.rubygemsearch.com/ruby-gems/search?q=mplayer
    https://www.mplayerhq.hu/DOCS/HTML/ru/MPlayer.html#streaming

    И да, для Пандоры.
    Gstreamer, который я использовал, поломали вместе с переходом Gtk2->Gtk3.
    Он и раньше-то только в лине работал (в винде нет), а щас и в лине перестал.

     
  • 2.8, Аноним (-), 12:22, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +11 +/
    команды ffmpeg и man ffmpeg - самые переносимые и самые гибкие.
    перекодировка сначала отрабатывается на куске файла (опции -ss и -t, использовать перед -i), команда корректируется в какомнить .sh-файле, после чего -ss и -t убираются и перекодировывается вся вещь.
    в качестве краткого ликбеза вот пример команды:
    ffmpeg -i входнойфайл -map 0:v -map 0:a:1 -map 0:s:0 -f matroska -s 720x406 -c:v libx264 -threads:v 2 -c:a:0 libmp3lame -threads:a:0 1 -c:s:0 copy out.mkv
    это значит:
    1. -map: из файла "входнойфайл" (первый файл - индекс 0 в -map) взять видеопоток (0:v), второй аудиопоток (0:a:1) и первый поток субтитров (0:s:0);
    2. -f: закодировать це всё в матрёшку (mkv);
    3. -s: разрешение итогового видео;
    4. -c: кодировщики: закодировать видеопоток кодеком libx264, выполнять двумя потоками (-threads:v 2), закодировать первый аудиопоток выходного файла (он был вторым во входном файле, но -map 0:a:1 было первым аудиопотоком, поэтому в выходном файле он первый) кодеком libmp3lame, выполнять в один поток; субтитры - скопировать;
    5. результат записать в out.mkv.
    как-то так.
    интерфейс понятен как интеллектуально - через ман, - так и интуитивно - интуиция подсказывает, что команды надо как-то ввести. скорее всего с клавиатуры.
    лучше всяких визивигов и прочих мелкомягких плюшек.
    поэтому как-то так...
     
     
  • 3.11, Аноним (-), 13:50, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >2. -f: закодировать це всё в матрёшку (mkv);

    зачем это нужно, если формат контейнера и так определится по расширению?

     
     
  • 4.14, 5kbps (ok), 14:24, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    На случай, если расширение другое.
     
  • 4.15, Аноним (-), 14:24, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    на практике это можно не использовать, но в христоматийном примере оно должно фигурировать - ради пущей определённости.
     
  • 3.21, robux (ok), 19:21, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > команды ffmpeg и man ffmpeg - самые переносимые и самые гибкие.

    Я уже пытался использовать "голый" ffmpeg.

    Если в лине ещё можно поток (pipe) выдёргивать прямо из консоли и в ruby его читать, то винде такое невозможно (ведь я прав, да?). Т.е. первая проблема при съёме данных с камеры и микрофона в винде и передачи их в Пандору.

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

    Я эту проблему пытался решить пару лет назад (https://www.linux.org.ru/forum/development/10645570), в итоге родилось костыльное решение:
    1) медиа-поток(и) с камеры и микрофона из ffmpeg'а вываливать на локальный udp-порт
    2) снимать с локального udp Пандорой и посылать другой строне
    3) другая сторона принимает поток, запускает свой mplayer и говорит ему в какое окно пулять видео (xid одного из окон Пандоры).

    Костыльно, но по идее должно работать, я эксперименты в лине проводил, но так и не проверил в винде - может ли виндовый mplayer выводить в указанное виндовое окошко).

    Мне не нравится, что придётся плодить udp-потоки. Всё-таки хотелось бы как-то напрямую:
    1) брать в винде данные;
    2) выводить видео во внутреннее окно.
    Но такого фреймворка (кроме сговнявшегося Гстримера) я пока найти не могу.

     
     
  • 4.29, Аноним (-), 23:03, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Если в лине ещё можно поток (pipe) выдёргивать прямо из консоли и в ruby его читать, то винде такое невозможно (ведь я прав, да?).

    Пайпы и возможность гонять произвольные данные через стандартные потоки ввода-вывода в винде есть. Умеют ли это виндовые сборки Ruby и ffmpeg -- вопрос отдельный.

     
  • 4.38, dq0s4y71 (??), 16:38, 29/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Если в лине ещё можно поток (pipe) выдёргивать прямо из консоли и
    > в ruby его читать, то винде такое невозможно (ведь я прав,
    > да?). Т.е. первая проблема при съёме данных с камеры и микрофона
    > в винде и передачи их в Пандору.

    А что, в винде  "ffmpeg ... -" не работает?

     
  • 2.9, Аноним (-), 12:23, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    handbrake.fr
     

  • 1.10, Аноним (-), 13:45, 27/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > CUDA

    5 лет ждал. И хоть бы один Closed Source дал бы это за деньги в 2011!

     
  • 1.12, ipony (?), 14:14, 27/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Теперь я успею перегнать все свои мультики с пони.
     
     
  • 2.24, iPony (?), 20:53, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А зачем их перегонять? Не самогон же.
     
  • 2.26, VJLink (?), 21:29, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    FIXED
    Теперь я успею погонять на все свои мультики с пони.
     

  • 1.16, anonymous (??), 14:27, 27/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    API серьёзно перелопатили.
     
  • 1.19, 5kbps (ok), 15:45, 27/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >  Реализован API для ведения чёрного списка протоколов;

    Эта самое нужное нововведение во всём релизе. Теперь при вскрытии очередной дыры пересборка не потребуется.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру