android rtsp直播-“无法播放此视频”

上汉
public class MainActivity extends Activity
{
    VideoView vv;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vv = (VideoView)findViewById(R.id.videoView);

        Uri uri;
        uri=Uri.parse("rtsp://user:[email protected]:554/cam/realmonitor?channel=1&subtype=1");
        vv.setVideoURI(uri);
        vv.start();
    }
}

我正在使用上面的代码,试图播放我的IP实时摄像机流。在VLC播放器中使用时,使用的URI可以工作。我在清单中也设置了Internet权限。但是,当我在模拟器或实时设备上运行该应用程序时,出现“无法播放此视频”错误。

在logcat中弹出的错误是:

08-31 09:21:15.602 2487-2487/package D/MediaPlayer: Couldn't open file on client side, trying server side
08-31 09:21:15.612 2487-2503/package W/MediaPlayer: info/warning (701, 0)
08-31 09:21:15.666 2487-2502/package E/MediaPlayer: error (1, -2147483648)
08-31 09:21:15.725 2487-2487/package E/MediaPlayer: Error (1,-2147483648)
08-31 09:21:15.725 2487-2487/package D/VideoView: Error: 1,-2147483648

我也尝试过使用媒体播放器进行设置:

public class MainActivity extends Activity implements MediaPlayer.OnPreparedListener, SurfaceHolder.Callback
{
    final static String USERNAME = "user";
    final static String PASSWORD = "pass";
    final static String RTSP_URL = "rtsp://192.168.x.x:554/cam/realmonitor?channel=1&subtype=00";

    private MediaPlayer _mediaPlayer;
    private SurfaceHolder _surfaceHolder;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        Window window = getWindow();
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        window.setBackgroundDrawableResource(android.R.color.black);
        setContentView(R.layout.activity_main);
        SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
        _surfaceHolder = surfaceView.getHolder();
        _surfaceHolder.addCallback(this);
        _surfaceHolder.setFixedSize(320, 240);
    }
    @Override
    public void surfaceChanged(SurfaceHolder sh, int f, int w, int h) {}
    @Override
    public void surfaceCreated(SurfaceHolder sh) {
        _mediaPlayer = new MediaPlayer();
        _mediaPlayer.setDisplay(_surfaceHolder);
        Context context = getApplicationContext();
        Map<String, String> headers = getRtspHeaders();
        Uri source = Uri.parse(RTSP_URL);
        try {
            _mediaPlayer.setDataSource(context, source, headers);
            _mediaPlayer.setOnPreparedListener(this);
            _mediaPlayer.prepareAsync();
        }
        catch (Exception e) {}
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder sh) {
        _mediaPlayer.release();
    }
    private Map<String, String> getRtspHeaders() {
        Map<String, String> headers = new HashMap<String, String>();
        String basicAuthValue = getBasicAuthValue(USERNAME, PASSWORD);
        headers.put("Authorization", basicAuthValue);
        return headers;
    }
    private String getBasicAuthValue(String usr, String pwd) {
        String credentials = usr + ":" + pwd;
        int flags = Base64.URL_SAFE | Base64.NO_WRAP;
        byte[] bytes = credentials.getBytes();
        return "Basic " + Base64.encodeToString(bytes, flags);
    }
    @Override
    public void onPrepared(MediaPlayer mp) {
        _mediaPlayer.start();
    }
}

上面的代码是从这里获取的,但是它们都不起作用。我也尝试了Vitamio库,但没有结果。我似乎没有做任何事情。

我在某处缺少任何小细节吗?我假设URI很好,因为它可以在VLC播放器中正常工作。在某个时候,仿真器还提供了“ java.io.FileNotFoundException:无内容提供程序”,但不再提供。

有一次,我以为身份验证可能是一个问题,因此我使用VLC在没有用户/通过的情况下流式传输了IP摄像机,并尝试进行连接,但这都不起作用,因此我假设它已成功验证。

我也尝试过将网址输入为“ rtsp:// user:[email protected]:554 /”,该网址也可以在VLC播放器中使用。但不在我的应用程序中。

我尝试了所有我能找到的,但没有成功。如果有人能够提供帮助,将不胜感激!

编辑1:VideoView能够与vitamio和mediaplayer一样成功播放预先录制的剪辑,例如“ rtsp://mpv.cdn3.bigCDN.com:554 / bigCDN / definst / mp4:bigbuckbunnyiphone_400.mp4”。

沙申克·乌杜帕(Shashank Udupa)

您正在尝试播放中的视频VideoView不幸的是,VideoView不支持尝试使用RTSP协议播放的视频。

您可以使用称为Vitamino的库来使用RTSP播放视频。您可以在这里查看他们的演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Android下级设备中播放rtsp直播?

来自分类Dev

如何在Android中使用RTSP链接直播视频?

来自分类Dev

如何在Android中使用RTSP链接直播视频?

来自分类Dev

Android RTSP直播流问题

来自分类Dev

无法从sdcard播放此视频android

来自分类Dev

android:无法播放视频

来自分类Dev

无法播放此视频。Android设备录制的Android videoView mp4

来自分类Dev

videoView Android无法播放视频

来自分类Dev

videoView Android无法播放视频

来自分类Dev

在Android中播放RTSP链接

来自分类Dev

Android + Wowza + RTSP。播放良好,但无法控制MediaController

来自分类Dev

Android + Wowza + RTSP。播放良好,但无法控制MediaController

来自分类Dev

无法播放此视频

来自分类Dev

Android:Vimeo视频无法在Webview中播放

来自分类Dev

无法在Android LsitView中播放视频

来自分类Dev

无法使用Intent Android播放视频

来自分类Dev

哪个是使用目标 sdk 26 在 Android 应用程序上播放 RTSP 视频的最佳 API?

来自分类Dev

Android 获得直播电视频道的许可

来自分类Dev

无法播放此视频VideoView

来自分类Dev

无法播放此视频VideoView

来自分类Dev

VideoView“无法播放此视频”

来自分类Dev

Android YouTube API无法按预期播放视频

来自分类Dev

无法使YouTube视频与Android Studio一起播放

来自分类Dev

无法使用Java在Android Studio中播放原始视频

来自分类Dev

无法将YouTube视频与Android Studio一起播放

来自分类Dev

Android无法播放给定网址中的视频文件

来自分类Dev

无法在Android VideoView中播放.3gp视频

来自分类Dev

从xml播放视频:Android

来自分类Dev

Youtube视频一直播放直到应用关闭