Конференция "Media" » Разбить avi -кадры на полукадры [D7]
 
  • GAZot © (17.12.09 18:18) [0]
    Доброго времени суток, уважаемые эксперты!
    Есть обычный avi файл,необходимо его разложить на полукадры и записать, т.е. чётные строки записывать в один кадр нечётные в другой и т.д. на выходе avi-файл из полукадров.Как это реализовать?
  • Sapersky (17.12.09 20:42) [1]
    В первый раз вижу человека, который хочет не избавиться от проклятого интерлейса, а наоборот :)
    Для чего это нужно?
  • GAZot © (17.12.09 21:35) [2]
    Sapersky
    А что, ответ на этот вопрос поможет решить проблему?
  • Sapersky (17.12.09 22:05) [3]
    Бывает, что люди "хотят странного", не зная, что есть более простые методы решения проблемы в целом.
    Запись по полям имела бы смысл при видеозахвате с аналоговой камеры, например. Для максимального сохранения оригинала и всё такое. Но в остальных случаях прогрессивное (обычное, с целыми кадрами) видео гораздо удобнее для обработки и воспроизведения в цифровом виде.
    Кроме того, перевод в интерлейс неизбежно подпортит качество - поля с чётными/нечётными строками в должны идти равномерно с интервалом 20 мс (от чего имеем известный "эффект гребёнки"), а если источник прогрессивный (кадры через 40 мс), нужно как-то интерполировать промежуточные поля на основе соседних кадров, что ли, а интерполяции никогда качество не улучшают.
  • brother © (18.12.09 04:28) [4]
    > т.е. чётные строки записывать в один кадр нечётные в другой
    > и т.д

    это называется интерлэйсинг и используется для вывода видео на телевизор, кодируй видео в режиме интерлэйсинг и будет счатстье
  • GAZot © (18.12.09 06:28) [5]
    Sapersky
    В общем то ты сам ответил на свой вопрос.
    Хорошо, попробую сформулировать свой вопрос по другому.
    Меня не так интересует код касаемо хождения циклом по кадрам и переноса покселей из одного места в другое.Меня интересует процедура получения информации о AVI файле,об открытом потоке,а так же какие параметры мне менять, применительно к моей задаче в новом создаваемом потоке.
  • Sapersky (18.12.09 10:49) [6]
    Для вывода на телевизор лучше делать интерлейсинг непосредственно при выводе, чтобы не портить качество лишней перепаковкой. И вообще мне кажется, что видеокарта должна сама делать такие преобразования на видеовыходе. Разве что писать видео под какой-нибудь DVD-плеер, который ничего кроме интерлейса не понимает.
    Какие параметры потока дёргать... смотрел VFW, не нашёл там в явном виде опций для интерлейса. Некоторые кодеки, похоже, неофициально поддерживают, напр., у DivX 6 есть опция preserve interlace, у VP61 что-то подобное, у ffdshow (Mpeg2,4,XVid) - interlaced encoding. Правда, непонятно, какую картинку передавать для компрессии - уже уполовиненную или они сами вытащат нужные поля. Возможно, из-за того что передавал что-то не так - на практике оно у меня не заработало.
    Пробовал этим примером (открыть что-нибудь/Convert/выбрать кодек/Config):
    http://sapersky.narod.ru/files/AviHandler_VFW.rar

    DShow - не знаю, не специалист. Вот, нашёл что-то, сам MS называет это Windows Media Format SDK:
    http://msdn.microsoft.com/en-us/library/dd443240(VS.85,printer).aspx
    Речь там идёт о WMV9, не AVI.
 
Конференция "Media" » Разбить avi -кадры на полукадры [D7]
Есть новые Нет новых   [134430   +2][b:0][p:0]