Название: Получить информацию о видео
Отправлено: XpycT от Август 11, 2009, 09:20
Возможно ли средствами Qt получить метаданные с видео файла. Смотрел в сторону Photon, но как я понял там данные только для аудио и всего несколько. А надо что-то вроде D:\downloads\13-j.rajon.Ultimatum.2009.P.DVDRip_THE-FILM.RU.avi General Complete name : D:\downloads\13-j.rajon.Ultimatum.2009.P.DVDRip_THE-FILM.RU.avi Format : AVI Format/Info : Audio Video Interleave File size : 1.37 GiB Duration : 1h 36mn Overall bit rate : 2 022 Kbps Movie name : Banlieue 13 Ultimatum (2009) Director : ELEKTRI4KA & VANO Writing application : VirtualDubMod 1.5.4.1 (build 2178/release) Copyright : http://uniongang.ru/ Video Format : MPEG-4 Visual Format profile : Streaming Video@L1 Format settings, BVOP : Yes Format settings, QPel : No Format settings, GMC : No warppoints Format settings, Matrix : Custom Codec ID : XVID Codec ID/Hint : XviD Duration : 1h 36mn Bit rate : 1 564 Kbps Width : 704 pixels Height : 304 pixels Display aspect ratio : 2.35 Frame rate : 25.000 fps Resolution : 24 bits Colorimetry : 4:2:0 Scan type : Progressive Bits/(Pixel*Frame) : 0.292 Stream size : 1.06 GiB (77%) Writing library : XviD 1.2.0.dev47 (UTC 2006-11-01) Audio Format : AC-3 Format/Info : Audio Coding 3 Codec ID : 2000 Duration : 1h 36mn Bit rate mode : Constant Bit rate : 448 Kbps Channel(s) : 6 channels Channel positions : Front: L C R, Rear: L R, LFE Sampling rate : 48.0 KHz Stream size : 310 MiB (22%) Alignment : Split accross interleaves Interleave, duration : 40 ms (1.00 video frame) Interleave, preload duration : 500 ms Или подскажите с помощью чего это можно реализовать.
Название: Re: Получить информацию о видео
Отправлено: Hellraiser от Август 11, 2009, 09:38
Неплохо зарекомендовала себя MediaInfo http://mediainfo.sourceforge.net/ru (http://mediainfo.sourceforge.net/ru)
Название: Re: Получить информацию о видео
Отправлено: XpycT от Август 11, 2009, 10:16
Спасибо, буду разбираться.
Название: Re: Получить информацию о видео
Отправлено: Пантер от Август 11, 2009, 11:37
Посмотри исходники SMPlayer, там это есть.
Название: Re: Получить информацию о видео
Отправлено: XpycT от Август 11, 2009, 12:38
Посмотри исходники SMPlayer, там это есть.
SMPlayer это ведь оболочка для mplayer, и я так понимаю инфу о видео он тоже через него получает... Первая библиотека вроде подошла..пример скомпилитлся нормально, осталось только прикрутить к проекту. Но спасибо за совет ;)
Название: Re: Получить информацию о видео
Отправлено: XpycT от Август 11, 2009, 20:20
Неплохо зарекомендовала себя MediaInfo http://mediainfo.sourceforge.net/ru (http://mediainfo.sourceforge.net/ru)
Такой вопрос, как его корректно вкрутить в Qt проект . Примеры компилятся нормально, но вот когда я пытаюсь его всунуть допустим в тот же консольный Qt и вывести через qDebug(), то кроме как мессаги вида "0xdce0d3" ничего не получаю :(. Да и кстате при компиляции в Qt он матерится на вывод std::cout << To_Display;, хотя в чистом Си такого не наблюдается.
Название: Re: Получить информацию о видео
Отправлено: XpycT от Август 13, 2009, 13:13
Все проблему решил, можете не отвечать :)
Название: Re: Получить информацию о видео
Отправлено: Пантер от Август 13, 2009, 16:36
Дык сам ответь, другим поможешь. А еще лучше ответь и в вики закинь статейку.
Название: Re: Получить информацию о видео
Отправлено: XpycT от Август 15, 2009, 10:40
Под винду реализация такова. Суть - перегнать инфо о файле в QTextEdit. Реализовал таким способом: 1) качаем готовую сборку с DLL на http://mediainfo.sourceforge.net/ru (http://mediainfo.sourceforge.net/ru). В моем случае это был MediaInfo_DLL_0.7.20_Windows_i386_WithoutInstaller.7z2) Пробуем собрать пример под MinGW (там проект на CodeBlock), если собирается нормально, мереходим к шагу 3, если нет , то качаем другую , допустим версия 7.9 у меня напрочь отказывалась собираться :). 3) Начинаем прикручивать к проекту: a)в pro добавляем путь к исходикам C++ (Qt) win32 { INCLUDEPATH += .\ ../../3rdparty/MediaInfo_DLL_0.7.20_Windows_i386/Developers/Source } б) В начале нашего файла инклудим заголовки исходя из того, что вы хотите - статику или динамику C++ (Qt) #ifdef MEDIAINFO_LIBRARY #include "MediaInfo/MediaInfo.h" //Staticl #define MediaInfoNameSpace MediaInfoLib; #else //MEDIAINFO_LIBRARY #include "MediaInfoDLL/MediaInfoDLL.h" //Dynamicl #define MediaInfoNameSpace MediaInfoDLL; #endif //MEDIAINFO_LIBRARY #include <iostream> #include <iomanip> using namespace MediaInfoNameSpace; в) Создаем нужное действие (кнопка,меню и т.п.) и крепим его к слоту. C++ (Qt) void MainWindow::getMediaInfo() { // Обьявляем полностью все поддерживаемые форматы :) QString formats; formats.append(tr("All supported formats (*.mkv *.mka *.mks *.ogg *.ogm *.avi *.wav *.mpeg *.mpg *.vob *.mp4 *.mpgv *.mpv *.m1v *.m2v *.mp2 *.mp3 *.asf *.wma *.wmv *.qt *.mov *.rm *.rmvb *.ra *.ifo *.ac3 *.dts *.aac *.ape *.mac *.flac *.dat *.aiff *.aifc *.au *.iff *.paf *.sd2 *.irca *.w64 *.mat *.pvf *.xi *.sds *.avr)")); formats.append(tr("Matroska (*.mkv *.mka *.mks);;")); formats.append(tr("Ogg (*.ogg *.ogm);;")); formats.append(tr("Riff (*.avi *.wav);;")); formats.append(tr("Mpeg 1&2 container (*.mpeg *.mpg *.vob);;")); formats.append(tr("Mpeg 4 container (*.mp4);;")); formats.append(tr("Mpeg video specific (*.mpgv *.mpv *.m1v *.m2v);;")); formats.append(tr("Mpeg audio specific (*.mp2 *.mp3);;")); formats.append(tr("Windows Media (*.asf *.wma *.wmv);;")); formats.append(tr("Quicktime (*.qt *.mov);;")); formats.append(tr("Real (*.rm *.rmvb *.ra);;")); formats.append(tr("DVD-Video (*.ifo);;")); formats.append(tr("AC3 (*.ac3);;")); formats.append(tr("DTS (*.dts);;")); formats.append(tr("AAC (*.aac);;")); formats.append(tr("Monkey's Audio (*.ape *.mac);;")); formats.append(tr("Flac (*.flac);;")); formats.append(tr("CDXA, like Video-CD (*.dat);;")); formats.append(tr("Apple/SGI (*.aiff *.aifc);;")); formats.append(tr("Sun/NeXT (*.au);;")); formats.append(tr("Amiga IFF/SVX8/SV16 (*.iff);;")); formats.append(tr("Ensoniq PARIS (*.paf);;")); formats.append(tr("Sound Designer 2 (*.sd2);;")); formats.append(tr("Berkeley/IRCAM/CARL (*.irca);;")); formats.append(tr("SoundFoundry WAVE 64 (*.w64);;")); formats.append(tr("Matlab (*.mat);;")); formats.append(tr("Portable Voice format (*.pvf);;")); formats.append(tr("FastTracker2 Extanded (*.xi);;")); formats.append(tr("Midi Sample dump Format (*.sds);;")); formats.append(tr("Audio Visual Research (*.avr);;")); QString media=QFileDialog::getOpenFileName(0,tr("Select Media File"), QDir::homePath(), formats); if(media.isEmpty()) return; MediaInfo MI; MI.Open(media.toStdWString()); // конвертируем путь к файлу в нужный формат и открываем медиа файл MI.Option(_T("Complete")); // Получение сжатой информации (Общее, Видео и Аудио дорожки) String To_Display = MI.Inform().c_str(); editor->append(QString::fromStdWString(To_Display)); // editor это наследник QTextEdit :) }
Вот и все, ложим к проге MediaInfo.dll и юзам на здоровье :)
|