Wi-Fi 음성 전송을 제어하는 ​​방법은 무엇입니까? (gstreamer)

Wi-Fi 음성 전송을 제어하는 ​​방법은 무엇입니까? (gstreamer)

Wi-Fi를 통해 전화 통신 전송을 구축하려고 합니다. 내가 하려는 작업은 프로그래밍 가능한 Wi-Fi 헤드셋(실제로는 존재하지 않으며 실제로는 Linux 컴퓨터입니다)을 Wi-Fi이기도 한 휴대폰에 연결하는 것입니다. 활성화되었습니다.(이 역시 존재하지 않으며 Linux 컴퓨터이기도 합니다.) 이는 블루투스 페어링 장치와 페어링된 휴대폰이 있고 전화를 받았을 때 헤드셋 자체를 사용하여 통화 설정 및 중단을 제어할 수 있는 경우와 같습니다. 차이점은 블루투스 대신 Wi-Fi를 사용하고 싶다는 것입니다. 그래서 지금까지 내가 한 일은 IP(예: 로컬 무선 네트워크의 VoIP)를 통해 스테레오 음성 신호를 보낼 수 있는 미디어 스트림을 Gstreamer에 구현하는 것입니다. 발신자 파이프라인은 다음과 같습니다.

gst-launch -v  alsasrc ! audioconvert ! audio/x-raw-int,
channels=2,depth=16,width=16,rate=44100 ! rtpL16pay ! udpsink 
host=192.168.178.110 port=5000  //sender

그리고 수신 측에서는 UDP 포트에서 수신하여 음성 신호를 수신하고 디코딩을 수행하여 재생하기 위해 다음을 수행했습니다.

    gst-launch udpsrc port=5000 ! "application/x-rtp,media=(string)audio,
    clock-rate=(int)44100, encoding-name=(string)L16, 
    channels=(int)2, payload=(int)96" ! rtpL16depay !
    audioconvert ! alsasink    //receiver

각 끝에서 두 스트림을 수동으로 실행하면 스테레오 신호를 수신하고 각 Linux 컴퓨터의 별도 터미널에서 실행되도록 두 파이프라인을 교환함으로써 두 Linux 컴퓨터 간에 실시간 음성을 사용할 수 있습니다.

문제는 양방향 연결을 설정하기 위해 각 Linux에서 수동으로 파이프라인을 실행해야 한다는 것입니다. 우리 모두가 Bluetooth 페어링에서 알고 있듯이 페어링 후에는 사용자가 휴대폰을 연결하기 위해 추가 단계를 수동으로 수행할 필요가 없습니다. 헤드셋과 함께. 각 끝에서 보내기/받기 프로세스를 초기화하는 일부 유형의 신호가 사용됩니다. 즉, 휴대폰에서 벨소리가 울리면 휴대폰에서 전화가 걸려오고 있다는 사실이 헤드셋에 통보됩니다.

이제 내 질문은 Linux 컴퓨터 중 하나에서 다른 컴퓨터로 호출을 설정하려고 할 때 지정된 문자(예: xxx.xxx. xxx.xxx IP 및 xxxx 포트 번호)이 연결을 시도하고 있으며, 반대쪽 끝을 확인한 후 위에서 언급한 파이프라인이 오디오 스트리밍을 양방향으로 시작하고 한쪽 끝에서 끊기면 대화가 종료됩니다.

관련 정보