2012-09-10 122 views
0

我試圖找到視頻文件的持續時間。我能夠使用下面提到的shellconcept獲得.mov.mp4等的長度。獲取mxf文件的持續時間

C# Get video file duration from metadata

,我沒有得到的mxf文件的時間,是可以計算它在C#中?

+0

在一個容器文件流的持續時間可能會很複雜,以達到持續時間,這取決於如果容器是以「索引」形式寫或不寫。 這些信息可以在mxf文件中以多種方式表示,有時也可以冗餘。 時間線軌道或時間碼組件應指示編輯速率和容器持續時間,然後可以計算持續時間。 如果您需要材料交換,基礎媒體文件,高級系統格式/ Windows媒體,資源交換和Matroska容器的文件和跟蹤級別詳細信息,可以查看https://net7mma.codeplex.com。 – Jay

回答

0

如果我們打開二進制編輯器MXF文件,我們可以看到在XML header..like的持續時間存在以下

Duration value="89" 

在代碼中,你可以通過打開文件

FileStream streamL = 
File.Open("C:\\temp\\test.mxf", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
閱讀

然後讀取的字節中的循環,直到你從上面的字符串XML就可以得到次找到時間

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

Ë時間

+0

Mxf不是xml,而且您指定的編碼錯誤,它的BigEndianUnicode。 – Jay

0

我發現了另一種簡單的方法來找到MXF文件時間..

下載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;