Russian Qt Forum
Сентябрь 21, 2024, 15:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Получить информацию о видео  (Прочитано 8231 раз)
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

Или подскажите с помощью чего это можно реализовать.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #1 : Август 11, 2009, 09:38 »

Неплохо зарекомендовала себя MediaInfo http://mediainfo.sourceforge.net/ru
Записан
XpycT
Гость
« Ответ #2 : Август 11, 2009, 10:16 »

Спасибо, буду разбираться.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 11, 2009, 11:37 »

Посмотри исходники SMPlayer, там это есть.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
XpycT
Гость
« Ответ #4 : Август 11, 2009, 12:38 »

Посмотри исходники SMPlayer, там это есть.
SMPlayer это ведь оболочка для mplayer, и я так понимаю инфу о видео он тоже через него получает...
Первая библиотека вроде подошла..пример скомпилитлся нормально, осталось только прикрутить к проекту. Но спасибо за совет Подмигивающий
Записан
XpycT
Гость
« Ответ #5 : Август 11, 2009, 20:20 »

Неплохо зарекомендовала себя MediaInfo http://mediainfo.sourceforge.net/ru

Такой вопрос, как его корректно вкрутить в Qt проект . Примеры компилятся нормально, но вот когда я пытаюсь его всунуть допустим в тот же консольный Qt и вывести через qDebug(), то кроме как мессаги вида "0xdce0d3" ничего не получаю Грустный. Да и кстате при компиляции в Qt он матерится на вывод std::cout  << To_Display;, хотя в чистом Си такого не наблюдается.
Записан
XpycT
Гость
« Ответ #6 : Август 13, 2009, 13:13 »

Все проблему решил, можете не отвечать Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Август 13, 2009, 16:36 »

Дык сам ответь, другим поможешь. А еще лучше ответь и в вики закинь статейку.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
XpycT
Гость
« Ответ #8 : Август 15, 2009, 10:40 »

Под винду реализация такова. Суть - перегнать инфо о файле в QTextEdit.

Реализовал таким способом:
1) качаем готовую сборку с DLL на http://mediainfo.sourceforge.net/ru. В моем случае это был MediaInfo_DLL_0.7.20_Windows_i386_WithoutInstaller.7z
2) Пробуем собрать пример под 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 и юзам на здоровье Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.167 секунд. Запросов: 23.