0

我正在尝试从服务器获取 mjpeg 实时视频流到 android。我读了这个答案。它对我很有帮助。它适用于这个演示 url。但是,在我的视频流中它要求输入用户名和密码。

将 url 设置为 MjpegView:

 setContentView(mv);        
 mv.setSource(MjpegInputStream.read(URL));

Mjpeg输入流:

public static MjpegInputStream read(String url) {
    HttpResponse res;
    DefaultHttpClient httpclient = new DefaultHttpClient();     

   
    try {
        res = httpclient.execute(new HttpGet(URI.create(url)));
        return new MjpegInputStream(res.getEntity().getContent());              
    } catch (ClientProtocolException e) {
    } catch (IOException e) {}
    return null;
}

每当我打开我的服务器链接时,就像在网络浏览器中一样。它要求输入“密码”和“用户名”。那么在这个 read() 中将参数放在哪里?并且还想知道我的直播视频是否为 H.264 格式。那我怎样才能把它转换成MJPEG 格式呢?而且它的速度很慢而且不流畅。如何改进它?

提前致谢!!

4

2 回答 2

1

由于网络摄像头受密码保护,系统会提示您登录。通常对于网络摄像头,您必须将用户名和密码作为 URL 的一部分传递。例如。username:password@ip.address.or.dyndns.com:8085/folder/stream.jpg?size=large 末尾的数字是端口号。

于 2013-09-04T06:44:37.227 回答
0

这是一个时间......但要登录:

DefaultHttpClient httpclient = new DefaultHttpClient();
    try {

        HttpGet httpget2 = new HttpGet(url);
        httpget2.addHeader("Authorization","Basic " + Base64.encodeToString((USERSTRING:PASSWORDSTRING).getBytes(),Base64.DEFAULT));
        res = httpclient.execute(httpget2);
        return new MjpegInputStream(res.getEntity().getContent());

    } catch (ClientProtocolException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();
    }
于 2013-12-12T15:35:35.083 回答