-
Доброго времени суток, уважаемые эксперты! Есть обычный avi файл,необходимо его разложить на полукадры и записать, т.е. чётные строки записывать в один кадр нечётные в другой и т.д. на выходе avi-файл из полукадров.Как это реализовать?
-
В первый раз вижу человека, который хочет не избавиться от проклятого интерлейса, а наоборот :) Для чего это нужно?
-
Sapersky А что, ответ на этот вопрос поможет решить проблему?
-
Бывает, что люди "хотят странного", не зная, что есть более простые методы решения проблемы в целом. Запись по полям имела бы смысл при видеозахвате с аналоговой камеры, например. Для максимального сохранения оригинала и всё такое. Но в остальных случаях прогрессивное (обычное, с целыми кадрами) видео гораздо удобнее для обработки и воспроизведения в цифровом виде. Кроме того, перевод в интерлейс неизбежно подпортит качество - поля с чётными/нечётными строками в должны идти равномерно с интервалом 20 мс (от чего имеем известный "эффект гребёнки"), а если источник прогрессивный (кадры через 40 мс), нужно как-то интерполировать промежуточные поля на основе соседних кадров, что ли, а интерполяции никогда качество не улучшают.
-
> т.е. чётные строки записывать в один кадр нечётные в другой > и т.д
это называется интерлэйсинг и используется для вывода видео на телевизор, кодируй видео в режиме интерлэйсинг и будет счатстье
-
Sapersky В общем то ты сам ответил на свой вопрос. Хорошо, попробую сформулировать свой вопрос по другому. Меня не так интересует код касаемо хождения циклом по кадрам и переноса покселей из одного места в другое.Меня интересует процедура получения информации о AVI файле,об открытом потоке,а так же какие параметры мне менять, применительно к моей задаче в новом создаваемом потоке.
-
Для вывода на телевизор лучше делать интерлейсинг непосредственно при выводе, чтобы не портить качество лишней перепаковкой. И вообще мне кажется, что видеокарта должна сама делать такие преобразования на видеовыходе. Разве что писать видео под какой-нибудь DVD-плеер, который ничего кроме интерлейса не понимает. Какие параметры потока дёргать... смотрел VFW, не нашёл там в явном виде опций для интерлейса. Некоторые кодеки, похоже, неофициально поддерживают, напр., у DivX 6 есть опция preserve interlace, у VP61 что-то подобное, у ffdshow (Mpeg2,4,XVid) - interlaced encoding. Правда, непонятно, какую картинку передавать для компрессии - уже уполовиненную или они сами вытащат нужные поля. Возможно, из-за того что передавал что-то не так - на практике оно у меня не заработало. Пробовал этим примером (открыть что-нибудь/Convert/выбрать кодек/Config): http://sapersky.narod.ru/files/AviHandler_VFW.rarDShow - не знаю, не специалист. Вот, нашёл что-то, сам MS называет это Windows Media Format SDK: http://msdn.microsoft.com/en-us/library/dd443240(VS.85,printer).aspx Речь там идёт о WMV9, не AVI.
|