Xuggle xuggler что это
Xuggler Tutorial: Транскодирование и модификация медиа
Xuggler предлагает два разных API программирования, которые можно использовать для одной и той же цели. Во-первых, у нас есть MediaTool API :
MediaTool — это простой интерфейс прикладного программирования (API) для декодирования, кодирования и изменения видео в Java. MediaTool скрывает многие мелкие детали контейнеров, кодеков и т. Д., Чтобы вы могли сосредоточиться на носителе, а не на инструментах. Тем не менее, MediaTool по-прежнему предоставляет доступ к базовым объектам Xuggler, поэтому вы можете точно контролировать зерно, если вам это нужно.
Для начала мы будем использовать MediaTool API, а в последующих уроках мы также будем иметь дело с Advanced API.
Давайте посмотрим код высокого уровня для транскодирования, и я объясню детали позже.
После того, как процесс будет завершен (он будет длиться столько же, сколько исходный видеофайл, так как мы одновременно его видим в режиме реального времени), будет создан новый выходной файл в формате FLV.
Давайте используем Ffmpeg из командной строки для сравнения входных и выходных файлов:
Теперь мы готовы изменить медиа-файл с помощью Xuggler. Но прежде чем писать код, нам нужно понять, как работает MediaTool :
MediaTool использует парадигму слушателя событий. Устройство записи автоматически добавляется в качестве «слушателя» к устройству чтения и получает все декодированные носители. Интерфейсы IMediaViewer и IMediaWriter (что на самом деле представляют собой средство просмотра и записи) реализуют интерфейс IMediaListener и могут быть добавлены в качестве прослушивателей для IMediaReader.
Мы подтвердили это на нашем предыдущем примере. Дело в том, что для выполнения различных модификаций входного файла нам необходимо настроить «медиа-конвейер». Мы создаем пользовательские реализации IMediaTool, а затем последовательно настраиваем прослушиватели для каждого инструмента, чтобы они передавали данные от одного к другому.
Предположим, мы хотим добавить статичное изображение к нашему видео и в то же время уменьшить громкость звука. В этом случае мы создаем два пользовательских объекта IMediaTool :
Кроме того, мы создаем объект IMediaWriter, который будет использоваться для создания выходного файла. Со всем этим мы создаем цепочку, которая выглядит следующим образом:
Давайте посмотрим код, который реализует все вышеперечисленное:
Xuggler Tutorial: захват кадров и создание видео
Идея состоит в том, чтобы открыть файл мультимедиа, пройти через определенный видеопоток и через определенные промежутки времени захватить соответствующий кадр, преобразовать его в изображение и сбросить двоичное содержимое в файл. Вот как выглядит код для всего этого:
Давайте запустим это приложение, чтобы увидеть результаты. В качестве входного файла я использую старый рекламный ролик Sun, в котором говорится, что « Java везде ». Я скачал локально предоставленную версию MP4. Вот как будет выглядеть консоль вывода:
по прошествии 0,000 секунд пишет: c: /snapshots/mysnapshot1298228503292.png
по прошествии 10,010 секунд пишет: c: /snapshots/mysnapshot1298228504014.png
по прошествии 20,020 секунд пишет: c: /snapshots/mysnapshot1298228504463.png
…
по истечении 130.063 секунд пишет: c: /snapshots/mysnapshot1298228509454.png
по прошествии 140.007 секунд пишет: c: /snapshots/mysnapshot1298228509933.png
по истечении 150.017 секунд пишет: c: /snapshots/mysnapshot1298228510379.png
Общее время видео составляет около 151 секунды, поэтому мы фиксируем 16 кадров. Вот как выглядят захваченные изображения в моей папке:
Чтобы создать видео, нам потребуется более низкоуровневый подход по сравнению с MediaTool API, который мы видели до сих пор. Не волнуйтесь, это не будет сложным. Основная идея заключается в том, что мы создаем средство записи мультимедиа, добавляем к нему некоторую потоковую информацию, кодируем наши мультимедиа (изображения на снимках экрана) и закрываем средство записи. Давайте посмотрим код, используемый для достижения этой цели:
Руководство для начинающих по настройке Xuggler
Использование Xuggler без Apache Maven или Apache Ivy
Обновление После Загрузки Зависимостей
Вопрос:
2 ответа
Я просмотрел материал GNU emacs и не нашел ничего полезного. Кто-нибудь знает хороший учебник по настройке emacs, чтобы в основном превратить его в IDE? Я ищу взаимодействие с gcc/gdb/make и т. д.
Кто-нибудь знает хорошее руководство для начинающих по использованию OpenGLES на iPhone? Я нашел некоторые, но все они требуют предполагаемых знаний, которых у меня нет.
В следующих файлах перечислены другие банки, от которых зависит xuggle:
Вы можете прочитать их, а затем вручную извлечь из соответствующего репозитория, но я бы сказал, что проще начать использовать менеджер зависимостей.
Eclipse интеграция очень сложна. После того, как вы загрузили jar, вы можете попробовать сгенерировать файл «.classpath» или просто вручную добавить каждый jar через Eclipse GUI. Причина, по которой я не рекомендую этот подход, заключается в том, что существуют плагины Eclipse как для Maven, так и для Ivy, которые сделают это для вас автоматически.
Пример
Запустите ivy из командной строки следующим образом:
Он будет извлекать xuggle и все его зависимости в каталог «lib» следующим образом:
ivysettings.xml
создайте файл с именем pom.xml с этим содержимым:
Убедитесь, что макет папки выглядит следующим образом:
Тогда у вас должен быть рабочий проект Eclipse с необходимыми зависимостями.
Обновление после обновления:
Maven позаботится о загрузке этих зависимостей для вас. Как и Eclipse, если вы используете плагин m2e, как было предложено выше.
Если вы абсолютно не хотите этого делать, вам придется загрузить зависимости вручную. Посмотрите на файл pom выше, обратите внимание на имена и версии зависимостей, найдите их в http://mvnrepository.com/ и загрузите их там, например, это страница для slf4j-api: http://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.6.4
Может ли кто-нибудь указать мне хорошее руководство для начинающих по созданию приложений Facebook?
Похожие вопросы:
Я пытаюсь включить RestKit в свое приложение iOS, но мне не удалось найти Руководство для начинающих по этому API. Я пытался следовать примерам GitHub, но они не работают для меня.
Мне интересно играть с GUIs, и я пытался настроить Qt для Visual Studio 2008 и MinGW, но с треском провалился—в том смысле, что иногда я компилировал библиотеку, и она все равно не работала, а в.
Я просмотрел материал GNU emacs и не нашел ничего полезного. Кто-нибудь знает хороший учебник по настройке emacs, чтобы в основном превратить его в IDE? Я ищу взаимодействие с gcc/gdb/make и т. д.
Кто-нибудь знает хорошее руководство для начинающих по использованию OpenGLES на iPhone? Я нашел некоторые, но все они требуют предполагаемых знаний, которых у меня нет.
Может ли кто-нибудь указать мне хорошее руководство для начинающих по созданию приложений Facebook?
Может ли кто-нибудь опубликовать подробную статью о том, как скомпилировать Xuggler для Raspberry Pi?
Введение в Xuggler для управления видео
С появлением видео в Интернете разработчикам часто приходится манипулировать видеоконтентом в своих приложениях. Xuggler — это бесплатная библиотека с открытым исходным кодом для Java-разработчиков, которую можно использовать для распаковки, обработки и сжатия записанного или живого видео в реальном времени. Xuggler использует очень мощные библиотеки обработки мультимедиа FFmpeg под капотом, по сути играя роль java-оболочки вокруг них. Это простой способ распаковать, изменить и повторно сжать любой медиафайл (или поток) из Java.
Давайте продолжим, получив FFmpeg. Обратите внимание, что Xuggler поставляется с собственной (улучшенной) версией FFmpeg, чтобы избежать проблем с неправильной настройкой, поэтому вам НЕ нужно вручную получать FFmpeg. Попутно мы собираемся протестировать некоторые вещи непосредственно с помощью FFmpeg перед передачей управления Xuggler, поэтому вы можете предпочесть иметь оригинальную версию в качестве отдельного исполняемого файла.
Чтобы проверить, что исполняемый файл работает правильно, откройте терминал и просто запустите его без аргументов. Вы должны увидеть вывод, похожий на этот:
Следующим шагом будет перекодирование вашего первого видео, возможно, из предварительно записанного файла. Мой входной файл — это видео MP4, длиной 4 минуты 20 секунд, размером 18,1 МБ, которое называется «myvideo.mp4». Я хотел бы преобразовать это в Flash Video, значительно снизив его качество. Это очень просто сделать с помощью FFmpeg, введя следующую команду (обратите внимание на использование прямой косой черты для путей):
Вот как выглядит вывод консоли:
Версия FFmpeg SVN-r21231-Sherpya, Copyright (c) 2000-2010 Fabrice Bellard, et al.
построено 16 января 2010 05:42:31 с gcc 4.2.5 20080919 (предварительный выпуск) [Sherpya] libavutil 50. 7. 0 / 50. 7. 0
libavcodec 52.47. 0 / 52,47. 0
libavformat 52.47. 0 / 52,47. 0
libavdevice 52. 2. 0 / 52. 2.0
libavfilter 1.15. 0 / 1,15. 0
libswscale 0. 8. 0 / 0. 8. 0
libpostproc 51. 2. 0 / 51. 2.0
Работа с видео и аудио в Java. Xuggle
Первый раз мне пришлось столкнуться с обработкой видео на Java лет 10-12 назад. Я еще был студентом и работал над проектом, в котором мы пытались сделать видео проигрыватель в виде апплета.
В те времена, для перекодирования видео мы пробовали использовать JMF (Java Media Framework). Нам нужно было сделать хитрую предварительную обработку видео, т.к. показ видео осуществлялся апплетом с помощью самописного алгоритма. В итоге пришлось отказаться от JMF в пользу приложения написанного на С++, т.к. JMF оказался не особо функциональным.
С тех пор прошло много времени, я участвовал в различных более масштабных и менее сумасшедших (и наоборот) Java-проектах (никак не связанных с видео), а тот проект проект был благополучно сдан и забыт. При этом какие-то знания по способам хранения и сжатия мультимедийной информации оказалось прочно засели у меня в голове (и даже некоторое время мучили ночными кошмарами).
Оказалось, что это очень мощный и неплохо написанный проект для работы с мультимедийными данными. Причем позволяет осуществляет работу с «живыми» потоками в реальном-времени. По большому счету он представляет собой обёртку к ffmpeg (в xuggle используют специальную сборку ffmpeg).
Что мне особо понравилось:
Вот пример их демки :
http://www.youtube.com/watch?v=0EvQW94JuJ0
Единственно настораживает то, что давно не было никаких обновлений. Но текущая версия вполне стабильная.