想获得一大堆视频文件的详细信息,没思路....[停帖]
本帖最后由 ransally 于 2010-7-15 09:31 编辑我有这么个想法,获得一个文件夹中所有视频文件还有图片的详细信息,包括拍摄时间、大小、播放时
间、品质、所在位置等等详细信息,然后这些信息是可以分条操作的,比如我可以依据其中几个信息来选择我
想要的视频或者图片文件进行操作。
但是我不知道应该从哪下手.....
水平不足,正在学习中,此帖暂停 Google 视频文件的数据结构不就好了?~ 回复 2# pusofalse
没用过,没听过,我去查 回复 2# pusofalse
查了一下,没查到...................是那个视频文件上传软件? 没查到?不可能查不到。你是以什么关键字搜索的呢?
真的,不可能查不到,千万不要认为你是遇到这种问题的第一人。
换别的关键字搜索总比在这发求助强。 http://www.autoitx.com/thread-15230-1-1.html
获取媒体文件信息
MediaInfo可以获得多媒体文件的哪些信息?
内容信息:标题,作者,专辑名,音轨号,日期,总时间……
视频:编码器,长宽比,帧频率,比特率……
音频:编码器,采样率,声道数,语言,比特率……
文本:语言和字幕
段落:段落数,列表
MediaInfo支持哪些文件格式?
视频:MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1, MPEG-2, MPEG-4, DVD (VOB)... (编码器:DivX, XviD, MSMPEG4, ASP, H.264, AVC...)
音频:OGG, MP3, WAV, RA, AC3, DTS, AAC, M4A, AU, AIFF...
字幕:SRT, SSA, ASS, SAMI...
典型应用
MediaInfo的典型应用是使用其DLL库,用来提取媒体文件的信息。其特点是,支持的格式全、提取的信息丰富。当然,MediaInfo本身是开源的,其DLL库可以进行二次开发,可以扩充自定义格式,增加自定义功能。对于工程使用,MediaInfo模块和其它功能可以独立,使用上非常便捷,是一个值得推荐的开源工程。
源码获取途径
MediaInfo中文主页:http://mediainfo.sourceforge.net/zh/Support 技术支持普通用户: [*]首先查看 常见问答(FAQ) 页面[*]如果你没有为你的问题找到解答,可以发一个 软件错误报告[*]或者你可以 建议增加一个新功能[*]到 论坛 上查看其他问题你看以通过下面的链接查看更多详细信息: [*]支持的文件格式列表[*]支持的内容信息标签列表[*]支持的编码器列表开发者: [*]如果你要使用MediaInfo的Dll,这里为你准备了一个 开发工具包。[*]如果你想自己编译MediaInfo的DLL 或 MediaInfo,可以到这里 看看。
------------------------------------------------------------------------------
实测:
只选了三种视频音频格式
测试结果如上
AU3调用MediaInfo.dll源码:
#include<Array.au3>
$sRL=_GetInfoArray('1.flv')
_ArrayDisplay($sRL)
Func _GetInfoArray($sMediaFile)
Local $sRL
$sDLL = DllOpen("MediaInfo.dll")
$sHandle = DllCall($sDLL, "ptr", "MediaInfo_New")
$Open_Result = DllCall($sDLL, "int", "MediaInfo_Open", "ptr", $sHandle, "wstr", $sMediaFile)
;获取文件格式
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "General;%Format/String%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
$sRL = $Inform
;获取视频格式
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "General;%Video_Format_List%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
_ArrayAdd($sRL, $Inform)
;获取音频格式
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "General;%Audio_Format_List%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
_ArrayAdd($sRL, $Inform)
;获取音频编码
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "General;%Audio_Codec_List%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
_ArrayAdd($sRL, $Inform)
;获取视频编码
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "General;%Video_Codec_List%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
_ArrayAdd($sRL, $Inform)
;获取总码率
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "General;%BitRate/String%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
_ArrayAdd($sRL, $Inform)
;获取视频码率
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "Video;%BitRate/String%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
_ArrayAdd($sRL, $Inform)
;获取音频码率
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "Audio;%BitRate/String%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
_ArrayAdd($sRL, $Inform)
;获取视频分辨率
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "Video;%Width%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
$sWidth = $Inform
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "Video;%Height%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
$sHigh = $Inform
If $sHigh <> '' And $sWidth <> '' Then
_ArrayAdd($sRL, $sWidth & ' X ' & $sHigh)
Else
_ArrayAdd($sRL, '')
EndIf
;获取视频刷新率
DllCall($sDLL, "wstr", "MediaInfo_Option", "ptr", 0, "wstr", "Inform", "wstr", "Video;%FrameRate/String%")
$Inform = DllCall($sDLL, "wstr", "MediaInfo_Inform", "ptr", $sHandle, "int", 0)
_ArrayAdd($sRL, $Inform)
;删除Handle和DLL
$sHandle = DllCall($sDLL, "none", "MediaInfoList_Delete", "ptr", $sHandle)
DllClose($sDLL)
Return $sRL
EndFunc ;==>_GetInfoArray
所需MediaInfo.dll最新官方版本(方便大家不用再上官网找)
剩下的就是GUi设计、数组操作、Listview操作、字符串控制了
如果楼主这些都不懂
那我劝你就先把这些基本知识逐个掌握了再提问吧
纯文字换代码,你觉得等价吗?
别人的时间也是时间啊!!! 回复 5# pusofalse
受教了 回复 7# lynfr8
谢谢!我没想到你们会帮我这么多,因为没有思路,所以发帖
没有想过要以纯文字换代码,谢谢你们帮忙! 收藏!不错。。 完美解码就是调用这个以前也关注过 官方说明很详细
页:
[1]