生活随笔
收集整理的這篇文章主要介紹了
MediaInfo在VS2019下的编译和使用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 準(zhǔn)備工作
- MediaInfo編譯
- MediaInfo的使用
- 相關(guān)資源下載
準(zhǔn)備工作
下載源碼 下載地址
MediaInfo編譯
將下載好的壓縮包進(jìn)行解壓,用VS打開MediaInfoLib.sln,生成解決方案(我選擇的是Release版本,64位)
此時(shí)出現(xiàn)報(bào)錯(cuò)
打開Visual Studio Installer,點(diǎn)擊修改,勾選最新版本的SDK,進(jìn)行更新。
更新完畢,重新打開項(xiàng)目,點(diǎn)擊項(xiàng)目→重定解決方案,選擇剛才下載的Windows SDK
點(diǎn)擊生成→重新生成解決方案,成功
現(xiàn)在vs項(xiàng)目目錄下會(huì)出現(xiàn)編譯好的MediaInfo.dll和MediaInfo.lib文件
在Source/MediaInfoDLL目錄下找到需要引入到我們自己項(xiàng)目中的MediaInfoDLL.h文件
MediaInfo的使用
我的需求是在Qt項(xiàng)目中使用MediaInfo,看了不少文章,在vs項(xiàng)目中都是直接include頭文件,添加lib和dll,再聲明命名空間就可以使用MediaInfo類,但我直接在Qt里面這樣做會(huì)報(bào)錯(cuò),具體什么原因沒有找到,但參考某位大佬的博文,對(duì)MediaInfo類進(jìn)行封裝,就可以正常使用了。
首先,先把MediaInfo.dll添加到應(yīng)用程序所在的路徑下(這個(gè)路徑具體是哪里因個(gè)人設(shè)定而異),
其次,將MediaInfo.lib放到你想放的位置,然后在.pro文件中用LIBS +=語(yǔ)句引入,這里我還是將lib文件放到應(yīng)用程序所在的目錄
最后,將MediaInfoDLL.h文件放到你想要的位置,并在.pro文件中引入這個(gè)文件或者這個(gè)文件所在的文件夾,這里我用INCLUDEPATH += 語(yǔ)句將MediaInfoDLL.h所在的目錄引入,那么這個(gè)目錄下的所有.h文件都會(huì)被包含進(jìn)來(lái)
做完這些工作,還需要實(shí)現(xiàn)一個(gè)MediaInfoHelper類來(lái)對(duì)MediaInfo進(jìn)行封裝才能使用,以下的代碼是參考這位大佬的 原文指路
#ifndef MEDIAINFOHELPER_H
#define MEDIAINFOHELPER_H#define _UNICODE #include "MediaInfoDLL.h"#ifdef MEDIAINFO_LIBRARY
#include "MediaInfo/MediaInfo.h"
#define MediaInfoNameSpace MediaInfoLib;
#else
#define MediaInfoNameSpace MediaInfoDLL;
#endif
#include <iostream>
#include <iomanip>
using namespace MediaInfoNameSpace
#ifdef __MINGW32__
#ifdef _UNICODE
#define _itot _itow
#else
#define _itot itoa
#endif
#endif #include <QString>
class HMediaInfoHelper
{struct HMediaInfo{int width
; int height
; int duration
; double frameRate
; double bitRate
; QString completeInfo
; HMediaInfo(){width
= 0;height
= 0;duration
= 0;frameRate
= 0.0;bitRate
= 0.0;}};
public:HMediaInfoHelper();HMediaInfo
GetMediaInfo(QString mediaFile
,int mediaType
= -1);
};#endif
#include "MediaInfoHelper.h"HMediaInfoHelper::HMediaInfoHelper()
{}HMediaInfoHelper
::HMediaInfo
HMediaInfoHelper::GetMediaInfo(QString mediaFile
, int mediaType
)
{HMediaInfo res
;MediaInfo MI
;auto temp
= mediaFile
.toStdWString();auto desFile
= temp
.c_str();MI
.Open(desFile
);MI
.Option(__T("Complete"), __T("1"));stream_t streamType
= Stream_General
;if (mediaType
== 0) {streamType
= Stream_Image
;} else if (mediaType
== 1) {streamType
= Stream_Video
;}else if(mediaType
== 2){streamType
= Stream_Audio
;} else {streamType
= Stream_General
;}auto comp
= QString::fromStdWString((std
::basic_string
<wchar_t>)MI
.Inform()); auto wid
= QString::fromStdWString((std
::basic_string
<wchar_t>)MI
.Get(streamType
, 0, __T("Width"))).toInt();auto hei
= QString::fromStdWString((std
::basic_string
<wchar_t>)MI
.Get(streamType
, 0, __T("Height"))).toInt();auto dur
= QString::fromStdWString((std
::basic_string
<wchar_t>)MI
.Get(streamType
, 0, __T("Duration"))).toInt();auto frameRate
= QString::fromStdWString((std
::basic_string
<wchar_t>)MI
.Get(streamType
, 0, __T("FrameRate"))).toDouble();auto bitRate
= QString::fromStdWString((std
::basic_string
<wchar_t>)MI
.Get(streamType
, 0, __T("BitRate"))).toDouble();MI
.Close();res
.completeInfo
= comp
;res
.width
= wid
;res
.height
= hei
;res
.duration
= dur
;res
.frameRate
= frameRate
;res
.bitRate
= bitRate
;return res
;
}
在需要使用MediaInfo功能的地方引入MediaInfoHelper頭文件,聲明HMediaInfoHelper對(duì)象即可
#include "MediaInfoHelper.h"
void main()
{HMediaInfoHelper helper
;auto info
= helper
.GetMediaInfo("D:/11111.mp4",1); return;
}
相關(guān)資源下載
【P.S】編譯環(huán)境為windows 10 VS2019,版本為64位Release
編譯好的dll、lib、h文件
【參考文章】
MediaInfo庫(kù)的編譯 使用
MediaInfo庫(kù)的使用
Qt使用MediaInfo庫(kù)獲取媒體文件分辨率時(shí)長(zhǎng)等信息方法示例
總結(jié)
以上是生活随笔為你收集整理的MediaInfo在VS2019下的编译和使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。