В этой статье речь пойдет о разработке простейшего плеера с использованием библиотек из проекта FFmpeg.
Я не нашел на хабре статей на данную тематику, поэтому решил восполнить этот пробел.
Декодирование видео будет осуществляться с помощью библиотек FFmpeg, отображение — с помощью SDL.
Казалось бы, такая обыденная задача, как воспроизведение видео не должна вызывать никаких проблем, но по прежнему это не совсем так.
Т.к. речь идет о HD-видео, то потребуется высокая производительность декодера. Например, если декодериуем на CPU, то на потоках 30-35 MBps на Intel Core2 Duo E8500 3.2 GHz уже начинают выпадать кадры. Процессор довольно быстрый, разница в производительности по сравнению с ядром Sandy Bridge на той-же частоте будет порядка 20%. Качественно пережатый full-HD фильм может создать проблемы, не говоря уж об оригинальных потоках с Blu-ray, там поток может достигать 45 MBps. Обладатели ноутбуков обычно имеют процессоры послабее, да и настольные системы не у всех с мощными CPU. Еще один случай, где CPU становится узким местом – это deinterlacing. Deintrlacing необходим при просмотре потоков спутниковых HD каналов, потоки там с разумным bitrate (обычно 10-15 MBps), но программный deintarlace съедает все остатки ресурсов. Причем качественный deinterlace, без замыливания и с сохранением fps, тяжелы для CPU. Единственный выход – использовать аппаратное декодирование, которое предлагают современные GPU. Про видео со спутниковых каналов следует отметить, что они бывают частично поврежденными, т.к. прием не всегда идеален, поэтому важно, чтобы плеер стабильно переваривал такие “срывы” потока.
Хочу поведать о своём недавно проведённом исследовании, в котором я изучил проблему несоответствия TV/PC диапазонов при сжатии/воспроизведении видео. Проблема эта довольно мелочная, но в то же время достаточно массовая, из-за неё я частенько раньше винил кодеки сжатия в изменении цветов.
Теперь нам не нужна высокоскоростная камера, чтобы делать замедленную съёмку. Швейцарский программист и дизайнер Саймон Югстер (Simon A. Eugster) выпустил замечательный видеоредактор slowmoVideo для рендеринга замедленной съёмки (slow motion) на основе отдельных кадров. Можно использовать slow motion как художественный эффект — чтобы подчеркнуть какой-то момент на видео. Или можно генерировать целые видеоролики на основе ограниченного количества кадров. Например, вы даёте на входе 24 кадра, а программа генерирует 240.
Инструкция по установке необходимых библиотек и компиляции здесь. К сожалению, программа работает только на картах nVidia из-за использования библиотеки V3D (GPU-KLT+FLOW).
Работая с одним проектом, столкнулся с необходимостью заливки видео на сервер (качественные ролики длительностью 2-3 минуты) с последующей репликаций их на S3 & дистрибьюцией через CouldFront. На хостинге стоит Centos 6.0 x64. ffmpeg который в дополнительных репозиториях к сожалению лохматой версии 6.1 и не включает в себя vp8 и иже с ним. Поэтому пришлось заниматься собственноручной сборкой. К сожалению пошарив по инету толкового гайда не нашел, поэтому почитав в округе на данную тему откатал для себя гайд на VirtualBox. Буду рад если кому-то пригодится. Библиотеки были выбраны последние на момент начала ноября.
Необходимо перегнать фильм из MKV с размерами 1280 x 536 в размер мобильного телефона с размерами 320 х 240 и сохранить пропорции. В формат mp4 с аудио в ac3
У меня такой способ расчёта пропорций (самый стандартный – математический ):
Adobe Premiere CS5 и CS5.5 позволяет использовать технологию nVidia CUDA для аппаратного ускорения просчета видеоэффектов. Однако официальный список совместимых видеокарт, обеспечивающих поддержку данной функциональности, довольно короток и ограничивается моделями верхнего ценового диапазона.
Наряду с этим, широко известен хак, позволяющий включить поддержку аппаратного ускорения на гораздо более дешевых решениях. Впрочем, «хаком» назвать этот финт можно с большой натяжкой — «взлом» Premiere сводится к вписыванию названия вашей видеокарты в текстовый файл, лежащий в корне программы. «Дырка» сделана настолько дружелюбной для пользователя, что вызывает непроизвольный вопрос, не специально ли она оставлена?
Под катом мои впечатления от работы в Adobe Premiere CS5 с видеокартой среднего ценового диапазона и некоторые эмпирические выводы.
Доброго времени суток.
Многим web-программистам рано или поздно нужно работать с видео. Такая задача возникла и у меня.
В Интернете есть много статей на форумах и блогах, как на русскоязычных, так и на зарубежных сайтах. Но, проделавши, так же как и предлагалось в инструкциях — результата ожидаемого не дало. Что и послужило поводом для этой статьи. Думаю, она поможет таким же как и я многим начинающим.
Я прилично времени провожу в поездках. Ноутбук всегда с собой, но творчески работать удается не всегда. А вот заниматься монтажом оказывается самое то. В монтаже больше всего времени отнимает просмотр материала и проработка стыков сцен. Особенно это касается «сырого», «стихийного» материала. Когда много дублей, в дублях много брака и приходиться сшивать ролик буквально единственно возможным образом.
Вот незадача: мой ноутбук ASUS UL30A, не тащит хайресное видео в любимом Sony Vegas'e, при работе от батарей. Я молчу о FullHD.
Здравствуйте, уважаемые хаброчане! Сегодня я расскажу вам о том, как совмещаются две, казалось бы, несовместимые технологии: технология вейвлет-преобразования изображений и технология компенсации движения. Конечно, сразу возникает вопрос, зачем это нужно? На него несложно ответить. Крупным недостатком всех систем сжатия видео на основе вейвлетов является межкадровая избыточность, благодаря которой видео «распухает» порой в полтора раза. Этот недостаток существенен и для простых преобразований, и для коммерциализированного MJPEG-2000, который звали предвестником новой эры вейвлет-видео и вообще мессией цифрового мира. Итак, именно для избавления от межкадровой избыточности мы введем в схему компенсацию движения. Это позволит в разы сократить информационный поток в не очень насыщенных движением сценах, таких, как пустой по причине темного времени суток склад компьютеров, или дальний зал Лувра, до которого доходит далеко не каждый турист. Отвечу и на второй вопрос: почему вейвлет, а не ДКП? Вейвлет позволяет достигать значительно лучших результатов при высоких степенях сжатия видео. Говоря простым языком, человека куда проще узнать на кадре, обработанном при помощи вейвлетов.