我正在尝试用 C# 编写一些东西,当给定 wtv 文件的名称时,它将从Title
元数据字段中删除“new:”、“premier:”或“repeat:”。我Toub.MediaCenter.Dvrms.dll
以前能够读取和写入该字段以及此页面的一些指导。
我非常粗略和现成的代码如下:
using Toub.MediaCenter.Dvrms.Metadata;
static void Main(string[] args)
{
// Load the file and create copy of metadata
DvrmsMetadataEditor md = new DvrmsMetadataEditor(args[0]);
Hashtable ht = (Hashtable)md.GetAttributes();
string title = MetadataEditor.GetMetadataItemAsString(ht, "Title");
if (!string.IsNullOrEmpty(title))
{
// Make a copy of the original title
string newtitle = title;
// Remove all the common prefixes (basic search & replace for now)
string[] prefixes = { "new:", "repeat:", "premier:" };
foreach (string prefix in prefixes)
newtitle = newtitle.Replace(prefix, "", StringComparison.InvariantCultureIgnoreCase);
// Remove any leading or trailing spaces
newtitle = newtitle.Trim();
if (!String.Equals(title, newtitle))
{
// Write out updated title and save
ht["Title"] = new MetadataItem("Title", newtitle, MetadataItemType.String);
md.SetAttributes(ht);
}
}
}
尽管进行了替换,但一旦md.SetAttributes(ht)
调用,WTV 文件中的元数据就会损坏。
这会导致代码在第二次运行时崩溃,并在调用Toub.MediaCenter.Dvrms.Metadata.DvrmsMetadataEditor.GetAttributes()
.
此外,在 wtv 文件上运行 ffmpeg 报告:
[wtv @ 000001d8ee35cf80] unknown guid 57004d002f004d006500640069006100 {004d0057-002f-004d-6500-640069006100}, expected metadata_guid; remaining metadata entries ignored
然后在 ffmpeg 上显示原始(未更改)Title
元数据字段。
有谁知道我可以如何修复我的代码以确保正确保存元数据?