Как исправить 'mp4 видео, не запущенное в Exoplayer 2.9' - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь запустить видео mp4 по ссылке, используя Exoplayer 2.9, но видео не запускается. Вот ссылка на видео, которую я пытаюсь запустить "http://clips.vorwaerts -gmbh.de / big_buck_bunny.mp4 ".

Я рассмотрел другие ответы для случаев Exoplayer, но, по-видимому, многие методы устарели для Exoplayer версии 2.9.0. Это не проблема телефона, так как я попытался запустить пример кода Exoplayer версии 2.8.2, который работает нормально. В конце концов, мне придется запустить предыдущую версию, если нет ответа на вышеуказанное.

Вот файл макета:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="@dimen/card_margin">
        <com.google.android.exoplayer2.ui.PlayerView
            android:id="@+id/receipe_step_video"
            android:focusable="true"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            />
        <TextView
            android:id="@+id/recipe_step_detail"
            android:padding="@dimen/card_margin"
            android:layout_height="250dp"
            android:layout_width="match_parent"
            android:textAppearance="?android:textAppearanceMedium"
                />
    </LinearLayout>
</ScrollView>

Вот код активности:

public class RecipeStepActivity extends AppCompatActivity {
    @BindView(R.id.recipe_step_detail)
    TextView mRecipeDetailView;
    @BindView(R.id.receipe_step_video)
    PlayerView playerView;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.recipe_step_layout);
        ButterKnife.bind(this);
        mRecipeDetailView.setText(MyData.description);

        SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(this);
        player.setPlayWhenReady(true);
        playerView.setPlayer(player);

        DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,
                Util.getUserAgent(this,this.getString(R.string.app_name)));
        MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(MyData.videoUrl));
        player.prepare(videoSource);
        player.release();

    }
}

Вот вывод, который я получаю. Видео не воспроизводится здесь. Ссылка на изображение: https://github.com/sigma-s/100-Days-of-Code/blob/master/Images/bakingappday8.png

1 Ответ

0 голосов
/ 14 января 2019

Ах! Обнаружена ошибка после попытки нескольких перестановок и комбинаций за последние 2 дня.

Просто нужно поместить player.release() в onStop, чтобы проигрыватель не отпускался сразу после его настройки. Еще одна важная вещь - предоставить разрешение на доступ к Интернету в манифесте Android, поскольку доступ к видео осуществляется через URL-адрес mp4.

@Override
public void onStop(){
    super.onStop();
    player.release();
}

Я пробовал приведенный выше код, и он отлично работает.

...