Hallo zusammen,
meine Funktion soll in einer Datei den Codec finden. Hier als Beispiel
Ich weiß, dass der Codec in einem sogenannten
Mein Problem ist: mdat muss nicht in den ersten 100 Bytes der Datei sein; ist nämlich auch bei 4400. Was macht natürlich FileStream.Read? Platziert die eingelesenen Bytes an Stelle 4400 im buffer, statt bei 0. Ich möchte später splitten anhand von - und /. Deswegen darf das nicht so lang sein.
Spoiler anzeigen
meine Funktion soll in einer Datei den Codec finden. Hier als Beispiel
H.264
. Kann aber auch mal was anderes sein.Ich weiß, dass der Codec in einem sogenannten
mdat
-Block ist. mdat
wird gefunden und die Nummer wird an die Funktion übergeben (n). Von dort an sollen ein paar wenige Zeichen gelesen werden – es reichen auf jeden Fall 75.Mein Problem ist: mdat muss nicht in den ersten 100 Bytes der Datei sein; ist nämlich auch bei 4400. Was macht natürlich FileStream.Read? Platziert die eingelesenen Bytes an Stelle 4400 im buffer, statt bei 0. Ich möchte später splitten anhand von - und /. Deswegen darf das nicht so lang sein.
VB.NET-Quellcode
- Private Sub MP4_get_Codec2(n As Integer, FullPath As String)
- Dim buffer() As Byte = New Byte(8000) {}
- Using fs As New IO.FileStream(FullPath, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
- fs.Read(buffer, n, buffer.Length - n)
- End Using
- Dim str2 As String = System.Text.Encoding.ASCII.GetString(buffer, n, buffer.Length - n)
- Dim getrennt As String() = str2.Split({"-"c, "/"c})
- If getrennt.Length > 2 Then
- If getrennt(2) = "H.264" Then
- Codec2 = Codecs2.H_264
- End If
- End If
- End Sub