получение информации о мультимедиа-файле

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

получение информации о мультимедиа-файле

Сообщение IMB »

Доброго дня!
Сейчас для получения информации о потоках в мультимедиа-файле, такие как кодек, разрешение, битрейт и т.п., используется ffmpeg. В общем работает, но есть файлы на которых не справляется и что важнее, он несколько монструозен.
Есть какие-либо аналоги ffmpeg позволяющие получить информацию о потоках в мультимедиа-файле?
Спасибо.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: получение информации о мультимедиа-файле

Сообщение azsx »

IMB писал(а):
17.06.2019 11:39
позволяющие получить информацию о потоках в мультимедиа-файле?
mediainfo
ps
не знаю, что такое "потоки".
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: получение информации о мультимедиа-файле

Сообщение IMB »

Название трек более привычно? :)

Для примера возьмём avi-файл, он содердит видео, для простоты обычно один трек, но может быть и больше, несколько звуковых дорожек с разными языками и, скажем, несколько дорожек с субтитрами, тоже с разными языками.

medainfo всё же больше программа, а не библиотека
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21528
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: получение информации о мультимедиа-файле

Сообщение Bizdelnick »

Вы бы более подробно задачу обрисовали. Я вот тоже сразу не понял, идёт речь о библиотеке или о программе. И с какими конкретно файлами проблемы?
Если хотите что-то всеядное, оно по определению будет монструозным.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: получение информации о мультимедиа-файле

Сообщение IMB »

Задача проста - приложение должно проигрывать локальные файлы, сейчас для их анализа используется ffmpeg.

Пример "хитрого" файла, основываясь на данных ffmpeg при проигрывании отсутствует звук

Shell

$ ffprobe adam_15_mpeg2mp@ll_eac.352x240.mpg
ffprobe version 3.2.5-1~bpo8+1 Copyright (c) 2007-2017 the FFmpeg developers
.......
[mpeg @ 0x5641c9f8f200] decoding for stream 1 failed
[mpeg @ 0x5641c9f8f200] Could not find codec parameters for stream 1 (Audio: mp2, 0 channels, s16p): unspecified frame size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpeg, from 'adam_15_mpeg2mp@ll_eac.352x240.mpg':
Duration: 00:05:42.71, start: 0.533367, bitrate: 1831 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 352x240 [SAR 40:33 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x1c0]: Audio: mp2, 0 channels, s16p

Shell

$ mediainfo adam_15_mpeg2mp@ll_eac.352x240.mpg
General
Complete name : adam_15_mpeg2mp@ll_eac.352x240.mpg
Format : MPEG-PS
File size : 74.8 MiB
Duration : 5mn 42s
Overall bit rate mode : Variable
Overall bit rate : 1 831 Kbps

Video
ID : 224 (0xE0)
Format : MPEG Video
Format version : Version 2
Format profile : Main@Low
Format settings, BVOP : Yes
Format settings, Matrix : Default
Format settings, GOP : M=3, N=15
Format settings, picture structure : Frame
Duration : 5mn 42s
Bit rate mode : Variable
Bit rate : 1 411 Kbps
Maximum bit rate : 2 000 Kbps
Width : 352 pixels
Height : 240 pixels
Display aspect ratio : 16:9
Frame rate : 29.970 fps
Standard : NTSC
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Interlaced
Scan order : Bottom
Field First Compression mode : Lossy
Bits/(Pixel*Frame) : 0.557
Time code of first frame : 00:00:00:00
Time code source : Group of pictures header
Stream size : 57.6 MiB (77%)

Audio
ID : 192 (0xC0)
Format : E-AC-3
Format/Info : Audio Coding 3
Format settings, Endianness : Big
Duration : 5mn 42s
Bit rate mode : Constant
Bit rate : 384 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 KHz
Compression mode : Lossy
Stream size : 15.7 MiB (21%)
Но надо быть чесным, пока это единственный пример когда ffmpeg ошибся :)
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: получение информации о мультимедиа-файле

Сообщение Vascom »

IMB писал(а):
17.06.2019 12:41
medainfo всё же больше программа, а не библиотека
libmediainfo
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21528
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: получение информации о мультимедиа-файле

Сообщение Bizdelnick »

IMB писал(а):
17.06.2019 14:09
Но надо быть чесным, пока это единственный пример когда ffmpeg ошибся
Так может быть, и не стоит по этому поводу заморачиваться? Вы уверены, что этот файл полностью корректен?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: получение информации о мультимедиа-файле

Сообщение IMB »

Vascom писал:
17.06.2019 18:01
IMB писал(а):
17.06.2019 12:41
medainfo всё же больше программа, а не библиотека
libmediainfo
Спасибо, на сайте наличие либы как-то не афишируется, посмотрю https://mediaarea.net/ru/MediaInfo/Download/Source
Bizdelnick писал:
17.06.2019 18:20
IMB писал(а):
17.06.2019 14:09
Но надо быть чесным, пока это единственный пример когда ffmpeg ошибся
Так может быть, и не стоит по этому поводу заморачиваться? Вы уверены, что этот файл полностью корректен?
Можно оставить и так, но это embedded-устройство и хочется уменьшить время сборки, результирующий размер и количество внешних зависимостей.

У каждого свои тараканы и чувство прекрасного :blush:
Добавлено (21:48):
Нет, MediaInfo пожалуй не пойдёт, отдаёт инфориацию строками, удобно вывести в консоль, но использовать для чего-лиюо другого не очень удобно.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: получение информации о мультимедиа-файле

Сообщение Vascom »

Разберись до конца.
Там есть разные форматы выдачи информации, хоть в json.

Mediainfo сейчас по факту единственное нормальное приложение и библиотека для получения любой информации о любом медиафайле. Даже в винде.

К тому же это open source, можешь взять и переделать под себя.

Всё остальное, что ты сможешь найти, может быть только хуже.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: получение информации о мультимедиа-файле

Сообщение IMB »

Vascom писал:
18.06.2019 06:40
Разберись до конца.
Там есть разные форматы выдачи информации, хоть в json.
Спасибо, ещё посмотрю, мне надо встраивать в другое приложение и поэтому любой тестовой вывод неудобен.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: получение информации о мультимедиа-файле

Сообщение Vascom »

Так что мешает использовать библиотеку?
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: получение информации о мультимедиа-файле

Сообщение IMB »

На данный момент я не вижу как получить информацию в бинарном виде, грубо говоря кодеку H264 должно соответствовать значение 1, а не строка "H264", но посмотрю ещё.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: получение информации о мультимедиа-файле

Сообщение Vascom »

На каком языке программирования?
Не знаешь как сравнить строки?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21528
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: получение информации о мультимедиа-файле

Сообщение Bizdelnick »

IMB писал(а):
17.06.2019 21:25
хочется уменьшить время сборки, результирующий размер и количество внешних зависимостей
Ну так можно сконфигурировать ffmpeg с необходимым минимумом функционала. Хоть вообще только libavformat собрать.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: