Не удается открыть поток с IP-камеры с помощью Vitamio

Я использую Vitamio 5.0.2 и пытаюсь открыть поток с IP-камеры. Это работало на VLC Player, но не в моем приложении.

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

Это Android Manifest от Vitamio, я добавил все необходимые разрешения, которые нашел при поиске ответа:

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="io.vov.vitamio"
      android:versionCode="400"
      android:versionName="5.2">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application>
    <activity
            android:name="io.vov.vitamio.activity.InitActivity"
            android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.NoTitleBar"
            android:windowSoftInputMode="stateAlwaysHidden"/>
</application>

Это схема моей деятельности, внутри которой я пытаюсь открыть поток:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:gravity="center"
android:orientation="vertical">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <io.vov.vitamio.widget.VideoView
        android:id="@+id/videoView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />

    <ProgressBar
        android:id="@+id/progressBarCam"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="gone" />

</FrameLayout>

И это настройка внутри действия:

  @Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Vitamio.isInitialized(getApplicationContext());

    setContentView(R.layout.test_camera_activity);
    videoView = (VideoView) findViewById(R.id.videoView);
    progressBar = (ProgressBar) findViewById(R.id.progressBarCam);
    videoView.setOnPreparedListener(this);
    videoView.setOnErrorListener(this);
    videoView.setOnInfoListener(this);
}


 private void initPlayer() {

    try {
        switch (streamingType) {
            case HIGH_STREAM:
                mediaURL = camera.getHiQualityStream();
                break;
            case LOW_STREAM:
                mediaURL = camera.getLowQualityStream();
                break;
            default:
                exitError();
                break;
        }
    } catch (Exception e) {
        Log.d("STREAM_URL", "Failed to get media url");
    }

    if (mediaURL == null) {
        exitError();
        return;
    }

    videoView.setBufferSize(2048);

    HashMap<String, String> options = new HashMap<>();
    options.put("rtsp_transport", "tcp");
    options.put("headers", "User-Agent: myUserAgent\r\n");
    videoView.setVideoURI(Uri.parse(mediaURL), options);

    videoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);
    videoView.getHolder().setFormat(PixelFormat.RGBX_8888);
    videoView.setVideoChroma(MediaPlayer.VIDEOCHROMA_RGB565);
    videoView.start();
    videoView.requestFocus();
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(new MediaController(this));

    mediaController.setOnSnapShotListner(new MediaController.OnSnapShotListner() {
        @Override
        public void snapShot() {
            if (camera != null) {
                takeSnapshot();
            }
        }
    });

    mediaController.setOnExitListner(new MediaController.OnExitListner() {
        @Override
        public void onExit() {
            finish();
        }
    });

    if (camera.getName() == null) {
        mediaController.setFileName("");
    } else {
        mediaController.setFileName(camera.getName());
    }
}

Я попытался отладить его, но я просто не могу найти причину, по которой он не работает. Внутри класса MediaPlayer.java в методе handleMessage первое полученное сообщение: MEDIA_ERROR, MEDIA_PREPARED и MEDIA_INFO никогда не вызываются... Есть идеи?

0 ответов

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