Редактирование метаданных в видеофайлах


Я пытаюсь написать утилиту для вставки моей собственной информации в записанные видео, однако, похоже, для этого нет библиотеки.

В моей последней попытке сделать это, я использовал библиотеку Taglib Sharp, но это, кажется, подходит для аудио файлов:

private void ApplyTags(string p_sFilePath, Result p_Result)
{
    TagLib.File f = TagLib.File.Create(p_sFilePath);

    f.Tag.Title = p_Result.title;
    f.Tag.Year = Convert.ToUInt32(p_Result.year);

    f.Save();
}

При заполнении названия и года работайте для видеофайлов, таких как "рейтинг", "вклад артистов", "режиссеры" и т. д. не подтверждаются библиотеки тегов Острый.

Итак, мой вопрос заключается в том, есть ли еще одна библиотека с более широким спектром поддержки видеофайлов? Если нет, то как я буду делать это вручную для MP4 или AVI?

1 4

1 ответ:

Существует несколько способов хранения различных видов расширенных данных.
Все решения, которые я описываю здесь, взяты из ссылок, приведенных в тексте. Вы можете найти подробную информацию и дополнительную информацию по ссылкам.

По существу, есть три возможности для вас, я нашел, куда поместить ваши метаданные в зависимости от того, какую информацию вы хотите установить и какие программы вы можете захотеть показать им. Из вашего вопроса я не уверен, что именно вы ищете, поэтому я буду предположим:

Apple tag
Из вашего вопроса Вы, скорее всего, будете искать этот, Чтобы добавить определенные значения. Мне кажется, что это что-то отдельное от EXIF, но я могу ошибаться (см. ниже для EXIF):
Пример, найденный здесь https://stackoverflow.com/a/21997119 написание информации о производителе с "значением". Я скопировал его для удобства. Приписывается @hannan-hossain. Это должно, по крайней мере, работать для файлов mp4:

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();
var tokenValue = customTag.GetDashBox("Producer", "Producer1");

Свойства оболочки файлы
Это то, что возможно для всех файлов, а не только для видеофайлов. Но некоторая информация в интернете указывает на этот способ добавления информации, связанной с видео, а также.
смотрите: https://stackoverflow.com/a/2096315 о том, как читать эти расширенные свойства.

EXIF data
TagLib-Sharp записывает данные EXIF. Если вы пропускаете значения и на самом деле ищете их, вы можете взглянуть на этот проект кода, чтобы увидеть, как кодировать новые значения или, может быть, сделать taglib-sharp поддерживает их: https://www.codeproject.com/Articles/27242/ExifTagCollection-An-EXIF-metadata-extraction-libr

Подробнее
Этот вопрос имеет хороший набор ответов, обобщающих еще больше возможностей для доступа к метаданным с помощью различных библиотек: доступ к метаданным аудио/видео с помощью .NET
Но я бы сказал, что TagLib-Sharp должен удовлетворить ваши потребности.

Хорошее резюме ссылок также находится в этом ответе здесь: https://stackoverflow.com/a/26770986

Наиболее часто упоминаемые из них, на которые я наткнулся, были TagLib-Sharp и DirectShowNet. Так что ваш TagLib-Sharp должен решить большинство тегов, которые вы хотите установить. Возможно, вы можете дать более подробную информацию о примерах видеофайлов с информацией, которую вы хотите установить. Программа просмотра EXIF (если это exif) может показать, какой тег вы ищете.