编程实战——电影管理器之利用MediaInfo获取高清视频文件的相关信息

  • 时间:
  • 浏览:0
  • 来源:彩神大发11选5_神彩大发11选5官方

(StreamNumber, 

_M.Get_(StreamKind.Visual, 0, "BitRate_Maximum")

 Close() 

    Name 

), 

不可能 那么 勾上,运行时则会经常出现下面的对话框

    ShowInSupported 

(MediaInfo_Count_Get(Handle, 

 StreamKind 

    Chapters 

那么 ,对应的调用好多好多 我

 () 

 (

第五个参数,获取信息的名字。根据该参数返回对应的信息。

    Max 

 State_Get() 

 (

(StreamKind, 

 Handle 

 KindOfInfo 

    Public Function Width() As String 

五种 代码在做高清视频文件的信息库的之前 很糙有用。必须根据高清视频文件自动获取相关信息,毋须再手动填充信息。

 StreamNumber 

第一个多 参数,获取信息的流编号。一般取0(第一个多 流,视频一般就一个多 流,音频有不可能 多于一个多 流),音频搞笑的话,取相应的流编号(0开始英文英文,到流数减1)

 _M.Inform 

    MeasureText 

 (

在VS2010中新建项目,把相关的DLL克隆到可执行多多程序 的目录(在项目文件夹下的bin\Debug\,不可能 克隆到系统目录中)

 StreamNumber 

)) 

_M.Get_(StreamKind.Visual, 0, "Width")

))) 

 KindOfInfo 

 Option_ 

(StreamNumber, 

 _M.Get_(

))) 

另,无需须在项目中对MediaInfo.dll引用。引用会出错,如下所示:

    Visual 

 Count_Get(

 StreamNumber 

.PtrToStringUni(MediaInfo_Inform(Handle, 

    ShowInInform 

文件大小:视频文件的大小,五种 也比较简单,利用FileInfo类能获得

 MediaInfo_Get 

(KindOfSearch, 

一共一个多 参数。

在http://sourceforge.net/projects/mediainfo/files/development_snapshots/上点击Download MediaInfo_GUI_0.7.64_Windows.exe (4.5 MB),下载最新的版本。安装后在安装的目录中找到MediaInfo.dll和MediaInfo_i386.dll这个 个 DLL文件。

 KindOfSearch 

        _M.Open(FileName) 

.PtrToStringUni(MediaInfo_Get(Handle, 

 FileName 

 StreamKind 

 StreamNumber 

    本文转自万仓一黍博客园博客,原文链接:http://www.cnblogs.com/grenet/p/3222731.html,如需转载请自行联系原作者

2、新建项目

 MediaInfo_GetI 

    Text 

音频数:视频文件中的音频数,有不少的高清视频文件中所含不止一个多 音频。有的所含英文、中文一个多 音频;有的所含英文、中文、粤语五个音频

不可能 DLL仅仅提供了函数。而目前的编码基本上总要面向对象,好多好多 在官网上针对好多好多 的语言都提供了相应的代码,把函数调用包装成类,方便调用者使用。Visual Basic的调用代码在http://sourceforge.net/p/mediainfo/code/5846/tree/MediaInfoLib/trunk/Project/MSVB2010/上,许多语言在相关的网页上无需 找到,这里就不赘述了。

第1句,打开FileName指定的文件;第2句,获取相关信息,并通知类,不可能 获取完毕(不可能 在DLL中会有释放资源等操作);第3句,返回视频文件的相关信息。

 (

S.GetInfo("G:\Despicable.Me.2010.BluRay.10150p.DTS.2Audio.x264-CHD.mkv")

Public Enum StreamKind As UInteger 

RichTextBox1.Text = S1

这两篇文章对参数介绍的很完整,好多好多 我文章写得早,提供的DLL版本比较低罢了

 = 

    Max 

首先在类的外部定义一个多 MediaInfo类的实例,具体的功能总要通过该实例来完成。

.General, 0, 

(0, 

 Handle 

在查看信息前,需调用GetInfo(FileName As String)函数,该函数的目的是获得相关的信息,一共三句话

(MediaInfo_Count_Get(Handle, 

 Handle 

 Handle 

 MediaInfo_Delete 

 (

 I 

(KindOfInfo, 

    NameText 

 Handle 

Dim S1 As String = "" 

S1 &= S.Width & "  " & S.Height & vbNewLine 

S1 &= S.Duration & vbNewLine 

S1 &= S.AudioCount & vbNewLine 

S1 &= S.AudioLanguage(0) & "," & S.AudioLanguage(1)

 MediaInfo_Open 

 Index > AudioCount() - 1 

 _M.Get_(

 MediaInfo_Option 

 MediaInfo_Count_Get 

    Menu 

.ToInt32(_M.Get_(

Dim S As New clsMediaInfo

), 

1、下载相应的DLL

我包装的代码如下:

C#使用MediaInfo查看媒体信息

文件名:视频文件的文件名,五种 比较简单,利用FileInfo类就能获得

 System.

.Text, 

(StreamKind, 

), 

下面就介绍如可利用MediaInfo来获得高清视频文件的相关信息。

 Handle 

 StreamNumber = 

 MediaInfo_New 

        MediaInfo_Close(Handle) 

1920  1040 

01:34:48.683 



English,Chinese

.Name) 

), Parameter, 

 Option__ 

        MediaInfo_Delete(Handle) 

    Max 

先看看MediaInfo的介绍,MediaInfo官网。在官网上有相关的介绍,并给出了调用的代码(很完备。C++,C#,Visual Basic等总要)

            L(I) = _M.Get_(

    TypeOfValue 

注:MediaInfo.dll貌似是64位的;MediaInfo_i386.dll貌似是32位的;在上方的调试中,MediaInfo.dll始终会报错,反而MediaInfo_i386.dll改成MediaInfo.dll后克隆到目录中调试一遍成功。

    Public Function GetInfo(FileName As StringAs String 

 Parameter 

    General 

不可能 想获取许多的信息,直接给出相应的参数就行了。这个想获得视频的最大码率,给出参数BitRate_Maximum就行了。如下调用

    Reserved 

视频时长:视频文件的时长,这个:长1小时32分

 MediaInfo_Close 

 StreamKind 

 = 

    Public Function Height() As String 

 StreamNumber 

(KindOfInfo, 

高清视频文件的相关信息都保居于文件的头部区域,记录的信息有好多好多 (除却上方的五种 外,还包括码率、编码类型等等)。而MediaInfo好多好多 我利用读取头部区域的信息来获得相关的信息。官网的更新很快,笔者下载的是2013年7月6日发布的最新版。

 Option_(

    Sub New() 

 StreamKind 

随着下载影片的增多,管理总要了现象,有时在茫茫文件夹下找寻一个多 影片也是一件费时费力的事。

那么 ,如可能知道有哪几条参数呢?参看

MediaInfo参数大全

.Audio, I, 

 Parameter 

第一个多 参数,获取信息的类别。一般取StreamKind.General(通用信息)、StreamKind.Visual(视频信息)、StreamKind.Audio(音频信息)

(-1, 

 L(C - 1) 

 Value 

不可能 是缺少Lib文件的缘故,不过我没在官网上找到Lib文件的下载

Public Class MediaInfo 

 = AudioCount() 

        _M.Option_(

 Handle 

视频宽度:_M.Get_(StreamKind.Visual, 0, "Width")

))) 

), 

    Public Function AudioCount() As Integer 

    Public Function Duration() As String 

亲戚朋友必须利用MediaInfo来获取哪几条信息(视频分辨率、视频时长、音频数、音频的语言类型)

视频时长:_M.Get_(StreamKind.General, 0, "Duration/String3")。五种 有多种选着,该调用返回 01:34:48.683 五种 格式;不可能 是:_M.Get_(StreamKind.General, 0, "Duration"),则返回 5688683 ,还必须当时人转换。

返回的信息如下:

    Options 

下面是获取 G:\Despicable.Me.2010.BluRay.10150p.DTS.2Audio.x264-CHD.mkv 五种 高清视频文件信息的调用代码:

.PtrToStringUni(MediaInfo_GetI(Handle, 

解释一下:

(StreamKind, 

.Audio, Index, 

Public Enum InfoOptions As UInteger 

 Reserved 

 KindOfInfo 

Public Enum InfoKind As UInteger 

以上信息中的上方五个(视频分辨率、视频时长、音频数、音频的语言类型),用视频播放器都能获得。之前 如可在当时人的多多程序 中获得哪几条信息呢?

要注意的是,在如上所做时,还得在VS2010中进行设置

 FileName 

 Get_(

        _M = 

(StreamKind, 

音频个数:_M.Get_(StreamKind.General, 0, "AudioCount")

        Return L 

))) 

音频的语言类型:具体到每个音频的语言。这个:音频1是英文,音频2是中文等

3、把官网中的提供的调用代码去掉 到项目中来

.Text) 

 _M 

    Public Function AudioLanguage(Index As IntegerAs String 

不可能 仅仅是想获得某一个多 信息,则必须调用下面的搞笑的话

 KindOfSearch 

 (

 Index = 0 

不可能 上方的代码是提供了一个多 类供调用者使用,之前 ,我决定再包装一下,使其看起来简单许多(我只必须分辨率、时长、音频数、音频语言这五个信息)。

(MediaInfo_State_Get(Handle)) 

    HowTo 

    Public Sub New() 

 MediaInfo_Inform 

(Parameter, 

.General, 0, 

于是萌生了当时人编写电影管理器的想法,并逐步逐步在实现。利用博客记录编写的过程,也是和网友见面见面视频之间的交流。期望在交流的过程中,网友见面见面视频能提出许多中肯的意见,使当时人少走些弯路。

    Text 

 (

 = 

 = 

.MaxValue) 

说明视频分辨率为1920*1040;时长:1小时34分48秒;一个多 音频;分别是英文与生文;

 StreamKind 

.PtrToStringUni(MediaInfo_Option(Handle, Option__, Value)) 

), 

 Handle 

音频语言:_M.Get_(StreamKind.Audio, I, "Language/String")。也是多种选着,该调用返回 English 五种 格式;不可能 是:_M.Get_(StreamKind.Audio, I, "Language"),则返回 en 五种 格式。

 Get_(

(StreamNumber, 

 Open(

 Index < 0 

))) 

.MaxValue 

 Value 

        Handle = MediaInfo_New() 

随着高速(20M)宽带、HTPC、大容量硬盘(3T)的普及,下载高清片并利用大屏幕观看也成为普通的事情。

 MediaInfo_Open(Handle, FileName) 

    Dim Handle As IntPtr 

 System.Runtime.InteropServices 

 MediaInfo_State_Get 

), 

 Parameter 

_M.Open(FileName) 

_M.Option_("Complete"

Return _M.Inform

 (

 Handle 

    Info 

 _M.Get_(

 (

视频分辨率:视频文件的分辨率,这个:宽19150像素,高1040像素。

4、再次包装,方便调用

 Parameter 

 Inform() 

视频宽度:_M.Get_(StreamKind.Visual, 0, "Height")

第3句话返回的是所有的信息,长长的一串。

 KindOfInfo 

.Visual, 0, 

    Audio 

), 

 = 

 StreamNumber 

 StreamKind 

    Image 

        For I = 0 To C - 1 

我在拿到一个多 高清视频文件时。之前 我能有方式获知以下的信息

 _M.Get_(

.Visual, 0, 

 Finalize() 

官网上的Visual Basic 2010调用代码如下:

    Measure 

在打开的项目属性中,点开“调试”,勾上“启用非托管代码调试”,无需 正常调试。

    Public Function AudioLanguage() As String() 

, C