编辑视频文件的元数据

时间:2017-03-01 16:03:12

标签: c# metadata id3

我正在尝试编写一个实用程序,用于插入我自己的信息来对付录制的视频,但似乎没有用于完成此操作的库。

在我最近的尝试中,我使用了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();
}

在填写标题和年份的视频文件时,TagLib Sharp似乎不支持“评级”,“贡献艺术家”,“导演”等项目。

所以我的问题是,是否有另一个图书馆对视频文件有更广泛的支持?如果没有,我将如何手动为MP4或AVI做这个?

1 个答案:

答案 0 :(得分:2)

有多种方法可以存储不同类型的扩展数据 我在这里描述的所有解决方案都取自文中提供的链接。您可以在链接后找到详细信息和更多信息。

基本上有三种可能性我找到了将元数据放在哪里,具体取决于您要设置哪些信息以及您可能想要显示哪些程序。从你的问题我不确定你到底在寻找什么,所以我会猜测:

苹果标签
根据您的问题,您可能很可能正在寻找这个来添加某些值。在我看来,这与EXIF是分开的,但我可能是错的(见下面的EXIF):
在此处找到的示例https://stackoverflow.com/a/21997119使用“value”编写生产者信息。为方便起见,我复制了它。归功于@ 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");

文件的shell属性
这对于所有文件都是可能的,而不仅仅与视频文件相关。但网络上的一些信息也指向了这种添加视频相关信息的方式 请参阅:https://stackoverflow.com/a/2096315了解如何阅读这些扩展属性。

EXIF数据
TagLib-Sharp写入EXIF数据。如果您缺少值并且实际上正在寻找它们,您可以查看此代码项目以了解如何编写新值或者使taglib-sharp支持它们:https://www.codeproject.com/Articles/27242/ExifTagCollection-An-EXIF-metadata-extraction-libr

更多信息
这个问题有一套很好的答案,总结了使用各种库访问元数据的更多可能性: Accessing audio/video metadata with .NET
但我会说TagLib-Sharp应该满足您的需求。

链接的完整摘要也在此答案中:https://stackoverflow.com/a/26770986

我偶然发现的最常见的是TagLib-Sharp和DirectShowNet。所以你的TagLib-Sharp应该解决你想要设置的大多数标签。也许您可以提供示例视频文件的更多详细信息以及您要设置的信息。 EXIF查看器(如果是exif)可能会显示您要查找的标签。