코덱을 쓰지 않고서,,
글쓴이: 호호아가씨 / 작성시간: 목, 2005/01/20 - 3:53오후
질문처럼 코덱을 쓰지 않고
인코더와 디코더를 하고 싶어서 그러는데요,,
임베디드 장비에서 음성화상채팅 프로그램을 돌려야 하는뎅,,
여기 저기 알아보고 질문을 올려도 그다지 진도에 진척이 없네요,,
소스라도 분석할수 있을까 싶어서요,,
제가 대강 찾은 자료로는 G.723이라는 압축 기술이 있는걸로 아는데요,,
그럼 이 기술로 알고리즘을 구현 할수 있는거 아닌가요??
또 RTP와RTCP라는 전송기술이 있는거 같던데,,
보통 RTP를 쓴다고 하는거 같더라구요,,
이렇게 자료를 찾아도 도통 어떻게 시작을 해야 하는지 감이 잡히지 않아서 말입니다.
소스를 구하고 거기에 매달려 볼까 싶어서요,,
음성 부분에 고수님들 좀 도와주십쇼~
정만 너무 난감해서,,몇번 글도 올렸지만..
여전히 답답 ^^;;
그럼 추운데 감기 조심하십시요~
명쾌한 답변 기다리고 있겠습니다`
Forums:
코덱을 쓰지 않고라는 말이 좀 이상하네요코덱은 coder/decode
코덱을 쓰지 않고라는 말이 좀 이상하네요
코덱은 coder/decoder 를 말하는건데 G.723을 쓴다는것 자체가
코덱을 쓴다는 말이 되는건데요
그렇지 않다면 일반적으로 만들어져서 돌아다니는 코덱을 안쓰겠다는 의미인지?
참고로. 음성쪽 코덱은
오디오와 보이스로 나뉘어 집니다.
오디오는 AAC 같은걸 들 수 있고요
보이스는 EVRC, AMR, G.723(오디오인지 잘 기억이..)등의 방법이 있습니다.
그중에 골라서 사용하시면 되는데.. 인코더와 디코더를 그냥 만드는건 음...
제가 플레이어 쪽이 아니어서 어떤 식으로 디코딩을 하는지는 잘 모르겠습니다.
저는 스트리밍서버 쪽이거던요.
뒤부분에 말씀하신 RTP/RTCP가 제 전문 분야 입니다.
화상 채팅도 스트리밍과 비슷하다고 할 수 있으니
SDP(RFC 2327) , RTSP(RFC 2326), RTP/RTCP(RFC 1889, 3550)의 프로토콜을 사용해야 하지 않을까 싶군요
www.ietf.org에서 찾아 보시면 잘 나와있습니다.(너무 무책임한것같은..)
RTCP는 RTP의 control protocol입니다. 따라서, RTCP 사용하고 RTP는
사용하지 않는다.. 이런건 좀 아니고요
몰론 control은 하지 않겟다면 RTP 부분만 구현하면 되긴 하지여..
(그럼 장애 상황에 상당히 취약해 질 겁니다.)
G.723도 코덱입니다. ADPCM 코덱이죠. :)네트워크를 통해
G.723도 코덱입니다. ADPCM 코덱이죠. :)
네트워크를 통해서 정보가 이동되지만 결국은 독립 장비에서도 녹음 / 재생 (encoding / decoding) 이 되어야 합니다. :)
G.723 코덱 소스를 가지고 계시다니 그걸 이용해서 녹음을 하고 재생을하는 프로그램을 만들어 보셔야 하겠네요. 네트워크와 관계 없이...
그 다음에 네트워크에 연결하여 녹음된 데이터를 보내고 받은 데이터를 재생하는 형태로 프로그램을 진행하시는 것이 맞을 것 같습니다. 이때 중요한 것은 시간 정보가 녹음된 데이터와 같이 전송되어야 겠죠? 그 부분은 프로토콜을 만드셔야 할 것으로 보이네요.
근데 네트워크 대역을 얼마나 사용할 수 있는 지는 모르겠군요. 전송량을 줄요야 한다면 즉 대역이 굉장히 중요하다면 압축률이 좋은 코덱을 쓰셔야 할 겁니다. 당연하지만...
화상에 대해서도 비슷한 방식으로 진행해야 되겠지요. :)
g723을 사용한다면 아마 소스코드가 있을텐데요 일단 간단하게 테스트 할
g723을 사용한다면 아마 소스코드가 있을텐데요 일단 간단하게 테스트 할 수 있는 방법은 pcm wav 파일을 입력해보고 출력으로 g723wav 파일을 내보내봐서 들어보면 됩니다. 음질을 알 수 있죠.
전 임베디드 장비에서 잠시 해봤었는데 g723은 아마 패킷단위가 아니라 그냥 PCM 스트림을 2bit, 4bit등으로 압축하는 것 아닌가요? 그냥 데이터만 왜곡되지 않게 인코딩된 스트림으로 쏴주고 받는 단에서 디코딩한 스트림을 PCM 출력하면 될 것 같습니다.
rommance.net
[quote="송지석"]그냥 데이터만 왜곡되지 않게 인코딩된 스트림으로
이렇게 하면 데이터량이 굉장히 많아지죠.
예를들어 8kHz로 16비트 모노 샘플링하게되면 데이터량이 ...
8000 x ( 16 / 8 ) = 16000
즉 초당 약 16kB 정도의 PCM 데이터가 생깁니다. 이 정도 전송하는 데에 아무 지장이 없을 것 같으면 그냥 PCM으로 보내줘도 됩니다.
그런데 G.723 코덱을 쓰면 각 16 비트 데이터를 4비트 정도로 만들 수 있습니다. 그러면 전송해야할 데이터량이 1/4이 되는 것이죠.
그리고 양방향 통신을 해야하고 영상 데이터까지 생각한다면 당연히 데이터량을 줄여야 하지 않을까요?
전체적으로는 오디오 코덱을 쓸 것인지 말 것인지는 네트워크 자원을 쓸 수 있는 한계가 어느 정도인지가 중요하겠죠. 뭐... 위와 같은 방법으로 대충 계산해보시고 원하는 정도의 품질 수준을 정하셔야 할 것 같습니다.
처음 질문하신분의 의도는 하드웨어 코덱(칩)을 쓰지 않고소프트웨어로만
처음 질문하신분의 의도는 하드웨어 코덱(칩)을 쓰지 않고
소프트웨어로만 구현하시겠다는 뜻이 아닌가 싶네요.
--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)
vovida.org에 들어가셔서 도움을 받으시면 될거 같네요.근데 어
vovida.org에 들어가셔서 도움을 받으시면 될거 같네요.
근데 어차피 오픈 소스들이고 작업하시는게 임베디드 환경이라면 이것저것 포팅하는데 많은 시간이 걸립겁니다.
일단, 전송계층은 UDP기반의 RTP/RTCP를 사용하시면 되구요.
말씀하신 의도가 하드웨어에서 코덱칩을 따로 달지 않고 소프트웨어적으로 음성압축을 하실 의도인거 같은데, G.723은 라이센스 문제가 있기 때문에, vovida.org에서 Open G.729나 Open AMR을 사용하시면 됩니다. 만일, voip기능으로 사용하실 의도라면, G.711이나 G.729를 사용하시고, G.711은 반드시 지원을 해야 합니다.
참, 그리고 화상까지 지원하실려면, H.261이나 H.263을 사용하시면 됩니다. 음성보다는 많이 까다로울 겁니다.^^
speex로 인터넷 검색해보시고 wiki.xiph.org에서 speex
speex로 인터넷 검색해보시고 wiki.xiph.org에서 speex over rtp를 찾아보세요.
이제보니 다음 글 올리셨던 분이시네요..http://bbs.kld
이제보니 다음 글 올리셨던 분이시네요..
http://bbs.kldp.org/viewtopic.php?t=50002
[quote="neTdiVeR1diX2"]처음 질문하신분의 의도는 하드웨
그런것 같습니다.
코덱안쓰고 코덱을 만들고 싶으신듯... . :roll:
[quote="Anonymous"][quote="송지석"]그냥 데이터만
죄송한데 무슨 말씀 하시는 것인지 혼동되는군요
제 말은 G723으로 인코딩된 스트림을 보내고 받는 단에서 디코딩 하라는 뜻인데 제 말을 제대로 이해하시고 쓰신건가요?
rommance.net
댓글 달기