编辑视频文件的元数据
Editing metadata against video files
我正在尝试编写一个实用程序,用于在录制的视频中插入我自己的信息,但是似乎没有一个库可以实现这一点。
在我最近的尝试中,我使用了 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 似乎不支持 "Rating"、"Contributing Artists"、"Directors" 等项目。
所以我的问题是,是否有另一个库可以更广泛地支持视频文件?如果没有,我将如何为 MP4 或 AVI 手动执行此操作?
有多种方法可以存储不同种类的扩展数据。
我在这里描述的所有解决方案都来自文本中提供的链接。您可以在链接后找到详细信息和更多信息。
基本上,我发现了三种可能的元数据放置位置,具体取决于您要设置的信息以及可能要显示的程序。根据你的问题,我不确定你到底在找什么,所以我会猜测一下:
苹果标签
根据您的问题,您很可能正在寻找这个来增加某些价值。在我看来,这是与 EXIF 不同的东西,但我可能错了(请参阅下面的 EXIF):
在此处找到的示例 使用 "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 文件属性
这对所有文件都是可能的,而不仅仅是与视频文件有关。但是网上的一些资料也指出了这种添加视频相关信息的方式。
请参阅: 了解如何阅读这些扩展属性。
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 应该可以满足您的需求。
这里的答案中也有一个很好的链接摘要:
我偶然发现的最常提到的是 TagLib-Sharp 和 DirectShowNet。所以你的 TagLib-Sharp 应该解决你想要设置的大多数标签。也许您可以使用要设置的信息提供示例视频文件的更多详细信息。 EXIF 查看器(如果它是 exif)可能会显示您正在寻找的标签。
我正在尝试编写一个实用程序,用于在录制的视频中插入我自己的信息,但是似乎没有一个库可以实现这一点。
在我最近的尝试中,我使用了 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 似乎不支持 "Rating"、"Contributing Artists"、"Directors" 等项目。
所以我的问题是,是否有另一个库可以更广泛地支持视频文件?如果没有,我将如何为 MP4 或 AVI 手动执行此操作?
有多种方法可以存储不同种类的扩展数据。
我在这里描述的所有解决方案都来自文本中提供的链接。您可以在链接后找到详细信息和更多信息。
基本上,我发现了三种可能的元数据放置位置,具体取决于您要设置的信息以及可能要显示的程序。根据你的问题,我不确定你到底在找什么,所以我会猜测一下:
苹果标签
根据您的问题,您很可能正在寻找这个来增加某些价值。在我看来,这是与 EXIF 不同的东西,但我可能错了(请参阅下面的 EXIF):
在此处找到的示例 使用 "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 文件属性
这对所有文件都是可能的,而不仅仅是与视频文件有关。但是网上的一些资料也指出了这种添加视频相关信息的方式。
请参阅: 了解如何阅读这些扩展属性。
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 应该可以满足您的需求。
这里的答案中也有一个很好的链接摘要:
我偶然发现的最常提到的是 TagLib-Sharp 和 DirectShowNet。所以你的 TagLib-Sharp 应该解决你想要设置的大多数标签。也许您可以使用要设置的信息提供示例视频文件的更多详细信息。 EXIF 查看器(如果它是 exif)可能会显示您正在寻找的标签。