编辑视频文件的元数据

7

我正试图编写一个实用程序,向录制的视频中插入自己的信息,但似乎没有一个库可以完成这个任务。

在我最近尝试时,我使用了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
另一种(事实)方法:https://dev59.com/Em_Xa4cB1Zd3GeqP0mi0 一个没有答案的重复问题:http://stackoverflow.com/questions/11183093/video-metadata-edit-with-ffmpeg 而这是我认为最好的解决方案:https://dev59.com/e2gt5IYBdhLWcg3w7ByL - Jeremy Thompson
1
我通常使用ffmpeg处理与视频相关的任何事情,它也可以满足你的需求。虽然有.NET的封装库,但我通常更喜欢外部调用它。 - Evk
维基显示:作为资源交换文件格式(RIFF)的派生,AVI文件通常在INFO块中标记元数据。此外,AVI文件可以嵌入可扩展元数据平台(XMP)。正在寻找RIFF INFO库:http://www.exiv2.org/doc/classExiv2_1_1RiffVideo.html - vguberinic
你想用这个 MD 做什么?你只想让它为你所用(这样你的其他应用程序可以读取它),还是你希望它出现在文件详细信息中? - Ajay Brahmakshatriya
1个回答

5
有几种方法来存储不同类型的扩展数据。
我在这里描述的所有解决方案都来自文本中提供的链接。您可以在链接后找到详细信息和一些更多信息。
基本上,我发现有三种可能性可以放置您的元数据 取决于您要设置什么信息以及您可能要显示哪些程序。根据您的问题,我不确定您正在寻找什么,所以我猜测: 苹果标签 从您的问题中,您最有可能正在寻找这个来添加某些值。对我来说,这似乎是与EXIF分开的东西,但我可能错了(请参阅下面的EXIF):
在此处找到示例 https://dev59.com/YnXYa4cB1Zd3GeqP9bZV#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://dev59.com/J3VC5IYBdhLWcg3wqzHV#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://dev59.com/soTba4cB1Zd3GeqP_c4K#26770986

我经常遇到的是TagLib-Sharp和DirectShowNet。因此,您的TagLib-Sharp应该可以解决大多数您想设置的标签。也许您可以提供具有您想要设置信息的示例视频文件的更多详细信息。如果它是exif,则EXIF查看器可能会显示您正在寻找的标签。


为了进一步扩展,我还将使用FFMPEG按照Evk的建议将数据写入文件。 - user863551

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接