Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2016, 14:01   #1
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию Параметры медиа-контейнеров.

Появилась задача, в процессе решения которой требуется вытаскивать информашку из видео-файлов. Для начала меня интересует длительность и размеры кадра (длинь/ширь). Актуально для FLV, MP4, WEBM, MKV.
Чот часа 3 мучаю гугол, и нифига.


Поделитесь опытом, у кого он есть, плиз.

З.Ы. Как прочитать инфу из AVI - знаю (avifil32.dll).
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 18.02.2016, 15:27   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

никогда не сталкивался..
поиском наткнулся на статейку:
http://stackoverflow.com/questions/1...flv-mov-videos

посмотрите, вдруг найдёте что-то полезное..


А ещё, если не найдётся более цивильного варианта, то можно искать консольные утилиты (скорее всего для каждого контейнера - свою) и дёргать их, получая их вывод... Костыли, конечно, но, как вариант...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.02.2016, 15:32   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Костыли, конечно, но, как вариант...
Да, знаю, можно через параметры ffmpeg. Не вариант. Другие программы такой хернёй не занимаются. И я не хочу.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 18.02.2016, 15:57   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Вах-вах-вах, слющяй, сматри чаво нашол, да?
https://sourceforge.net/projects/ffdec/
Ща почитаю...
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 18.02.2016, 20:11   #5
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

Можно проще, DirectShow. Строишь граф, грузишь видео, через методы интерфейса IBasicVideo получаешь размеры кадра GetVideoSize(), битрейт get_BitRate(), длительность get_AvgTimePerFrame(). Работать будет на всех контейнерах, кодеки на которые есть в ОС.

Это же и одновременно недостаток - нет соответствущего кодека, граф не будет построен и параметры не будут определены.

p.s.: конечно, еще можно сигнатуру файла вычитывать )
kutani вне форума Ответить с цитированием
Старый 18.02.2016, 21:01   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

http://mediaarea.net/en/MediaInfo
waleri вне форума Ответить с цитированием
Старый 22.02.2016, 18:04   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Кароче, господа.
Задача решена. Кому интересно - обращайтесь.

308.png

Пример построил на основе чужих исходников, которые я честно украл вот тут в интернетах. Исходники старые, для delphi 7, поэтому пришлось обработать их напильником, кувалдой и русским матом.

Общая структура инфы медиафайлов имеет устрашающий вид.
Код:
type
  pSongInfo=^tSongInfo;
  tSongInfo = packed record
    artist   :pWideChar;
    title    :pWideChar;
    album    :pWideChar;
    genre    :pWideChar;
    comment  :pWideChar;
    year     :pWideChar;
    mfile    :pWideChar; // media file
    kbps     :dword;
    khz      :dword;
    channels :dword;
    track    :dword;
    total    :dword;     // music length
    time     :dword;     // elapsed time
    wndtext  :pWideChar; // window title
    player   :pWideChar; // player name
    plyver   :dword;     // player version
    icon     :THANDLE;   // player icon
    fsize    :dword;     // media file size
    vbr      :dword;
    status   :integer;   // WAT_MES_* const
    plwnd    :HWND;      // player window
    // video  part
    codec    :dword;
    width    :dword;
    height   :dword;
    fps      :dword;
    date     :int64;
    txtver   :pWideChar;
    lyric    :pWideChar;
    cover    :pWideChar; // cover path
    volume   :dword;
    url      :PWideChar; // player homepage
    winampwnd:HWND;
  end;
  pSongInfoW = pSongInfo;
  tSongInfoW = tSongInfo;
Главное, что интересующие меня поля в ней есть.

Список форматов, с которыми может работать мой пример: AAC, APE, AVI, DIVX, FLV, M4A, MP4, MOV, 3GP, MKV, MP3, MPG, MPEG, MPC, OFR, OFS, OGG, OGA, OGM, SPX, FLA, FLAC, RM, RA, RAM, TTA, WAV, WV, WMA, WMV, ASF.

з.ы. попутно прокачал свой скилл по поиску исходников в интернетах. грамотно гуглить – это вам не это!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 22.02.2016 в 19:42.
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка программы с использованием контейнеров-массивов Xumera C++ Builder 4 13.03.2014 20:32
Стеганография с использованием графических контейнеров + сжатие Шокир Общие вопросы Delphi 0 08.04.2013 15:28
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Юрий62 Помощь студентам 1 04.12.2011 14:09
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2010 17:28
Обработка массивов структур с использованием контейнеров artyom060791 Помощь студентам 0 14.04.2009 22:43