26 ноября 2009 в 14:44

CUD-CUDA, или почему не надо жать видео видеокартой

Несколько месяцев назад, разочаровавшись в утилите Badaboom, я отказался от мысли использовать видеокарту для кодирования видео в формат Sony PSP. При относительно небольшой экономии времени не радовали ни размеры файла на выходе, ни — особенно! — качество картинки. Жал себе и жал средствами бесплатной XViD4PSP, и очень мне это дело нравилось. У меня давно стоит самосборный NAS на двухъядерном Intel Atom. Зарядишь его в ночь, он себе и шлепает потихоньку.

Но вот вчера вечером получил письмо от компании Nvidia, в котором рапортовалось о выходе новой версии программы Movavi Video Converter с порядковым номер 9. Там еще было написано, что теперь конвертер «получил ускорение до 4-х раз». Чего ускорение — не уточнялось, но я решил, что скорости сжатия видео по сравнению с сжатием посредством CPU. Плотоядно потирая руки, я скачал новинку и натравил ее на файл с молодежной комедией «Юные проказницы в Лондоне» (детям не смотреть!), которая длится 2 часа 57 минут.

Видеокарта у меня сейчас стоит не из очень слабых — GeForce 275 с 240 потоковыми процессорами и частотой ядра 635 мегагерц. Так вот на ней кино пережималось чуть меньше 23 минут. Чип разогревался до 80 градусов, загрузка CPU составляла жалкие 22-25 процентов. На выходе получился гигабайтный файл, запустив который я остался, мягко говоря, разочарован. Все недостатки «бадабума» были налицо: «убитые» цвета, общая мутность картинки, подергивания в динамичных сценах. Смотреть, конечно, можно, но, учитывая, что программка стоит 29 долларов 95 центов, хочется как-то немного большего.

Запускаю XviD4PSP — абсолютно, замечу, бесплатный. Программка пару раз ненавязчиво предлагает перевести продавцу любую сумму по собственному усмотрению, но если не хочешь платить, никто тебя не заставит (замечу, я сам таки перевел, потому что настолько кошерные вещи надо поддерживать). Сжатие того же файла в режиме HQ Ultra заняло 35 минут. Замечу, это режим достаточно суровый, обеспечивающий отличное качество, а если последнее не критично (например, при пережатии сериала средней паршивости), можно сэкономить примерно 30-40 процентов времени. Но в данном случае решил на компромисс не идти.

Как нетрудно подсчитать, ни о каком четырехкратном ускорении речь даже идти не может. И двухкратным не пахнет. Да, процессор у меня нехилый — Core i7 965, однако ему уже больше года стукнуло, и с производства старичка сняли. Между тем, его чуть менее производительный собрат Core i7 920 в рознице можно найти даже дешевле, чем GeForce 275.

Да, наверное, по сравнению с каким-нибудь Core 2 Duo E6300 ускорение будет посерьезнее. Ну или со старым двухъядерником AMD. Вот только качества картинке это не добавит. А к картинке, полученной при сжатии средствами CPU, у меня претензий нет. Четкая, цвета правильные, подергиваний не замечено. Размер файла при этом даже немного (на 40 мегабайт) поменьше, чем получился у Movavi Video Converter.

Короче, снова все, как в анекдоте про секретаршу, которая печатала 800 знаков в минуту, но на выходе та-акая ерунда получалась… Даже и не знаю, как за такой результат можно брать деньги. Впрочем, дают ли?..
Сергей Вильянов @vilianov
карма
227,0
рейтинг 0,0
журналист, писатель, PR-консультант
Похожие публикации
Самое читаемое

Комментарии (70)

  • +4
    Сравнительных скриншотов я так понимаю нету по причине
    файл с молодежной комедией «Юные проказницы в Лондоне»
    ?
    • 0
      Там очень молодежная и очень комедия :)
  • +2
    Было бы неплохо взглянуть на параметры кодирования которые вы использовали в обоих случаях.
    • –4
      И там, и там — по умолчанию.
      • +7
        Дык надо бы посмотреть на «умолчательные» параметры.
        Видео кодировать — это вам не мыло по тазику гонять.
        • –1
          А смысл? Я хорошо знаю, что HQ Ultra — это хорошо :)
          Что же до Movavi, то там настроек негусто, как и во всех программах, жмущих средствами GPU.
          • +1
            Ну хотя бы битрейт то надо одинаковый выставлять. Я уже не говорю про размер картинки и значение количества фреймов в секунду.

            Или вы думаете что значение «Среднее качество» — может быть объективным параметром для разных программок?
            • –1
              Битрейт одинаковый :) Я искренне полагал, что это вычисляется по примерно одинаковому размеру файлов на выходе. 40 мегабайт разницы — это что-то вроде погрешности.
              • +1
                Битрейт не является единственным параметром, определяющим качество. Разные алгоритмы можно использовать для сжатия.
                В общем, необъективный у вас тест :)
                • –1
                  Можно привести примеры алгоритма качественного сжатия на видеокарте? :)
                  • +1
                    Алгоритм не зависит от исполнителя. Тот же XVid можно в разных режимах запустить.
                    А где он будет исполняться — по барабану, хоть на видеокарте, хоть на телефоне.
                    Сравнивать качество сжатия 2х разных кодеков и по этому судить об исполнителе как минимум неразумно :)
                    Вот возьмите реализации XVid и их сравните — будет другое дело.
          • 0
            Ну и не забывайте что PSP понимает не один единственный формат видео.
            Ваши програмки могли кодировать ваш фильм двумя разными кодеками с абсолютно разным набором параметров.

            А для того что бы делать такие выводы как вы, надо что бы это все было одинаковое.

            Немного инфы о кодировании видео, а также о заблуждениях и ошибках dvdtocd.info/cont.htm
            • –2
              Не, вы правда думаете, что среднестатистический пользователь, купивший программу за 30 баксов, начнет яростно копаться в параметрах? :)

              Понятно, что если потратить кучу времени, оно станет чуть бодрее.
              Но зачем его тратить, когда бесплатный XviD4PSP жмет чуть дольше, но СРАЗУ качественно?
              • 0
                Среднестатистический пользователь который кодирует видео просто обязан заглянуть в настройки кодировщика если он надеется получить хороший результат.
                • –1
                  Да ну? А чего же XVid4PSP без этого обходится? :)
                  • +1
                    Потому что в XVid4PSP набор параметров «по умолчанию» вам подходит больше.
                    И в первую очередь потому что разработчик нацелился на конкретного человека: «Владельца PSP».
                    И может предугадать какие параметры кодирования надо выставить «по умолчанию» именно для вас.
                    • –2
                      Коллега, вы эту программку пробовали? Там от PSP только название :)
                      • 0
                        Один раз было дело :)
                        А вот вы в этом Movavi Video Converter пресет выбирали для PSP?
                        • 0
                          Так точно. Причем вариант с high resolution. Совсем по умолчанию она почему-то жмет с разрешением ниже экранного.
                          • +1
                            Ну вобщем если вам интересно почему так произошло, выложите сюда подробные настройки которые вы использовали и мы вместе посмотрим что было причиной.
                            • –2
                              Дык результаты ровно те же, что и на Бадабуме. Если поднять битрейт раза в три, картинка будет ничего, но и размер файла не порадует.
                              Вопрос исключительно в точности «процессоров» в видеокарте, вот и все.
                              • 0
                                Я низнаю. Нада смотреть :)
                              • 0
                                Вы создали целый топик именно потому что были недовольны результатом.
                                Вы хотите разобраться в вопросе или просто пришли пожаловаться?

                                Както вы подозрительно скрываете эти параметры. Я уже два раза у вас их прямым текстом прошу а вы все увиливаете.
                                • –1
                                  Коллега, я на работе, а компьютер со всем этим делом — он дома.

                                  Видеокарты НЕ ПРИГОДНЫ для качественного и эффективного сжатия видео. В этом можно разбираться до потери пульса, но пока не будут предприняты определенные усилия самим разработчиком чипов, ситуация не изменится.

                                  Собственно, об этом и был пост. О том, что не надо вестись на сказки про быстрожимов.
                                  • +1
                                    Вы в топике связываете плохое качество картинки с тем фактом что программа использует для кодирования видеокарту а не процессор.

                                    А я какбэ пытаюсь вам обяснить что ваш вывод ошибочен и что среда расчета не может никак влиять на качество картинки.

                                    Вестись не вестись это конечно дело личное но количество коментариев о том что вы делаете поспешные выводы разве вас не смущает?
                                    • –1
                                      Ну, я вижу сомнения людей, которые сами подобными задачами не интересовались вплотную.
                                      То есть не прозвучало «Хе, так ты просто не то делаешь — надо вот так».

                                      Между тем, то, что видеокарты жмут паршиво — это известный факт. Не зря в Snow Leopard возможности видеокарты не используются именно для сжатия видео. Для других задач — да.

                                      Смысл поста в том, чтобы предостеречь людей от покупки бадабумов и показать бесплатную альтернативу. Это важно.
                                      • 0
                                        Я кажется придумал понятный вам аргумент. :)

                                        Вот есть процессоры x86 и x64, а есть еще SPARC и еще ARM и еще двести тыщ разных процессоров.
                                        И все они могут кодировать видео поток. И результат будет одинаковый.
                                        Видеокарта — это такой же процессор. Только архитектура у него другая.
                                        • 0
                                          Могут, но почему-то не все кодируют. И коллега чуть ниже уже объяснил — почему.
                • +1
                  И цена программы вовсе не делает ее проще.
                  Взгляните на фотошоп
                  • 0
                    вы не поверите, но для меня фотошоп намного легче того же пэйнта
                    • 0
                      Ну вы же понимаете в чем разница между субъективной и объективной оценкой?
                      • 0
                        оно то так, но справедливо и обратное, т.е. «низкая цена скорее всего не делает программу проще»
                      • 0
                        тем паче бесплатность, естесственно есть и исключения, хотя бы google picasa
  • +3
    не важно, чем жать, CPU или GPU, всё зависит от софта, если он криво написан — то GPU не виноват
    • –1
      Неужто Nvidia рекомендует криво написанную программу?
      • +3
        Для них главное, что она работает с CUDA, остальное не важно.
        • 0
          А разве это хорошо?
          • +1
            Плохо, конечно, я никогда не одобрял слишком агрессивной политики nVidia… впрочем, как и слишком пассивной политики ATI.
            • 0
              Ну может с выходом FERMI что-то наладится.
  • +10
    Причем здесь CPU/GPU? С каких пор качество сжатой картинки зависит от процессора, а не от алгоритма сжатия?
    • 0
      Ни с каких пор! Но почему-то алгоритмы, написанные для GPU, ни фига не радуют.
      • +2
        Алгоритмы одинаковые. Если бы были разные алгоритмы ваше видео не проигрывалось бы на PSP.
        • +1
          Мы точно не путаем формат с алгоритмом?
          • +1
            Ну судя по всему кто то из нас путает :)

            Предположим существует некоторый алгоритм. Например алгоритм сортировки массива пузырьком.
            Вне зависимости от того какая железка будет выполнять код (видеокарта или процессор) данные в массиве отсортируются одинаково.

            В нашем случае есть алгоритм кодирования видео по которому действует программа.
            И снова не важно где выполняется этот код, результат должен быть одинаковый.
            • –1
              Тогда чего же он зараза такая не одинаковый при одинаковом битрейте?
              • +3
                Я вам рекомендую почитать какую-нибудь техническую литературу.
                Но битрейт это не единственный параметр который влияет на качество картинки.
                • 0
                  Спасибо за совет :)
        • 0
          Алгоритмы одинаковые, реализация разная. Значительно проще написать программу для CPU, чтобы она быстро и эффективно работала, чем для GPU.
          • 0
            Для этого ж и придумали CUDA. Что бы было легко.
            • 0
              Легче, чем через программирование шейдеров, но все равно сложнее, чем для CPU.
              Надо ж придумать реализацию так, чтобы данные боль-мень равномерно распределились по мультипроцессорам видеокарты.
        • 0
          Тут скорее одинаковые алгоритмы для сохранения видео, то есть формат видео одинаков, а вот алгоритм поиска движения и т.д. совсем не обязаны совпадать.
      • +1
        Ну так это проблемы алгоритмов, а не GPU. Я вот всё жду когда в x264 реализуют использование GPU.

        А по поводу ускорения при кодировании видеокартой (про качество пока забудем) — попробуйте перекодировать какой-нибудь большой ремукс fullHD в что-то размером поменьше, но с тем же разрешением, попробуйте и только процессором и видеокартой, думаю, что разница во времени будет более очевидна.
        С другой стороны, если там действительно такое паршивое качество, то ведь в x264 можно занизить поиск движения так, что он кодировать в плохое качетсво будет раза в три быстрее…
        • 0
          * использование для тех параметров, с которыми обычно кодирую я…
  • 0
    что то я в гугле не нашел такой фильм
    • +1
      Young Harlots in London
      • +2
        спасибо. гляну. посмеюсь. расскажу
        • 0
          Главное — не подпускать детей.
  • 0
    а что за самосборный нас?
  • 0
    как относятся случайные свидетели к просматриваемому на ПСП фильмам данного жанра?
    • 0
      Не знаю, никогда не смотрел.
  • +2
    О энкоде средствами видеокарты на данном этапе не может быть и речи. Качество просто никакое. Самый лучший энкодер на данный момент в h.264 — x264.
    Говорю это как энкодер с опытом и со стареньким Q6600
    • –1
      Спасибо за поддержку. А то тут граждане без опыта почему-то сомневаются :)
      • +1
        Насколько я знаю, в CUDA-энкодерах используется только baseline профиль, это просто ужасно.
    • 0
      У видеокарт аппаратный энкодер что ли?
      • 0
        Ну, если он есть в обычных процессорах, то да :)
        • 0
          Да кто их знает? Сейчас что попало и куда попало могут засунуть. )

          Всё же наверное правильнее говорить о несовершенстве софта для кодирования видеокартой.
          А то я сожму видео в MPEG1 на Intel'овском процессоре и в H.264 на AMD'шном и буду утверждать, что Intel'овские процессы совершенно не годятся для кодирования видео.
          • 0
            Конечно.
            Только в данном-то случае пережимался один и тот же файл в один и тот же формат.
            • 0
              Качество результата и скорость кодирования сильно зависят от параметров кодирования даже для одного и того же «формата».

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.