2013-08-15 23 views
7

Potrzebuję pomocy w odczytywaniu/zapisywaniu informacji o meta-plikach audio/vido. Szukałem dużo, ale nie znalazłem nic przydatnego. Taglib sharp jest biblioteką typu open source, która zapewnia pomoc w czytaniu/zapisywaniu metadanych. Korzystając z tagu lib, jestem w stanie edytować niektóre wartości, ale nie wszystkie są podobne.Czytanie/zapisywanie metadanych plików audio/wideo

TagLib.File videoFile = TagLib.File.Create("test.mp4"); 
videoFile.Tag.Title = "Test"; 
videoFile.Tag.Comment = "Nothing"; 

ale nie mogę edytować następujących właściwości, takich jak adres URL autora, producentów itp. Jak mogę edytować te właściwości?

+0

Myślę, że odpowiedź jest podana tutaj: http://stackoverflow.com/questions/5337683/how-to-set -extended-file-properties- – BobClaerhout

Odpowiedz

7

Jeszcze nigdy nie robiłem tego dla plików wideo, ale mam pliki mp3. Możesz uzyskać dostęp do tych ram tak:

TagLib.File file = TagLib.File.Create(mp3FileName); 
file.Tag.Title = "some title"; // you've got this 
TagLib.Id3v2.Tag tag = (TagLib.Id3v2.Tag)file.GetTag(TagTypes.Id3v2); 
tag.SetTextFrame("WOAR", "some url"); // WOAR = Official artist/performer webpage 
file.Save(); 

można znaleźć listę identyfikatorów ramka tekstu w Wikipedii: ID3v2 Frame Specification (Version 2.3)

ja nie wiem, czy pliki wideo daje ten sam zakres Ramki ID3, choć zauważają, że Wikipedia mówi również (Implementation in non-mp3s and alternatives)

MP4 pozwala również na osadzanie znacznika ID3, a to jest szeroko obsługiwane.

Zgaduję, że działa to również w przypadku plików MP4, takich jak próbujesz.

+0

Dzięki, że sprawdzę i wrócę do ciebie, jeśli jest jakikolwiek problem. –

+0

Używając pliku mp4, znacznik id3v2 zawsze zwraca wartość null. –

+0

Co z innym tagType, np. TagType.Id3v1? –

3

Musisz użyć AppleTag. To zadziała. W przypadku pliku mp4 należy wpisać wartość do dashbox. Tak:

TagLib.File videoFile = TagLib.File.Create("test.mp4"); 
TagLib.Mpeg4.AppleTag customTag = (TagLib.Mpeg4.AppleTag)f.GetTag(TagLib.TagTypes.Apple); 
customTag.SetDashBox("Producer","Producer1", "value"); 
f.Save(); 
f.Dispose(); 

I można uzyskać wartość takiego:

var tokenValue = customTag.GetDashBox("Producer", "Producer1"); 
+0

Działa poprawnie dla plików MP4. Uratowałeś mi dzień, dzięki –

Powiązane problemy