Подтвердить что ты не робот

HLS (http live streaming) на Android 3.0 и поиск

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

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

EDIT: 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.

4b9b3361

Ответ 1

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

В нем говорится:

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Об этом на странице code.google.com есть ошибка: вы можете "показать" ее или перенести там:

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

Ответ 5

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