Directshow AVI Длина файла не соответствует времени записи - PullRequest
0 голосов
/ 26 мая 2019

Я использую DirectShow для записи 1920x1080 60fps из avermedia live gamer portable 2 plus в файл avi. Когда я иду к воспроизведению файла, длина всегда больше, чем я записал. Например, запись 20 секунд, файл показывает 28 секунд.

Я пробовал события с метками времени, используя gettickcoun64, чтобы дать мне относительное истекшее время, и я также использовал функцию GetCurrentPosition AVIMUX IMediaSeeking. Оба хорошо коррелируют друг с другом и с фактическим прошедшим временем. Однако, когда я открываю файл после завершения записи, файл всегда кажется длиннее.

Basic Filter Graph which gives invalid file length

График фильтра очень прост, он включает только устройство захвата, устройство захвата звука, AVIMUX и средство записи файлов.

Я попытался удалить звук и получить тот же результат, 28 секунд вместо 20.

Если я уменьшу частоту кадров до 50 кадров в секунду, времена совпадут. Если я уменьшу размер изображения 1280 x 768 60 кадр / с, файлы не будут совпадать, похоже, что они связаны с файлом AVI и 60 кадр / с?

Интересно, что если я посмотрю на файл с MediaInfo, он скажет, что файл длится всего 20 секунд (что я и ожидал), но загружается в Windows Media Player или Directshow Player, и они говорят, 28 секунд.

Media Info analysis

...