C# 获取mxf文件持续时间

C# 获取mxf文件持续时间,c#,C#,我试图找到视频文件的持续时间。我能够使用下面提到的外壳概念获得.mov、.mp4等的长度 我没有得到mxf文件的持续时间,是否可以在C#中计算它?如果我们在二进制编辑器中打开mxf文件,我们可以在xml头中看到持续时间。如下所示 Duration value="89" 在代码中,您可以通过打开文件来读取它 FileStream streamL = File.Open("C:\\temp\\test.mxf", FileMode.Open, FileAccess.Read, FileShar

我试图找到视频文件的持续时间。我能够使用下面提到的外壳概念获得
.mov
.mp4
等的长度


我没有得到
mxf
文件的持续时间,是否可以在C#中计算它?

如果我们在二进制编辑器中打开mxf文件,我们可以在xml头中看到持续时间。如下所示

Duration value="89"
在代码中,您可以通过打开文件来读取它

FileStream streamL =
 File.Open("C:\\temp\\test.mxf", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
然后读取循环中的字节,直到找到持续时间

int nBytesReadL = streamP.Read(HeaderBufferL, 0, BufferLengthL);
string zTextRepresentationL = 
   System.Text.ASCIIEncoding.Default.GetString(HeaderBufferL, 0, nBytesReadL);

从上面的字符串xml可以得到持续时间

如果我们在binary editor中打开mxf文件,我们可以在xml头中看到持续时间。如下所示

Duration value="89"
在代码中,您可以通过打开文件来读取它

FileStream streamL =
 File.Open("C:\\temp\\test.mxf", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
然后读取循环中的字节,直到找到持续时间

int nBytesReadL = streamP.Read(HeaderBufferL, 0, BufferLengthL);
string zTextRepresentationL = 
   System.Text.ASCIIEncoding.Default.GetString(HeaderBufferL, 0, nBytesReadL);

从上面的字符串xml可以获得持续时间

我找到了另一种查找mxf文件持续时间的简单方法

从web下载MediaInfo.dll并将其放在“C:\Windows”文件夹中,并将mediainfoDll.cs包含在项目中

通过使用下面的代码,您将能够获得.mxf文件的持续时间

MediaInfo aMediaInfoL = new MediaInfo();
aMediaInfoL.Open("C:\Users\\Desktop\\drop\mxf\xdcam-pal-dv25.mxf");
aMediaInfoL.Option("Inform", "General;%Duration%");
string durationL = aMediaInfoL.Inform();
aMediaInfoL.Close();
string  durationminutesL
  = TimeSpan.FromMilliseconds(Convert.ToDouble(durationL)).TotalMinutes;

我找到了另一种查找mxf文件持续时间的简单方法

从web下载MediaInfo.dll并将其放在“C:\Windows”文件夹中,并将mediainfoDll.cs包含在项目中

通过使用下面的代码,您将能够获得.mxf文件的持续时间

MediaInfo aMediaInfoL = new MediaInfo();
aMediaInfoL.Open("C:\Users\\Desktop\\drop\mxf\xdcam-pal-dv25.mxf");
aMediaInfoL.Option("Inform", "General;%Duration%");
string durationL = aMediaInfoL.Inform();
aMediaInfoL.Close();
string  durationminutesL
  = TimeSpan.FromMilliseconds(Convert.ToDouble(durationL)).TotalMinutes;

Mxf不是xml,而且您指定的编码是错误的,它的bigendiaUnicode。Mxf不是xml,而且您指定的编码是错误的,它的bigendiaUnicode。容器文件中流的持续时间可能很复杂,这取决于容器是否以“索引”形式写入。信息可以在mxf文件中以多种方式表示,有时甚至是冗余的。时间轴轨迹或时间代码组件应指示编辑速率和容器持续时间,然后可以从中计算持续时间。如果您需要材料交换、基本媒体文件、高级系统格式/Windows媒体、资源交换和Matroska容器的文件和跟踪级别详细信息,您可以查看。容器文件中流的持续时间可能很复杂,这取决于容器是否以“索引”形式编写。信息可以在mxf文件中以多种方式表示,有时甚至是冗余的。时间轴轨迹或时间代码组件应指示编辑速率和容器持续时间,然后可以从中计算持续时间。如果您需要有关材料交换、基本媒体文件、高级系统格式/Windows媒体、资源交换和Matroska容器的文件和跟踪级别详细信息,您可以查看。