Определение продолжительности файла MOV - PullRequest
0 голосов
/ 06 июля 2011

У меня есть клиентское приложение, написанное на C #, и я хочу прочитать продолжительность файла MOV.Я должен был бы создать и разместить Quicktime COM элемент управления в форме Windows, а затем загрузить фильм и получить продолжительность.В моем случае это невозможно, так как клиентское приложение не является формой Windows.

Другой способ сделать это, что я и сделал, - открыть файл MOV raw, проверять байты до тех пор, пока выВы пройдете на 12 байт за атом заголовка фильма (mvhd) и получите оттуда шкалу времени и продолжительность.С этим хаком я не согласен, так как он может не сработать, если Apple изменит формат файла в будущем.

Я бы предпочел не загружать MOV в элемент управления, поскольку мне интересно только узнать продолжительностьклипа и ничего больше.В идеале мне нужно указать строку с путем файла mov к приложению и получить такую ​​продолжительность.Кто-нибудь делал это с неуправляемым кодом?

Ответы [ 4 ]

5 голосов
/ 06 июля 2011

Прежде всего, не существует «встроенного» способа работы со специальными форматами файлов. Вы должны либо проанализировать файл самостоятельно, либо получить какой-то компонент, который сделает это за вас.

На самом деле, разбор не является взломом, если ваш код придерживается документации. Вы должны получить (в случае некоторых компаний, купить) официальную спецификацию формата и проанализировать заголовок файла в соответствии со спецификацией. Спецификации являются обязательными, поэтому не стоит ожидать, что формат изменится для того же типа файла.

Вы можете попытаться найти компонент, который бы сделал это для вас. Библиотека, которая содержит элемент управления для отображения фильма, также может содержать некоторые служебные классы. Разумеется, компонент будет анализировать заголовок точно так же, как вы это делаете, поэтому, если формат Quicktime когда-либо изменится (в чем я лично сомневаюсь), все компоненты будут работать одинаково.

2 голосов
/ 06 июля 2011

Чтение файла raw является правильным способом сделать это.

0 голосов
/ 05 февраля 2015

Для будущих пользователей, читающих этот пост, вы можете найти документ Apple Quick Time File Format, который описывает формат файла .mov, по следующим ссылкам:

Классическая версия спецификации формата файла QuickTime :

Фактический PDF с описанием классической версии спецификации формата файла QuickTime

Текущая версия спецификации формата файла QuickTime

0 голосов
/ 07 февраля 2013

Есть еще один хороший способ сделать это, который даст вам возможность улучшить приложение, если вы когда-нибудь захотите найти продолжительность или другую информацию для файла .mov с быстрым временем и других контейнеров мультимедиа: используйте MediaInfo.dll вы можете сослаться на него в своем проекте и найти продолжительность, а также почти все другие аспекты медиа-файла.

...