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