针对视频文件编辑元数据

7 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();
}
Run Code Online (Sandbox Code Playgroud)

虽然填写视频文件的标题和年份确实有效,但 TagLib Sharp 似乎不支持“评级”、“贡献艺术家”、“导演”等项目。

所以我的问题是,是否有另一个库对视频文件提供更广泛的支持?如果没有,我该如何手动为 MP4 或 AVI 执行此操作?

Uwe*_*ner 5

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

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

apple 标签
根据您的问题,您很可能正在寻找此标签来添加某些值。在我看来,这是与 EXIF 不同的东西,但我可能是错的(请参阅下面的 EXIF):
此处找到的示例/sf/answers/1539798361/用“值”编写生产者信息。为了方便我把它复制了。感谢@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");
Run Code Online (Sandbox Code Playgroud)

文件的 shell 属性
这对于所有文件都是可能的,而不仅仅是与视频文件相关。但网络上的一些信息也指出了这种添加视频相关信息的方式。有关如何读取这些扩展属性,
请参阅:/sf/answers/146742081/ 。

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

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

这个答案中也有一个很好的链接摘要:https ://stackoverflow.com/a/26770986

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