【问题标题】:How to read the file rating from an mp4 file?如何从 mp4 文件中读取文件等级?
【发布时间】:2021-03-28 13:11:21
【问题描述】:

正如标题所说,我可以从 mp4 视频文件中读取/写入与 windows 资源管理器兼容的文件评级数据吗?

Windows 资源管理器似乎添加了(一个标签?)名为“WM/SharedUserRating”的相应数据。这个标签似乎是 ASF 文件格式/标签格式的一部分。

但我无法将 MP4 文件作为 ASF(对象 guid 异常)打开,并且 taglib 提取的 MP4 标签数据不显示评级...?

【问题讨论】:

标签: c# mp4 taglib-sharp


【解决方案1】:

如果您使用的是 Windows 10,则可以使用 Windows RT API。将 Nuget 包 Microsoft.Windows.SDK.Contracts 添加到您的应用程序中,然后您可以使用 StorageFile 访问评级:

using Windows.Storage;
using Windows.Storage.FileProperties;

var f = await StorageFile.GetFileFromPathAsync(@"D:\ProjectsNoBackup\VideoStuff\12-Lead Ecg H.264 480P30.mp4");
var v = await f.Properties.GetVideoPropertiesAsync();

那么v.Rating 是UInt32 值,其中 0=0、1=1、2=25、3=50、4=75 和 5=99(根据@Michael)。

【讨论】:

  • 这是基于 WindowsAPICodePack 的吗?我正在使用 WindowsAPICodePack,它对于 MP4 文件的速度非常慢......但我会看看它,谢谢 :)
  • 有效 :) 一次更正,评分为 0=0、1=1、2=25、3=50、4=75 和 5=99。可以轻松调整图像。将评级数据添加到大型 MP4 是“慢”,但我认为这是由 MP4 文件结构和存储元数据的位置引起的。前导元数据:由于重写整个文件而变慢,带有填充或现有评级的前导元数据:更快,插入/覆盖数据和尾随元数据:更快,附加数据。还没有验证那些...
  • @Michael 对不起这些值 - 我猜基于 75 :),我会更新我的答案。是的,我认为 MP4/Quicktime 容器格式并不完全是为快速更新元数据而设计的(尽管如果有一个 NOP atom 类,您可以在现有元数据块之上编写一个 NOP atom 并在最后编写一个新 atom )。
猜你喜欢
  • 2012-05-01
  • 2016-09-04
  • 2013-05-20
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
相关资源
最近更新 更多