Как следует из названия, могу ли я читать/записывать данные рейтинга файлов, совместимые с проводником Windows, в видеофайлы mp4 и из них?
Похоже, проводник Windows добавляет (тег?) с именем «WM/SharedUserRating» с соответствующими данными. Этот тег, кажется, является частью формата/формата тега файла ASF.
Но я не могу открыть файл MP4 как ASF (исключение guid объекта), а данные тега MP4, извлеченные taglib, не показывают рейтинг...?
Отвечает ли это на ваш вопрос? C# Чтение метаданных видео в Windows (название, описание, год)
В качестве альтернативы вы можете использовать exiftool.exiftool.org/forum
Обратите внимание, что ASF и MP4 не являются взаимозаменяемыми форматами файлов.
@Codexer да, рейтинг отображается в проводнике Windows до пяти звезд
@NetMage нет, это не отвечает на мой вопрос. они предлагают использовать taglib, который я использую. Они считывают основные данные тегов, которые, по-видимому, являются частью структуры тегов mp4, например заголовок и описание. Это значение рейтинга, похоже, не является частью "стандарта" mp4...





Если вы используете 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, вы могли бы просто написать атом NOP поверх существующего блока метаданных и написать новый атом в конце ).
Вы говорите о звездном рейтинге, вроде до 5 звезд?