Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Потоковое видео в приложениях для Android

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)

Платформа Android предоставляет библиотеки, которые вы можете использовать для потоковой передачи медиафайлов, таких как удалённые видеоролики, и для воспроизведения в ваших приложениях. В этом учебном пособии мы будем передавать видеофайл, отображая его с помощью компонента VideoView вместе с объектом MediaController, чтобы позволить пользователю управлять воспроизведением.

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

1. Создайте новое приложение

Шаг 1

Вы можете использовать код из этого урока для улучшения приложения, над которым вы работаете или создать новое приложение в Eclipse или Android Studio. Создайте новый проект Android, назовите его по своему выбору, настройте детали, задайте ему начальный основной класс Activity и макет.

Шаг 2

Сначала соберём декларацию проекта для потокового мультимедиа. Откройте файл манифеста своего проекта и переключитесь на редактирование XML в вашей среде IDE. Для потоковой передачи мультимедиа вам нужен доступ в Интернет, поэтому добавьте в элемент manifest следующее разрешение:

2. Добавление VideoView

Шаг 1

Платформа Android предоставляет класс VideoView, в котором вы можете воспроизводить видеофайлы. Давайте добавим один к основному файлу макета:

При необходимости измените родительский макет, чтобы он соответствовал вашему приложению. Даём экземпляру VideoView атрибут id, чтобы мы могли обратиться к нему позже. Возможно, вам придется настроить другие свойства макета для собственной разработки.

Шаг 2

Теперь давайте вернём ссылку на экземпляр VideoView в коде. Откройте основной Activity класс приложения и добавьте следующие дополнительные ресурсы:

Ваш класс Activity уже должен содержать метод onCreate, в котором установлено представление содержимого:

После строки setContentView давайте получим ссылку на  VideoView следующим образом, используя id, который мы установили в XML-макете:

3. Потоковая передача видеофайла

Шаг 1

Теперь мы можем передать видеофайл в приложение. Подготовьте URI для конечной точки следующим образом:

Конечно, вам нужно будет использовать удалённый адрес для видеофайла, который вы хотите передать. Примером здесь является видеофайл общедоступного домена, размещенный в Internet Archive. Мы анализируем адресную строку как URI, чтобы могли передать её объекту VideoView:

Теперь вы можете просто начать воспроизведение:

Операционная система Android поддерживает ряд форматов видео и мультимедиа, причём каждое устройство часто поддерживает дополнительные форматы сверх того.

Как видно из Developer Guide, поддерживаемые форматы видеофайлов включают в себя 3GP, MP4, WEBM и MKV, в зависимости от формата и уровня платформы, установленных пользователем.

Форматы аудиофайлов, которые вы можете ожидать, включают встроенную поддержку MP3, MID, OGG и WAV. Вы можете транслировать медиафайлы на Android через RTSP, HTTP и HTTPS (с Android 3.1).

4. Добавьте управление воспроизведением

Шаг 1

Мы реализовали воспроизведение видео, но пользователь привык его контролировать. И платформа Android предоставляет ресурсы для этого, используя привычное взаимодействие через класс MediaController.

В методе onCreate класса Activity перед строкой, в которой вы вызываете start в VideoView, создайте экземпляр класса:

Затем установите его для использования экземпляра VideoView в качестве привязки:

Наконец, установите его в качестве медиа-контроллера для объекта VideoView:

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

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

Как вы увидите при запуске приложения, вид по умолчанию для элементов управления исчезает через несколько секунд, вновь появляясь, когда пользователь касается экрана. Вы можете настроить поведение объекта MediaController различными способами. Смотрите series on creating a music player app for Android в качестве примера, как это сделать. Вы также можете улучшить звук мультимедиа через устройства воспроизведения, чтобы настроить поведение вашего приложения.

5. Использование MediaPlayer

Шаг 1

Прежде чем мы закончим, давайте рассмотрим альтернативный подход для потоковой передачи видео с помощью класса MediaPlayer, поскольку мы использовали его в серии series on creating a music player. Вы можете транслировать мультимедиа, включая видео, в объект MediaPlayer, используя вид поверхности. Например, вы можете использовать следующий макет:

Мы будем ссылаться на SurfaceView в реализации класса Activity.

Шаг 2

В своём классе Activity добавьте следующие интерфейсы:

Ваша IDE должна предложить вам добавить эти нереализованные методы:

Мы добавим методы surfaceCreated и onPrepared.

Шаг 3

Для реализации воспроизведения добавьте в класс следующие переменные:

В методе onCreate в Activity вы можете начать создавать эти переменные, используя объект SurfaceView, добавленный в макет:

Шаг 4

В методе surfaceCreated настройте ресурсы воспроизведения мультимедиа:

Наконец, в методе onPrepared начните воспроизведение:

Теперь ваше видео должно воспроизводиться в экземпляре MediaPlayer при запуске приложения.

Заключение

В этом учебном пособии мы изложили основы потокового видео на Android с использованием классов VideoView и MediaPlayer. Вы можете добавить много улучшений в код, который мы реализовали, например, путём создания видео или поддержки потокового мультимедиа в созданном нами приложении музыкального проигрывателя. Вы также можете проверить ресурсы, связанные с Android, такие как YouTube Android Player API.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.