it-swarm.com.ru

HLS (http прямая трансляция) на Android 3.0 и поиск

У нас есть провайдер, который предоставляет нам файлы m3u8 для потоков HLS (первоначально предназначенные для использования в приложении iOS).

Android 3.0+ поддерживает потоковую передачу по http (http://developer.Android.com/guide/appendix/media-formats.html) - и мы можем фактически воспроизводить эти файлы m3u8 с помощью стандартного VideoView на Android 3.0+.

Правка: Android, кажется, обрабатывает это как видео в режиме реального времени, и отключает возможность поиска или расчета продолжительности видео. (Где-как iOS, вы можете искать в потоке без проблем)

Есть ли способ заставить Android 3.0+ искать в этих файлах?

Вот пример деятельности для тестирования другими:

import Android.app.Activity;
import Android.os.Bundle;
import Android.widget.MediaController;
import Android.widget.VideoView;

public class SandboxActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        VideoView vw = (VideoView) findViewById(R.id.videoView);
      vw.setVideoPath("http://devimages.Apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8"); 
        vw.setMediaController(new MediaController(this));
        vw.requestFocus();
        vw.start();
    }
}

и образец макета:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:gravity="center" Android:id="@+id/root">

    <VideoView
        Android:id="@+id/videoView"
        Android:layout_width="wrap_content"
        Android:layout_height="match_parent" />
</RelativeLayout>

Это использует пример ссылки HLS от Apple.

25
NPike

Посмотрите на это (что вы тоже ссылались) страница

Это говорит:

  • Протокол версии 3 (Android 4.0 и выше)
  • Протокол версии 2 (Android 3.x)

И здесь вы можете проверить черновик для HLS . Вы можете выбрать версию вверху страницы.

Первое упоминание о поиске появилось в черновике 3 (по сравнению с черновиком 2 Android 3.x)

Значение даты и времени обеспечивает информативное отображение временной шкалы мультимедиа на соответствующее время настенных часов, которое можно использовать как основа для seek

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

Я не думаю, что у вас есть легкое решение для этого, за исключением использования стороннего HLS-клиента (как предложено vipw)

13
Victor Ronin

Извините, ребята, вы пытаетесь получить кровь из камня. Android 3.0 поддерживает очень ограниченное подмножество HLS, и для поддержки поиска в живых потоках вам понадобится лучший клиент HLS, чем обеспечивает Google.

5
vipw

Я не уверен, но так как VideoView не поддерживает поиск по вашему делу, вы можете попробовать несколько других вариантов, например: http://wiki.videolan.org/AndroidCompile (который легко компилируется)

1
wertigom

Я предполагаю, что описанное вами поведение поиска было реализовано с использованием списка воспроизведения только iframe (# EXT-X-I-FRAMES-ONLY), для которого требуется клиент, поддерживающий как минимум версию 4 спецификации Pantos.

0
John Saxton

В некоторой степени это связано с тем, что существует ошибка, которая не позволяет запускать живые каналы HLS в реальном времени, как они должны. Я предполагаю, что это может быть связано с этим ограничением поиска . Когда вы запускаете живую ленту HLS (у которой нет тега EXT-X-ENDLIST) на Android, в основных компонентах синтаксического анализа HLS есть ошибка, которая не начинаться с текущей точки (конца канала) и вместо этого начинается с начала потока.

На code.google.com есть ошибка, которую вы можете добавить по этому адресу:

http://code.google.com/p/Android/issues/detail?id=37156

0
Bob Cowherd