Чем пожать разницу изображения между двумя соседними кадрами?

Тема в разделе "WASM.HEAP", создана пользователем _DEN_, 30 апр 2009.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Очередная проблема.

    mjpeg дает слишком жирный трафик. Хочется сделать дельту изображения. Сейчас схема такая: отдается целиковый кадр, после чего следующие N кадров - это дельта. Разница между прошлым и текущими кадрами.

    Дельта жмется тем же jpeg-ом. И тут - проблема. Если считать дельту между двумя оригинальными кадрами, то позникает серьезная накопительная ошибка - смотрится ужасно. Если же считать дельту между текущим оригинальным и тем, что на клиенте (оригинальный предыдущий с учетом искажений, вросимых jpeg-ом), то дельта получается "шершавая" и ее компрессия жпегом не дает никакого выигрыша.

    Loseless алгоритмы дают размер в 2 раза привышающий размер кадра в жпеге.
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Вопрос вдогонку.

    libjpeg даже на quality 100 дает ужасное качество жпега. Есть ли "современный" опенсорсный жпег?
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Вообще-то принято иметь определённое кол-во ключевых кадров(оригинальных картинок), тогда погрешности будут не сильно заметны.
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Ну я так и делаю. Ключевой кадр - N дельт - ключевой - N дельт - и т.д.

    Смысл в том, что лобовая loosing (как и looseless) компрессия тут не подходит. Я конечно понимаю, что mpeg4 не за час выдумывался, но все же...)
     
  5. nds

    nds Member

    Публикаций:
    0
    Регистрация:
    16 июл 2007
    Сообщения:
    157
    Jpeg жмет картинку квадратами, если сделать дельту между текущим кадром и предыдущим по квадратам а оставшееся место скажем залить "прозрачным" то должно хорошо и жаться и совмещаться
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    По-моему в looseless вообще не должно быть погрешностей, при работе с дельтами. Если они есть значит где-то баг с расчётами. Потом jpeg работает в несколько этапов. На первом искажает картинку. По идее нужно брать дельту с икажённой. Хотя утверждать наверняка не могу, лучше порыться в исходникаж mpeg, или вообще сразу юзать каку-нибудь готовую либу.
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _DEN_
    А DivX жать непробовал?
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Pavia

    Очень тяжело для сервера. Нужно уметь кодировать десятки каналов на квадкоре. Честные mpeg-подобные алгоритмы боюсь не вытянет.
     
  9. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    3gp вроде телефоны вытягивают.
     
  10. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    _DEN_, а какого типа картинка-то?
     
  11. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    iZzz32

    Камера видеонаблюдения.
     
  12. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    505
    mpeg? я первыйй догадался? где получать приз?
     
  13. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    aa_dav

    Там, где тебя научат на Intel Core Quad делать 20-30 паралельных рилтаймовых кодирований.
     
  14. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    http://www.google.com.ua/search?q=ffmpeg+3gp&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official

    3gp делается телефоном на телефонном процессоре с одновременным выводом на экранчик и болтовней по телефону.
    довольно плотный формат. часовая запись со звуком около 30мб. ффмпег гугль уверяет делать его и из него умеет. ссылки выше
     
  15. nds

    nds Member

    Публикаций:
    0
    Регистрация:
    16 июл 2007
    Сообщения:
    157
    телефонные процессоры под гигарец частотой уже ))
    на первых телефонах с поддержкой видео записи были процы под 300 мгц и они с большим трудом переваривали 176*220*15кадров не говоря уже о том какое ужасное качество картинки дает сжатие в 3gp "на лету"
     
  16. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    _basmp_

    *тяжелый_вздох* Телефон делает decoding, а мне нужно encoding. Encoding это на порядок (на порядки) более тяжелая операция чем decoding.
     
  17. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    nds
    130 и вполне нормальное.

    _DEN_
    угу. а кто делает енкодинг для телефона?
     
  18. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    АДД
    ..когда камеркой снимаем..*
     
  19. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    _DEN_
    Как вариант: на сервак если видюху поставить типа 9800гтх, и на ней всю обработку сделать на CUDA, например?
     
  20. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    _DEN_
    Как вариант: на сервак если видюху поставить типа 9800гтх, и на ней всю обработку сделать на CUDA, например?