да, вы можете сделать это с помощью DirectShow. Существует множество способов сделать это. Один из способов - запросить интерфейс IMediaSeeking на объекте графа, а затем вызвать метод GetDuration на этом интерфейсе.
GetDuration возвращает 64-битное целочисленное значение для того, сколько времени потребуется, чтобы воспроизвести файл.
Вам нужно будет вызвать метод GetTimeFormat
, чтобы узнать, в каких единицах находится продолжительность. Наиболее вероятным значением по умолчанию является TIME_FORMAT_MEDIA_TIME, которое составляет 10-е число микросекунд.
В этом случае вы разделите продолжительность на 10 * 1000 * 1000, чтобы получить секунды.
Вы также можете позвонить по телефону SetTimeFormat
, прежде чем звонить GetDuration
, если хотите принудительно отключить устройства.
Я попробую. Спасибо. –
Я пробовал это, и сначала это не сработало. Если я сначала назвал graph.RenderFile, а затем вызвал GetDuraction, он сработал. Спасибо за помощь! –
@Judah: Да, граф должен знать, какой файл, прежде чем он сможет рассказать вам, как долго. –