마스터Q&A
접속유지
가입하기
안드로이드 Q&A
최근 질문
미답변 질문
태그
사용자
질문하기
마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다.
안드로이드펍
에서 운영하고 있습니다. [
사용법
,
운영진
]
인기있는 태그
초보어플개발
(3427)
안드로이드스튜디오
(2664)
안드로이드-초보어플개발
(1333)
안드로이드-스튜디오
(1086)
도와주세요-
(995)
이미지
(970)
listview
(866)
리스트뷰
(844)
오류
(805)
레이아웃
(693)
fragment
(675)
webview
(670)
RTSP 스트리밍 소리 문제.
0
추천
안녕하세요.
RTSP로 영상을 스트리밍 하는것은 되나, 소리가 출력되지 않는 문제가 발생하였습니다.
AudioManager로 시도를 해보았으나 안되서 AudioStream을 써야 하는지
아니면 다른 문제가 있는 것인지 알고 싶습니다.
rtsp
스트리밍
streaming
안드로이드
안드로이드-소리
월희
(
270
포인트)
님이
2015년 10월 16일
질문
Please
log in
or
register
to add a comment.
답변 달기
·
글에 소스 코드 보기 좋게 넣는 법
·
질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
답변이 채택되거나 답변에 댓글이 달리면 이메일로 알려드립니다:
답변이 채택되거나 댓글이 달리면 이메일로 알려드립니다
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면
로그인
하거나 혹은
가입
하세요.
1개의 답변
0
추천
채택된 답변
오디오 코덱이 AAC, AMR, G711라면 나와야 할텐데. 어떤 형식인가요? mp3, PCM L16BE 같은 건 지원 안됩니다.
지원하는 코덱인데도 안나온다면,
sdp 값을 파싱 못 하는 부분이 있을 수도 있을 듯 합니다.
DESCRIBE 응답 값을 올려 주시면 확인 해 드리겠습니다.
익명사용자
님이
2015년 10월 16일
답변
월희
님이
2015년 10월 16일
채택됨
일단 제가 초보여서 describe 응답 값이라는게 어떤 의미인지 잘 몰라서,
소스 코드 올려볼게요. 일단...
public class MainActivity extends Activity implements MediaPlayer.OnPreparedListener,
SurfaceHolder.Callback {
final static String USERNAME = "admin";
final static String PASSWORD = "glffhdi";
//final static String URLstring = "rtsp://192.168.0.31:554/stream.sdp";
private MediaPlayer _mediaPlayer;
private SurfaceHolder _surfaceHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Set up a full-screen black window.
/* 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);
// Configure the view that renders live video.
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://admin:glffhdi@192.168.0.31:554/stream.sdp");
try {
// Specify the IP camera's URL and auth headers.
_mediaPlayer.setDataSource(context, source, null);
// Begin the process of setting up a video stream.
_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) {
mp.start();
}
}
이렇게 코딩 했구요
피씨에서 rtsp로 VLC 플레이어 돌리면 영상이랑 음성 둘 다 잘나옵니다.
근데 문제는 안드로이드에서 영상은 나오는데 음성이 안나오는걸로 봐선
제가 설정을 안해줬거나 코덱이 안맞아서 그런거 같습니다.
코드상 큰 이상이 없는 듯 합니다. DESCRIBE 시 내려오는 값이 sdp 정보인데,
사용하신 경우에는 sdp를 직접 받아 재생을 수행한 듯 합니다.
stream.sdp 파일의 정보를 적어 주시면 추가 분석 해 드리겠습니다.
VLC 플레이어로 본 stream.sdp의 정보 알려드립니다.
스트림0
형식: 비디오
코덱: H264 - MPEG-4 AVC (part 10) (h264)
해상도: 1280x738
화면 해상도:1280x720
디코딩된 형식: Planar 4:2:0 YUV full scale
스트림1
형식:오디오
코덱:PCM ALAW (alaw)
채널 : 모노
샘플 레이트 : 8000hz
샘플당 비트: 16
이상입니당
죄송합니다. 제가 착각 했습니다. PCM ALAW 가 G711_ALAW 형식이네요.. 안드로이드에서 지원하는 오디오 형식인데.. 재생이 안된다니 이상하네요.. 재생 시 로그를 올려 주시면 확인 해 보겠습니다.
Please
log in
or
register
to add a comment.
...