top of page

Лабораторная работа №13. Работа с мультимедиа.  Аудио, видео плееры..

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

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

Какие форматы видео можно использовать? Android поддерживает все те же форматы видео, что и HTML 5, в частности, формат MPEG-4 H.264 (еще известный как WebM), который является оптимальным для Android. Но также можно использовать распространенные форматы MPEG4 H.264 AVC (.mp4) и MPEG4 SP (.3gp)

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

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

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content">

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="Play"

            android:onClick="play"/>

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="Pause"

            android:onClick="pause"/>

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="Stop"

            android:onClick="stop"/>

    </LinearLayout>

    <VideoView android:id="@+id/videoPlayer"

        android:layout_gravity="center"

        android:layout_height="match_parent"

        android:layout_width="match_parent"/>

 

</LinearLayout>

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

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

 

import android.net.Uri;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.VideoView;

 

public class MainActivity extends AppCompatActivity {

 

    VideoView videoPlayer;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        videoPlayer =  (VideoView)findViewById(R.id.videoPlayer);

        Uri myVideoUri= Uri.parse( "android.resource://" + getPackageName() + "/" + R.raw.gu);

        videoPlayer.setVideoURI(myVideoUri);

    }

 

    public void play(View view){

        videoPlayer.start();

    }

    public void pause(View view){

        videoPlayer.pause();

    }

    public void stop(View view){

        videoPlayer.stopPlayback();

        videoPlayer.resume();

    }

}

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

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

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

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

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

bottom of page