2015-01-20 8 views
0

내 응용 프로그램이 멀티 캐스트 그룹에서 오디오 스트리밍 응용 프로그램을 사용하는 것이 었습니다. 그것의 라디오와 같은 푸시처럼. 누군가가 버튼을 누르면 오디오가 전송됩니다. 스트리밍 오디오에 gstreamer를 사용하고 있습니다. 누군가가 현재 말하고 있는지 알 수있는 방법이 있습니까?gstreamer가 패킷을 수신하는지 여부에 대한 정보 얻기

누군가가 버튼을 눌러 말할 때 나는 이미 다른 사람이 말하고 있다는 것을 알 필요가있다.

알고 계신 gstreamer API가 있습니까? 아는 다른 방법이 있습니까?

편집 : 내 질문을 잘 이해하기 위해 유스 케이스에 대해 설명합니다.

멀티 캐스트 그룹에는 4 명의 USERS가 있다고 생각해보십시오.

  • USER1는 PTT 버튼을 누를와 하나가 USER2 내가 USER1이 (이어야 다른 사람이 말하는 것을) 이야기 이미 입니다 USER2을 알릴 필요 PTT 버튼을 누를 말한다면이 때
  • 이야기를 시작합니다.
  • 또한 USER2에게 USER2가 PTT 버튼을 눌렀 음을 알릴 필요가 있습니다.

다른 사람이 멀티 캐스트 그룹에 스트리밍 또는 여부를 내가이 정보

1)을 얻을 수있는 gstreamer를 어떤 API가 있습니까?

2) 스트리밍 사용자 정보를 검색 하시겠습니까?

답변

2

GStreamer에는 다른 사람이 방송 중인지에 대한 예/아니오 응답을 제공하는 기능이 없습니다. 그러나 gstreamer가 udp 패킷을 얻을 때마다 응용 프로그램에 알릴 수 있습니다. 당신은 당신이하려는 것을 위해이 정보를 사용할 수있을 것입니다.

먼저 udpsrc 다음에 티를 놓고 티에 가짜 칩을 연결하십시오. 그런 다음 신호 처리기를 가짜 싱크의 핸드 오프 신호에 첨부하고 signal-handoffs 속성을 true로 설정합니다.

이 접근법의 문제점은 다른 사람이 전송하지 않는다는 것을 여전히 보장하지 않는다는 것입니다. 어쩔 수없이 거대한 마시 멜로 StayPuff 혼란으로 당신을 떠나고있는 어떤 점에서 당신은 횡단하고있는 시내를 끝내게 될 것이다.

내 권장 사항은 udpsrc 및 udpsink를 사용하지 않는 것입니다. 그것들은 유익한 것은 아니지만 가장 간단한 사용 사례입니다.

대신 각 패킷의 작은 헤더와 함께 멀티 캐스트 패킷을 보내고받는 사람을 말합니다. 패킷을 받으면 헤더를 제거하고 appsrc를 사용하여 스트림을 오디오 플레이어로 푸시합니다.

gstreamer를 위에서 아래까지 계속 사용하려면 udpsink로 이동하기 전에 사용자 정보를 패킷에 추가하는 사용자 지정 멀티플렉서와 ​​단일 스트림을 선택할 수있는 사용자 정의 디멀티어를 만들어야합니다 한 명 이상의 사람이 동시에 이야기하는 경우.

사용자 지정 요소를 만들 수는 있지만 이전에 glibgobjects로 작업 한 적이 없다면 많은 문제가 될 수 있습니다.

0

대신 gstreamer를 사용하여 알림을 보내면 버튼 누름 개수를 사용하여 대화 중 또는 아닌지 확인하십시오.

희망이 있습니다.

관련 문제