Доброго дня!
Сейчас для получения информации о потоках в мультимедиа-файле, такие как кодек, разрешение, битрейт и т.п., используется ffmpeg. В общем работает, но есть файлы на которых не справляется и что важнее, он несколько монструозен.
Есть какие-либо аналоги ffmpeg позволяющие получить информацию о потоках в мультимедиа-файле?
Спасибо.
получение информации о мультимедиа-файле
Модератор: Модераторы разделов
-
azsx
- Сообщения: 3684
- ОС: calculate linux, debian, ubuntu
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: получение информации о мультимедиа-файле
Название трек более привычно?
Для примера возьмём avi-файл, он содердит видео, для простоты обычно один трек, но может быть и больше, несколько звуковых дорожек с разными языками и, скажем, несколько дорожек с субтитрами, тоже с разными языками.
medainfo всё же больше программа, а не библиотека
Для примера возьмём avi-файл, он содердит видео, для простоты обычно один трек, но может быть и больше, несколько звуковых дорожек с разными языками и, скажем, несколько дорожек с субтитрами, тоже с разными языками.
medainfo всё же больше программа, а не библиотека
-
Bizdelnick
- Модератор
- Сообщения: 21528
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: получение информации о мультимедиа-файле
Вы бы более подробно задачу обрисовали. Я вот тоже сразу не понял, идёт речь о библиотеке или о программе. И с какими конкретно файлами проблемы?
Если хотите что-то всеядное, оно по определению будет монструозным.
Если хотите что-то всеядное, оно по определению будет монструозным.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: получение информации о мультимедиа-файле
Задача проста - приложение должно проигрывать локальные файлы, сейчас для их анализа используется ffmpeg.
Пример "хитрого" файла, основываясь на данных ffmpeg при проигрывании отсутствует звук
Но надо быть чесным, пока это единственный пример когда 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, s16pShell
$ 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%)-
Vascom
- Сообщения: 1699
- ОС: Fedora 32
-
Bizdelnick
- Модератор
- Сообщения: 21528
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: получение информации о мультимедиа-файле
Так может быть, и не стоит по этому поводу заморачиваться? Вы уверены, что этот файл полностью корректен?
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: получение информации о мультимедиа-файле
Спасибо, на сайте наличие либы как-то не афишируется, посмотрю https://mediaarea.net/ru/MediaInfo/Download/Source
Можно оставить и так, но это embedded-устройство и хочется уменьшить время сборки, результирующий размер и количество внешних зависимостей.Bizdelnick писал: ↑17.06.2019 18:20Так может быть, и не стоит по этому поводу заморачиваться? Вы уверены, что этот файл полностью корректен?
У каждого свои тараканы и чувство прекрасного
Добавлено (21:48):
Нет, MediaInfo пожалуй не пойдёт, отдаёт инфориацию строками, удобно вывести в консоль, но использовать для чего-лиюо другого не очень удобно.-
Vascom
- Сообщения: 1699
- ОС: Fedora 32
Re: получение информации о мультимедиа-файле
Разберись до конца.
Там есть разные форматы выдачи информации, хоть в json.
Mediainfo сейчас по факту единственное нормальное приложение и библиотека для получения любой информации о любом медиафайле. Даже в винде.
К тому же это open source, можешь взять и переделать под себя.
Всё остальное, что ты сможешь найти, может быть только хуже.
Там есть разные форматы выдачи информации, хоть в json.
Mediainfo сейчас по факту единственное нормальное приложение и библиотека для получения любой информации о любом медиафайле. Даже в винде.
К тому же это open source, можешь взять и переделать под себя.
Всё остальное, что ты сможешь найти, может быть только хуже.
-
IMB
- Сообщения: 2567
- ОС: Debian
-
Vascom
- Сообщения: 1699
- ОС: Fedora 32
Re: получение информации о мультимедиа-файле
Так что мешает использовать библиотеку?
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: получение информации о мультимедиа-файле
На данный момент я не вижу как получить информацию в бинарном виде, грубо говоря кодеку H264 должно соответствовать значение 1, а не строка "H264", но посмотрю ещё.
-
Vascom
- Сообщения: 1699
- ОС: Fedora 32
Re: получение информации о мультимедиа-файле
На каком языке программирования?
Не знаешь как сравнить строки?
Не знаешь как сравнить строки?
-
Bizdelnick
- Модератор
- Сообщения: 21528
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: получение информации о мультимедиа-файле
Ну так можно сконфигурировать ffmpeg с необходимым минимумом функционала. Хоть вообще только libavformat собрать.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |