Android Wear MediaPlayer HTTP потоковое видео

Прежде всего, это не дубликат воспроизведения видео из res/raw на Android Wear. Я хочу воспроизвести видео из Интернета на своем устройстве Android Wear (Moto 360 Sport Android Wear 2.0). Я читал, что устройства Android Wear не имеют самого кодировщика. Поэтому я попытался использовать Exoplayer с расширением vp9, vitamio и т. Д. Когда я использовал Exoplayer с расширением и без него, я получал только звук видеофайла, но не кадры. (только черный вид SimpleExoPlayer со звуком) Когда я использовал vitamio, я получил сообщения журнала ниже. (Я использовал тот же код для Vitamio в моем телефоне Android, он работает)

04-29 22:06:51.173 7719-7735/com.muhendis.vitamiotest4             D/OpenGLRenderer: Swap behavior 1
04-29 22:06:51.189 7719-7735/com.muhendis.vitamiotest4 W/Adreno-ES20: <get_gpu_clk:229>: open failed: errno 13
04-29 22:06:51.261 7719-7730/com.muhendis.vitamiotest4 I/art: Background sticky concurrent mark sweep GC freed 6321(389KB) AllocSpace objects, 2(40KB) LOS objects, 47% free, 1674KB/3MB, paused 14.251ms total 264.932ms
04-29 22:06:51.281 7719-7719/com.muhendis.vitamiotest4 I/Vitamio[4.2.1][Player]: Copyright (c) YIXIA (http://yixia.com).
    THIS SOFTWARE (Vitamio) IS WORK OF YIXIA (http://yixia.com)
04-29 22:06:51.282 7719-7719/com.muhendis.vitamiotest4 I/Vitamio[4.2.1][Player]: LOAD FFMPEG START: /data/user/0/com.muhendis.vitamiotest4/libs/libffmpeg.so
04-29 22:06:51.287 7719-7719/com.muhendis.vitamiotest4 E/linker: /data/data/com.muhendis.vitamiotest4/libs/libffmpeg.so: has text relocations
04-29 22:06:51.288 7719-7719/com.muhendis.vitamiotest4 E/Vitamio[4.2.1][Player]: LOAD FFMPEG ERROR: dlopen failed: /data/data/com.muhendis.vitamiotest4/libs/libffmpeg.so: has text relocations}
04-29 22:06:51.288 7719-7719/com.muhendis.vitamiotest4 I/Vitamio[4.2.1][Player]: LOAD VVO START: /data/user/0/com.muhendis.vitamiotest4/libs/libvvo.9.so
04-29 22:06:51.384 7719-7719/com.muhendis.vitamiotest4 E/Vitamio[4.2.1][Player]: FIND_NAME_SYM vvo, render_yuv
04-29 22:06:51.384 7719-7719/com.muhendis.vitamiotest4 I/Vitamio[4.2.1][Player]: LOAD VVO END: /data/user/0/com.muhendis.vitamiotest4/libs/libvvo.9.so
    LOAD VAO START: /data/user/0/com.muhendis.vitamiotest4/libs/libvao.0.so
04-29 22:06:51.387 7719-7719/com.muhendis.vitamiotest4 I/Vitamio[4.2.1][Player]: LOAD VAO END: /data/user/0/com.muhendis.vitamiotest4/libs/libvao.0.so
04-29 22:06:51.389 7719-7719/com.muhendis.vitamiotest4 I/Vitamio[4.2.1][Player]: VPLAYER INIT BEGIN
    Application package name: com.muhendis.vitamiotest4
04-29 22:06:51.390 7719-7719/com.muhendis.vitamiotest4 A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 7719 (is.vitamiotest4)

В настоящее время я пытаюсь использовать GStreamer, но его сложно собрать и настроить для Android. Итак, мой вопрос:

Каков наилучший способ для потоковой передачи и воспроизведения видео на устройствах Android Wear (2.0)?

Спасибо,

Фатих

РЕДАКТИРОВАТЬ

Просто, чтобы избежать путаницы, есть 2 разных приложения. Один из них с Витамио, другой с ExoPlayer. Витамио дает вышеуказанную ошибку. Exoplayer просто транслирует и воспроизводит аудио, но нет кадра для показа. Мои коды, как показано ниже:


Для витаминов:

MainActivity.class

public class MainActivity extends WearableActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Enables Always-on
    setAmbientEnabled();

    if (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this))
        return;
    //Vitamio.initialize(getApplicationContext());

    VideoView videoview = findViewById(R.id.vitamioVideo);
    Uri mp4VideoUri = Uri.parse("https://drive.google.com/uc?export=download&id=1lB7kSMKXjGS-goqNxSHJDIhTtnQbUxqv");
    videoview.setVideoURI(mp4VideoUri);

    videoview.start();
}

}


activity_main.xml

<android.support.wear.widget.BoxInsetLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_grey"
android:padding="@dimen/box_inset_layout_padding"
tools:context=".MainActivity"
tools:deviceIds="wear">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/inner_frame_layout_padding"
    app:boxedEdges="all">
    <io.vov.vitamio.widget.VideoView
        android:id="@+id/vitamioVideo"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>


Для ExoPlayer:

MainActivity.class

public class MainActivity extends WearableActivity {

SimpleExoPlayerView mExoPlayerView;
SimpleExoPlayer mExoPlayer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Enables Always-on
    setAmbientEnabled();

    mExoPlayerView = findViewById(R.id.mExoPlayer);

    createExoPlayer();
}

private void createExoPlayer()
{
    Context context = getApplicationContext();
    // 1. Create a default TrackSelector
    Handler mainHandler = new Handler();
    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory =
            new AdaptiveTrackSelection.Factory(bandwidthMeter);
    TrackSelector trackSelector =
            new DefaultTrackSelector(videoTrackSelectionFactory);

    // 2. Create the player
    mExoPlayer =
            ExoPlayerFactory.newSimpleInstance(getApplicationContext(), trackSelector);
    mExoPlayerView.setPlayer(mExoPlayer);

    // Measures bandwidth during playback. Can be null if not required.
    DefaultBandwidthMeter bandwidthMtr = new DefaultBandwidthMeter();
    Uri mp4VideoUri = Uri.parse("https://drive.google.com/uc?export=download&id=1TvPMgjkWxT1HUh7zOHLtOHjxpbUjm4yI");
    //Uri mp4VideoUri = Uri.parse(videoLink);

    // Produces DataSource instances through which media data is loaded.
    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,
            Util.getUserAgent(context, "Marmara Egzersiz"), bandwidthMtr);
    // This is the MediaSource representing the media to be played.
    MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
            .createMediaSource(mp4VideoUri);
    mExoPlayer.addListener(new Player.DefaultEventListener() {
        @Override
        public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
            super.onPlayerStateChanged(playWhenReady, playbackState);
            //Log.d(TAG,"PLAYER STATE CHANGED");
            //Log.d(TAG,"Playback state: "+playbackState);
        }

        @Override
        public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {
            super.onPlaybackParametersChanged(playbackParameters);
            //Log.d(TAG,"PLAYBACK PARAMETERS CHANGED");
        }

    });
    // Prepare the player with the source.
    mExoPlayer.prepare(videoSource);

}

}


activity_main.xml

<android.support.wear.widget.BoxInsetLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_grey"
android:padding="@dimen/box_inset_layout_padding"
tools:context=".MainActivity"
tools:deviceIds="wear">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/inner_frame_layout_padding"
    app:boxedEdges="all">

    <com.google.android.exoplayer2.ui.SimpleExoPlayerView
        android:id="@+id/mExoPlayer"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.google.android.exoplayer2.ui.SimpleExoPlayerView>

</FrameLayout>

0 ответов

Другие вопросы по тегам