Всем доброго времени суток!
Суть проблемы: В Win7/Vista код воспроизведения avi работал прекрасно. Делалось просто aviStreamOpenFromFile/dibDrawOpen и т.п. Кадр получал нормально. При условии, что кодек которым жали данные avi, в системе есть. Все было хорошо, до тех пор, пока я не решил попробовать запустить конвертер на ХР.
Половину файлов конвертер в принципе не открыл. aviStreamOpenFromFile провалилась, хотя кодеки установлены гарантированно и тот же Media Player играет это видео. Далее я переконвертил файлик в mjpeg, т.е. фактически чистый жыпег по кадрам. О чудо! поток из файла открылся, но вместо кадра - черный экран. Хотя GetFrameOpen и иже с ним возвращают валиндый поинтер и т.п. В Vista/Win7 были похожие проблемы когда забыл dib создать для контекста кодека в системе. Но тут то он создается, ибо работал код.
Кто нить знает как по феншую воспроизвести avi через vfw, чтобы с описаниями всяких подводных камней и т.п.?
Варинты со всякими компонентами не предлагать, нужен чистый апи код.
Варианты с доками и т.п. предлагать :)
PS: ffmpeg уже ковыряю, но там чистый код, а хотелось бы почитать теорию, что и как, для чего, куда и чем :)
Так. Проблема черного кадра успешно решена. Осталось разобраться почему aviStreamOpenFromFile валится при попытке открыть файл.
Таак. Опытным путем удалось установить, что НЕ откарываются файлы с id кодеков которые явно не парсятся даже mediaInfo, т.е. допустим codecId=0xE0, это типа MPEG4 семейство, а что конкретно за кодек фиг поймешь.
DirectShow + GraphEdit из DXSDK, не ?
http://directshow.wonderu.com/статьи
http://2developers.net/post/com_direct_show_1.html
Нет.
DShow у меня есть. Насколько я посмотрел там нет возможности выдирать кадры. Там только чистое воспроизведение видео. Мне же нужно другое.
Вообщем докопал я исходники ffmpeg. Решил пока оставить так, если codecId не известен, то файл не открываем и сообщаем юзеру. Не очень юзабельно, но писать тучу кода, наплодить еще больше багов, и еще дольше все это отлаживать как то не хоцца.
Если будет еще инфа какая то, буду признателен.
PS: Ээээхх, вот бы исходники VirtualDub-а поковырять.
Мух
> Насколько я посмотрел там нет возможности выдирать кадры.
Напиши фильтр, получающий кадры и подключи его в качестве выводилки,... в чём проблема-то? Сам по себе фильтр должен получиться примитивным
> Ээээхх, вот бы исходники VirtualDub-а поковырять.
А что мешает, сорцы вполне доступны?
А где их взять? Господа камрады поделитесь :)
Не поверишь,...
Здесь http://virtualdub.sourceforge.net/ вот это http://sourceforge.net/projects/virtualdub/files/virtualdub-win/1… c.7z/download
Выдирать кадры, типа скриншотов? SampleGrabber - фильтр есть такой, как раз для этого и существует.
Либо 0iStalker отлично посоветовал.
При этом DirectShow имеет больше контроля над происходящим чем основные другие методы реализации подобной задачи.
0iStalker
> Не поверишь,...
Однако обленился :) Спасибо большое!
Вообщем камрады спасибо! Сегодня за 4 часа написал оберточку для граба, оставив старую логик и новую, если старая не сработает. Пока полет нормальный. Осталось похардтестить на баги.
Тема закрыта. Все еще раз большое спасибо!
Тема в архиве.
Тема закрыта.
| Https://груз-доставка.рф/nashi-uslugi/perevozka-veschej/ перевозка личных вещей https://груз-доставка.рф/nashi-uslugi/perevozka-veschej/ груз-доставка.рф |