eXport-it андроид UPnP/HTTP клиент/сервер

eXport-it андроид UPnP/HTTP клиент/сервер

Android


Android-приложение обмена файлами для видео, аудио, изображений и электронных книг




eXport-it FFmpeg



Что такое библиотека FFmpeg?

FFmpeg (https://www.ffmpeg.org/) – это комплексное кроссплатформенное решение для записи, преобразования и потоковой передачи аудио и видео. FFmpeg — это ведущий мультимедийный фреймворк, способный декодировать, кодировать, перекодировать, мультиплексировать, демультиплексировать, транслировать, фильтровать и воспроизводить практически все, что создано людьми и машинами. Он поддерживает самые малоизвестные древние форматы вплоть до самых современных. Независимо от того, были ли они разработаны каким-либо комитетом по стандартам, сообществом или корпорацией.

Кроме того, он обладает высокой переносимостью: FFmpeg компилирует, запускает и передает нашу тестовую инфраструктуру FATE в Linux, Mac OS X, Microsoft Windows, BSD, Solaris и т. д. в самых разных средах сборки, машинных архитектурах, и конфигурации.

Сама библиотека FFmpeg находится под лицензией LGPL 2.1. Включение некоторых внешних библиотек (например, libx264) изменяет лицензию на GPL 2 или более позднюю.

Как эта библиотека интегрирована в приложение для Android

Для компиляции библиотек я использовал скрипт ffmpeg-android-maker (авторы: Александр Бережной Javernaut + codacy-badger Codacy Badger + A2va). Этот скрипт загружает исходный код FFmpeg с https://www.ffmpeg.org, создает библиотеку и собирает ее для Android. Сценарий создает общие библиотеки (файлы *.so), а также файлы заголовков (файлы *.h).

Главной задачей ffmpeg-android-maker является подготовка общих библиотек для полной интеграции в проект Android. Сценарий подготавливает выходной каталог, который предполагается использовать. И это не единственное, чем занимается этот проект. Исходный код ffmpeg-android-maker доступен по лицензии MIT. Дополнительные сведения см. в файле LICENSE.txt на странице https://github.com/Javernaut/ffmpeg-android-maker/. Библиотеки eXport-it FFmpeg просто скомпилированы с помощью libaom, libdav1d, liblame, libopus и libtwolame... но не со всеми связанными библиотеками.

Чтобы разработать поддержку Java для FFmpeg и запустить его на Android 7.1–12, я начал с проекта MobileFFmpeg, задокументированного на https://github.com/tanersener/mobile-ffmpeg/ Танером Сенером, который больше не поддерживается. ... и находится под лицензией LGPL 3.0 ...

Наконец, я подготовил проект JNI Android Studio с библиотеками, включил файлы и код поддержки Java и создал файл библиотеки .aar для интеграции в качестве дополнительной библиотеки в мои существующие проекты.


Как запустить многоадресный канал

Для запуска многоадресного канала требуется использовать клиент для доступа к серверу UPnP в вашей локальной сети (Wi-Fi) с поддержкой FFmpeg. Этот сервер должен ответить списком файлов, которые он экспортирует. Если на этом сервере есть поддержка FFmpeg, в конце верхней строки страницы списка должен быть показан небольшой текст «Как канал» красным цветом. Когда текст «красный», нажатие на кнопку «воспроизведение» работает так же, как и до использования протокола UPnP. Если вы нажмете на текст, он должен стать «зеленым», а нажатие на кнопку «воспроизведение» после выбора видео или аудио файлов должно запустить «канал».

Выбранные медиафайлы воспроизводятся, по-видимому, так же, как и через UPnP, за исключением того, что задержка запуска больше из-за дополнительных задач. Этот клиент должен воспроизводить медиафайлы, чтобы канал оставался активным.

Использование этой трубы на других устройствах

Многоадресная IP-рассылка не работает через Интернет, она работает только в локальной сети, поэтому в основном по Wi-Fi. Многоадресный канал данных может совместно использоваться многими клиентами одновременно. Вы отправляете поток мультимедийных данных по своей сети Wi-Fi и показываете эти данные на подключенных устройствах почти синхронно, разница лишь в задержке.

При потоковой передаче UPnP или HTTP каждому устройству требуется пропускная способность отображаемого видео, а глобальная пропускная способность представляет собой сумму обоих потоков. При многоадресной потоковой передаче мы отправляем один поток данных по локальной сети, который используется несколькими клиентами.

Если вы используете другой клиент в своей сети после запуска канала, вы должны увидеть дополнительную строку в главном окне клиента. Просто нажмите на эту строку, чтобы запустить шоу.

Также можно использовать другие продукты, такие как VLC, SMplayer, ... для показа видео или прослушивания музыки, распространяемой по многоадресному каналу, просто используя URL-адрес "UDP", отображаемый в клиенте eXport-it.

Чтобы остановить многоадресный канал

Хороший способ остановить многоадресный канал — остановить его на клиенте, на котором вы его запустили, потому что этот канал контролируется там. Воспроизведение до конца потоковых медиафайлов также должно означать конец шоу.