c# – 针对视频文件编辑元数据

我正在尝试编写一个实用程序,用于根据录制的视频插入我自己的信息,但似乎没有一个库可以实现这一点.

在我最近的尝试中,我使用了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做这个?

最佳答案 有几种方法可以存储不同类型的扩展数据.

我在这里描述的所有解决方案都取自文中提供的链接.您可以在链接后找到详细信息和更多信息.

从本质上讲,我有三种可能性,我根据您要设置的信息以及您可能想要显示的程序来确定将元数据放在何处.根据你的问题,我不确定你到底在寻找什么,所以我会猜测:

苹果标签
根据您的问题,您可能很可能正在寻找这个来添加某些值.在我看来,这是与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)可能会显示您要查找的标签.

点赞