Videoview android studio пример

VideoView

Компонент VideoView предназначен для воспроизведения видеоклипов.

Находится в разделе Images. Желательно использовать реальное устройство при тестировании примеров.

Android поддерживает файлы формата 3gp и mp4. Точную информацию по поддержке форматов воспроизведения мультимедийных файлов смотрите на сайте .

Использовать класс VideoView очень просто. Он содержит поверхность (объект Surface), на которую выводится видео, а также инкапсулирует все операции по управлению проигрывателем. Размещаете на экране компонент и указываете путь к воспроизводимому файлу. Можно воспроизводить файлы с флеш-карточки, из ресурсов или с веб-сервера через интернет.

Данный элемент скрывает от разработчика инициализацию медиапроигрывателя, предоставляя удобный и простой API. Чтобы задать видео для воспроизведения, вызовите метод setVideoPath() или setVideoUri(). В качестве единственного параметра они принимают путь к локальному файлу, путь URI к источнику данных или адрес удалённого видеопотока.

Завершив инициализацию, вы получаете возможность управлять воспроизведением с помощью методов start(), stopPlayback(), pause() и seekTo(). VideoView также включает метод setKeepScreenOn() для предотвращения отключения подсветки экрана во время проигрывания.

Код для воспроизведения:

Метод setVideoPath() указывает на файл, который находится на SD-карточке. Не забудьте установить разрешение

Метод videoView.setMediaController(new MediaController(this)); позволяет вывести кнопки паузы и воспроизведения. Кнопки появляются, если коснуться экрана. Можете не использовать данную возможность или отключать программно, используя значение null.

Метод requestFocus() необходим, чтобы компонент получил фокус и реагировал на касания пальцев.

Метод start() позволяет сразу начать воспроизведение файла. Если вам не нужно, то не добавляйте строку в код.

Если вам нужно воспроизвести файл с сервера, то нужно использовать метод setVideoURI:

Не забываем добавить необходимое разрешение для работы через интернет:

Ещё можно поместить файл в папку ресурсов res/raw. В этом случае также надо использовать URI:

Связка с MediaPlayer

Компонент может использовать методы интерфейса, которые используются классом MediaPlayer.

В комментариях дан альтернативный вариант загрузки файла из интернета. Раньше в Android 2.2 пример работал, сейчас я проверил на новых устройствах — видео не показывалось. Не знаю с чем связано.

Источник

Работа с мультимедиа

Работа с видео

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

Какие типы видеофайлов можно использовать? Android поддерживает большинство распространенных типов видеофайлов, в частности, 3GPP (.3gp), WebM (.webm), Matroska (.mkv), MPEG-4 (.mp4).

VideoView может работать как с роликами, размещенными на мобильном устройстве, так и с видеоматериалами из сети. В данном случае используем видеоролик, размещенный локально. Для этого добавим в проект какой-нибудь видеоролик. Обычно видеоматериалы помещают в проекте в папку res/raw . По умолчанию проект не содержит подобной папки, поэтому добавим в каталог res подпапку raw. Для этого нажмем на папку res правой кнопкой мыши и в появившемся меню выберем New -> Android Resource Directory :

Читайте также:  Building web apps android

Затем в появившемся окне в качестве типа папки укажем raw (что также будет использоваться в качестве названия папки):

После добавления папки raw скопируем в нее какой-нибудь видеофайл:

Теперь определим функционал для его воспроизведения. Для этого в файле activity_main.xml укажем следующий код:

Для управления воспроизведением видео здесь определены три кнопки: для запуска видео, для паузы и для его остановки.

И также изменим код MainActivity :

Во-первых, чтобы управлять потоком воспроизведения, нам надо получить объект VideoView: videoPlayer = findViewById(R.id.videoPlayer);

Чтобы указать источник воспроизведения, необходим объект Uri . В данном случае с помощью выражения Uri myVideoUri= Uri.parse(«android.resource://» + getPackageName() + «/» + R.raw.cats); получаем адрес видеоролика внутри пакета приложения.

Строка URI имеет ряд частей: сначала идет Uri-схема ( http:// или как здесь android.resource:// ), затем название пакета, получаемое через метод getPackageName(), и далее непосредственно название ресурса видео из папки res/raw , которое совпадает с названием файла.

Затем этот Uri устанавливается у videoPlayerа: videoPlayer.setVideoURI(myVideoUri);

Чтобы управлять видеопотоком, обработчики нажатия кнопок вызывают соответствующее действие:

Метод videoPlayer.start() начинает или продолжает воспроизведение.

Метод videoPlayer.pause() приостанавливает видео.

Метод videoPlayer.stopPlayback() полностью останавливает видео.

Метод videoPlayer.resume() позволяет снова начать воспроизведение видео с начала после его полной остановки.

При запуске приложения мы сможем с помощью кнопок управляь воспроизведением:

MediaController

С помощью класса MediaController мы можем добавить к VideoView дополнительно элементы управления. Для этого изменим код MainActivity:

И если мы запустим приложения, то при касании по VideoView внизу появятся инструменты для управления видео. В прицнипе теперь и кнопки, которые мы создали ранее, не нужны:

Источник

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

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 должна предложить вам добавить эти нереализованные методы:

Читайте также:  Survival dead city андроид

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

Шаг 3

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

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

Шаг 4

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

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

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

Заключение

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

Источник

Android VideoView

Android Tutorial

In this tutorial, we’ll learn about Android VideoView. We will create an android app in Android Studio and play video from URL, we will also do some customizations to it’s control panel.

Android VideoView

Android VideoView class is used to display Video files in them. Following are the acceptable formats:

  • 3gp
  • MP4 – Only H.263, H.264, H.264 codecs work.

VideoViews can play videos either from resource files, local data or url specified. Following are some of the methods used on VideoView:

  • setVideoURI() – This is used to set the url path. It needs to be parsed as a URI.
  • setVideoPath() – Used for local paths.
  • start()
  • stopPlayback()
  • seekTo(int milliSec)
  • pause()
  • resume()
  • isPlaying()
  • canPause()
  • canSeekForward()
  • canSeekBackward()
  • setOnCompletedListener()
  • addSubtitleSource()
  • setMediaController() : Used to add MediaControls on the Video. Pause/Play, Seek
  • getDuration()
  • setOnPreparedListener() : Gets invoked once the video starts.

Note: VideoView does not retain its full state when going into the background.

In the following section, we’ll be creating an application that runs Videos from urls one after the other.
We’ll see how the MediaController works with the VideoView .

Android VideoView Example

Do not forget to add the Internet Permission in your AndroidManifest.xml file.

Android VideoView Example Code

MainActivity.java

The code for the MainActivity.java looks like this:

We’ve added two urls in an ArrayList. We set the anchorView() on the VideoView to keep the MediaControl inside the VideoView .

The output looks something like this:

Why is the MediaControl outside the VideoView?

Well, the MediaControl doesn’t know the dimensions of the VideoView until the video is started.

For having media control inside the video, we need to set the onPreparedListener on our VideoView and then set the anchor inside it. This way the MediaController is set inside the VideoView.

Our updated MainActivity.java class looks like this now:

mp.release() is set to release the media player resources. It should be done to prevent memory leaks. Any videoView calls after this line would lead to a CRASH.

Now the output of the above application in action is given below:

This brings an end to android video view tutorial. You can download the final Android VideoView project from the link below.

Источник

Оцените статью