Как читать метаданные файлов фильмов MKV на С#?

Как читать метаданные файлов фильмов MKV на С# (или C, или C++, или AS3)?

например такой

creator
metadatacreator
hasKeyframes
hasVideo
hasAudio
hasMetaData
canSeekToEnd
duration
datasize
videosize
videocodecid
audiosize
audiocodecid
audiosamplerate
audiosamplesize
stereo
filesize
lasttimestamp
lastkeyframetimestamp
lastkeyframelocation
keyframes (filepositions, times)
width
height
framerate
videodatarate
audiodatarate

person Rella    schedule 05.01.2010    source источник


Ответы (4)


Всегда есть попытка самостоятельно проанализировать заголовок.

Также я видел ссылки на библиотеку EBML, используемую для декодирования файлов MKV. Удачи!

person monksy    schedule 05.01.2010

Недавно я опубликовал версию C# на https://bitbucket.org/OlegZee/nebml. Он содержит образец редактора титров, который демонстрирует встроенное редактирование определенных свойств.

person olegz    schedule 08.04.2011
comment
Я знаю, что это было давно. Я посмотрел на ваш проект, и он выглядит довольно... сложным. Есть ли доступная документация? - person Jan; 29.05.2013
comment
Что особенно сложно? На самом деле есть два модуля: один определяет программу чтения/записи Ebml, а другой описывает структуру MKV. - person olegz; 30.05.2013
comment
Когда я смотрел на это, я ожидал чего-то похожего на API. Что-то вроде 'Matroshka file = new Matroshka(); файл.Загрузить(...); file.Title=foobar;'. Затем я более внимательно посмотрел на пример решения и надеялся, что смогу найти что-нибудь, что я мог бы поместить в оболочку, чтобы получить упомянутое поведение, но я вообще не мог понять, как это использовать... - person Jan; 30.05.2013
comment
@Jan: это не так просто :( К сожалению, это связано с огромным размером файла, поэтому я просто обновляю записи комментариев на месте. Дайте мне знать, какие записи вы планируете изменить: только метаданные или потоки? Я бы был бы счастлив реализовать полный API, но я боюсь, что это не так просто, и пользователи будут посылать мне пожелания смерти каждый раз, когда они получат сломанный файл MKV, особенно если это произойдет на 1: 05.00 с самого начала :) - person olegz; 05.06.2013
comment
ха-ха, я могу представить. Честно говоря, я просто хотел изменить метаданные. Банкомат только название, если быть точным. Я был бы готов протянуть руку, если вы ищете поддержки? - person Jan; 05.06.2013
comment
@Jan: ну, такой API для метаданных возможен. Я проверю, смогу ли я быстро погрузиться в свой код, и обновлю его в ближайшее время. - person olegz; 09.06.2013
comment
@olegz Я посмотрел ваш проект. Однако я не мог понять, как я могу извлечь субтитры из видео mkv. Можете ли вы помочь мне в этом? - person sinanakyazici; 07.09.2013

Вы можете попробовать задать этот вопрос на форумах doom9 в их разделе разработки. Также вам может подойти mediainfo.dll.

person Jeff C.    schedule 26.04.2010

Самый простой способ получить много этого — создать экземпляр mkvinfo и проанализировать его вывод. Одна проблема с тем, что вы спрашиваете, заключается в том, что файл Matroska может иметь неограниченное количество видео- и аудиопотоков. Таким образом, вам нужно будет перечислить потоки в файле до получения этих свойств.

person David Chappelle    schedule 04.08.2015