두 개의 Linux 머신간에 실시간 오디오를 이동해야합니다. 둘 다 Gstreamer 위에 구축 된 사용자 정의 소프트웨어 (광산)를 실행하고 있습니다. (이 소프트웨어는 이미 별도의 TCP 기반 프로토콜을 통해 다른 컴퓨터간에 통신하고 있습니다. 신뢰할 수있는 대역 외 데이터를 사용하면 솔루션에 차이가 있습니다.GStreamer를 사용하여 로컬 네트워크를 통해 오디오 이동
오디오 입력은 송신기의 마이크/라인 입력이되고 대상의 싱크대는 일반 오디오 출력이됩니다. alsasrc와 alsasink가 가장 가능성이 높습니다. 테스트를 위해 실제 마이크 대신 audiotestsrc를 사용하고 있습니다.
GStreamer는 RTP, RTSP, GDP 페이로드, UDP 및 TCP 서버, 클라이언트 및 소켓 등 네트워크를 통해 데이터를 이동하는 다양한 방법을 제공합니다. 웹에는 오디오와 비디오 모두를 스트리밍하는 많은 예가 있지만 실제로는 그 중 아무 것도 실제로는 작동하지 않습니다. 대상 파이프 라인에서 대문자 협상에 실패하거나 단일 패킷을 듣고 파이프 라인이 정지되거나 사용 가능한 데이터가 없으면 대상 파이프 라인이 즉시 중단됩니다.
모든 경우에 gst-launch 만 명령 줄에서 테스트하고 있습니다. 오디오 데이터의 압축은 필요하지 않습니다. 원시 오디오 또는 사소한 WAV, uLaw 또는 aLaw 인코딩은 정상입니다. 더 중요한 것은 낮은 대기 시간입니다.
오류를 생성 할뿐만 아니라, 어떠한 출력을 생성하지 않고 파이프 라인의 예를; 대상 파이프 라인이 PLAYING 상태가되지만 소리가 들리지 않습니다. 소스 파이프 라인 : gst-launch-0.10 audiotestsrc! audioconvert! rtpL16pay! udpsink port = 5005 host = localhost 대상 파이프 라인 : gst-launch-0.10 udpsrc port = 5005! rtpL16depay! alsasink –