Определите длину аудиофайла с помощью DirectShow - PullRequest
2 голосов
/ 05 февраля 2010

Я только начинаю с DirectShow.NET и пытаюсь получить длину (в секундах) аудиофайла. Аудио может быть .mp3, .wav, .aac или .m4a.

Могу ли я получить эту информацию с помощью DirectShow или мне нужны другие API?

Ответы [ 2 ]

2 голосов
/ 05 февраля 2010

да, вы можете сделать это с DirectShow. Есть множество способов сделать это. Один из способов - запросить интерфейс IMediaSeeking объекта графа, а затем вызвать метод GetDuration для этого интерфейса.

GetDuration возвращает 64-битное целочисленное значение, указывающее, сколько времени потребуется для воспроизведения файла.

Вам нужно будет вызвать метод GetTimeFormat, чтобы узнать, в каких единицах находится длительность. Наиболее вероятное значение по умолчанию - TIME_FORMAT_MEDIA_TIME, что составляет 10-е микросекунды.

В этом случае вы бы поделили длительность на 10 *1000* 1000, чтобы получить секунды.

Вы также можете позвонить SetTimeFormat перед вызовом GetDuration, если хотите форсировать подразделения.

1 голос
/ 24 января 2013

Вы также можете использовать get_Duration () из интерфейса IMediaPosition.

Возвращает двойное значение с продолжительностью видео в секундах.

    Double Lenght;

    m_FilterGraph = new FilterGraph()

//Configure the FilterGraph()

    m_mediaPosition = m_FilterGraph as IMediaPosition;
    m_mediaPosition.get_Duration(out Length);
...