如何用c++调用mediainfo获取信息

如何用c++调用mediainfo获取信息,第1张

/  Copyright (c) MediaAreanet SARL All Rights Reserved
 
   Use of this source code is governed by a BSD-style license that can
   be found in the Licensehtml file in the root of the source tree
 /
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Example for MediaInfoLib
// Command line version
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#ifdef MEDIAINFO_LIBRARY
    #include "MediaInfo/MediaInfoh" //Staticly-loaded library (lib or a or so)
    #define MediaInfoNameSpace MediaInfoLib;
#else //MEDIAINFO_LIBRARY
    #include "MediaInfoDLL/MediaInfoDLLh" //Dynamicly-loaded library (dll or so)
    #define MediaInfoNameSpace MediaInfoDLL;
#endif //MEDIAINFO_LIBRARY
#include <iostream>
#include <iomanip>
using namespace MediaInfoNameSpace;
 
#ifdef __MINGW32__
    #ifdef _UNICODE
        #define _itot _itow
    #else //_UNICODE
        #define _itot itoa
    #endif //_UNICODE
#endif //__MINGW32
 
int main (int /argc/, Char  /argv[]/)
{
    //Information about MediaInfo
    MediaInfo MI;
    String To_Display=MIOption(__T("Info_Version"), __T("0713;MediaInfoDLL_Example_MSVC;0713"))c_str();
 
    To_Display += __T("\r\n\r\nInfo_Parameters\r\n");
    To_Display += MIOption(__T("Info_Parameters"))c_str();
 
    To_Display += __T("\r\n\r\nInfo_Codecs\r\n");
    To_Display += MIOption(__T("Info_Codecs"))c_str();
 
    //An example of how to use the library
    To_Display += __T("\r\n\r\nOpen\r\n");
    MIOpen(__T("Exampleogg"));
 
    To_Display += __T("\r\n\r\nInform with Complete=false\r\n");
    MIOption(__T("Complete"));
    To_Display += MIInform()c_str();
 
    To_Display += __T("\r\n\r\nInform with Complete=true\r\n");
    MIOption(__T("Complete"), __T("1"));
    To_Display += MIInform()c_str();
 
    To_Display += __T("\r\n\r\nCustom Inform\r\n");
    MIOption(__T("Inform"), __T("General;Example : FileSize=%FileSize%"));
    To_Display += MIInform()c_str();
 
    To_Display += __T("\r\n\r\nGet with Stream=General and Parameter=\"FileSize\"\r\n");
    To_Display += MIGet(Stream_General, 0, __T("FileSize"), Info_Text, Info_Name)c_str();
 
    To_Display += __T("\r\n\r\nGetI with Stream=General and Parameter=46\r\n");
    To_Display += MIGet(Stream_General, 0, 46, Info_Text)c_str();
 
    To_Display += __T("\r\n\r\nCount_Get with StreamKind=Stream_Audio\r\n");
    #ifdef __MINGW32__
        Char C1=new Char[33];
        _itot (MICount_Get(Stream_Audio), C1, 10);
        To_Display +=C1;
        delete[] C1;
    #else
        toStringStream SS;
        SS << std::setbase(10) << MICount_Get(Stream_Audio);
        To_Display += SSstr();
    #endif
 
    To_Display += __T("\r\n\r\nGet with Stream=General and Parameter=\"AudioCount\"\r\n");
    To_Display += MIGet(Stream_General, 0, __T("AudioCount"), Info_Text, Info_Name)c_str();
 
    To_Display += __T("\r\n\r\nGet with Stream=Audio and Parameter=\"StreamCount\"\r\n");
    To_Display += MIGet(Stream_Audio, 0, __T("StreamCount"), Info_Text, Info_Name)c_str();
 
    To_Display += __T("\r\n\r\nClose\r\n");
    MIClose();
 
    #ifdef _UNICODE
        std::wcout << To_Display;
    #else
        std::cout  << To_Display;
    #endif
 
    return 0;
}
 
//
// By buffer example
//
/
//---------------------------------------------------------------------------
//Note: you can replace file operations by your own buffer management class
#include <stdioh>
int main (int argc, Char argv[])
{
 
    //From: preparing an example file for reading
    FILE F=fopen("Exampleogg", "rb"); //You can use something else than a file
    if (F==0)
        return 1;
 
    //From: preparing a memory buffer for reading
    unsigned char From_Buffer=new unsigned char[7188]; //Note: you can do your own buffer
    size_t From_Buffer_Size; //The size of the read file buffer
 
    //From: retrieving file size
    fseek(F, 0, SEEK_END);
    long F_Size=ftell(F);
    fseek(F, 0, SEEK_SET);
 
    //Initializing MediaInfo
    MediaInfo MI;
 
    //Preparing to fill MediaInfo with a buffer
    MIOpen_Buffer_Init(F_Size, 0);
 
    //The parsing loop
    do
    {
        //Reading data somewhere, do what you want for this
        From_Buffer_Size=fread(From_Buffer, 1, 7188, F);
 
        //Sending the buffer to MediaInfo
        size_t Status=MIOpen_Buffer_Continue(From_Buffer, From_Buffer_Size);
        if (Status&0x08) //Bit3=Finished
            break;
 
        //Testing if there is a MediaInfo request to go elsewhere
        if (MIOpen_Buffer_Continue_GoTo_Get()!=(MediaInfo_int64u)-1)
        {
            fseek(F, (long)MIOpen_Buffer_Continue_GoTo_Get(), SEEK_SET);   //Position the file
            MIOpen_Buffer_Init(F_Size, ftell(F));                          //Informing MediaInfo we have seek
        }
    }
    while (From_Buffer_Size>0);
 
    //Finalizing
    MIOpen_Buffer_Finalize(); //This is the end of the stream, MediaInfo must finnish some work
 
    //Get() example
    String To_Display=MIGet(Stream_General, 0, __T("Format"));
 
    #ifdef _UNICODE
        std::wcout << To_Display;
    #else
        std::cout  << To_Display;
    #endif
}
/

以上就是关于如何用c++调用mediainfo获取信息全部的内容,包括:如何用c++调用mediainfo获取信息、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9574566.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存