我可以未经授权就从ip摄像机流式传输视频,但是现在我需要经过授权才能这样做.我发现很少的信息表明Android不支持通过RTSP进行身份验证,但是我发现了另一个信息,该信息表明在API级别14中可以通过使用以下方法添加HEADERS:setDataSource (Context context, Uri uri, Map headers).我的代码如下:
@Override
public void surfaceCreated(SurfaceHolder holder){
String authHeader = getB64Auth("user","password");
Map headers = new HashMap();
headers.put("Authorization", authHeader);
Uri srcUri = Uri.parse("rtsp://10.0.0.113:554/channel1");
try{
m.setDisplay(h);
m.setDataSource (getApplicationContext(), srcUri,headers);
m.prepare();
m.setAudioStreamType(AudioManager.STREAM_MUSIC);
m.start();
}catch(Exception e){
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
m.release();
}
private String getB64Auth (String login, String pass) {
String source=login+":"+pass;
String ret="Basic "+Base64.encodeToString(source.getBytes(),Base64.URL_SAFE|Base64.NO_WRAP);
Log.e("Authorization",ret);
return ret;
}
但这是行不通的,我找不到问题所在.有人对这种流媒体有任何经验吗?还是我只是误解了MediaPlayer类的新方法的效果?