首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 已经一个视频的路径,怎么获得这个视频的名称,时长,和码率,多谢

2013-08-09 
C# 已经一个视频的路径,如何获得这个视频的名称,时长,和码率,在线等~谢谢如题 所 示~[解决办法]你在后台调

C# 已经一个视频的路径,如何获得这个视频的名称,时长,和码率,在线等~谢谢
如   题 所 示~  
[解决办法]
你在后台调用dll了么,还是你直接用的madie player这个播放控件

[解决办法]
这个得用专业的组件去解析吧
[解决办法]
不同的视频文件不同。

以前手工修复过avi文件,结合自己的经验和你说说。

参考:http://blog.csdn.net/happydeer/article/details/8775
你需要准备一个十六进制编辑器和一个avi文件,对照着看。

因为你一个一个字节去数很麻烦,简单地,你可以找"avih"这几个字节作为相对起始位置。

typedef struct _avimainheader {
    FOURCC fcc;   // 必须为‘avih’
    DWORD  cb;    // 本数据结构的大小,不包括最初的8个字节(fcc和cb两个域)
    DWORD  dwMicroSecPerFrame;   // 视频帧间隔时间(以毫秒为单位)
    DWORD  dwMaxBytesPerSec;     // 这个AVI文件的最大数据率
    DWORD  dwPaddingGranularity; // 数据填充的粒度
    DWORD  dwFlags;         // AVI文件的全局标记,比如是否含有索引块等
    DWORD  dwTotalFrames;   // 总帧数
    DWORD  dwInitialFrames; // 为交互格式指定初始帧数(非交互格式应该指定为0)
    DWORD  dwStreams;       // 本文件包含的流的个数
    DWORD  dwSuggestedBufferSize; // 建议读取本文件的缓存大小(应能容纳最大的块)
    DWORD  dwWidth;         // 视频图像的宽(以像素为单位)
    DWORD  dwHeight;        // 视频图像的高(以像素为单位)
    DWORD  dwReserved[4];   // 保留
} AVIMAINHEADER;
每个dword就是4个字节(一般编辑器会一个字节2位16进制编码为一组地显示)
从avih算起,5~9字节是视频帧间隔时间,21~25字节是总帧数,两者相乘再除以1000就是时长(秒)。

码率这个不好算,因为视频一般都不是固定的码率,但是你用总文件大小和总帧数除,可以得到平均码率。

原理知道了,自己写一个程序用Stream读还有难度么?

热点排行