ローカルに保存されたオーディオ ファイル (mp3 など) を RTP 経由で送信することはできますか? たとえば、入力として取得され、RTP パケットに変換/パックされ、ネットワーク経由で送信される mp3 ファイルがあります。ライブラリ、ソリューション、例はありますか?
ありがとう!
//編集: 私がやりたいことは、SIP で電話をかけ、ローカルに保存されたオーディオ ファイルを呼び出し先に送信/ストリーミングして、彼がそれを聞くことができるようにすることです。
Android APIでandroid.net.rtpを使用できます。
セクション 5 で考えられるWebRTC ソリューションを確認してください。多分Ondello APIを使用してください。
また
SIP/RTP 接続用のセッションを構築し、マイクの生ストリームを受信するバッファーまたはマイクの生ストリームがエンコードされる出力バッファーにバックドア (JNI およびネイティブ コード) を提供する必要があります。送信者側でRTPストリームを事前録音オーディオでロードできます。
そのバッファにアクセスすると、SIP セッションの途中で、オーディオ ファイルのメモリ内バージョンから Xcopy を実行して、そのストリームを SIP コールにスワップできます。通話の相手には、マイクのコンテンツではなく、オーディオ ファイルからのオーディオが聞こえます。
SIP/RTP API で成功しない場合は、この非常に優れた Java ネットワーキング ライブラリを確認して、SIP 接続をゼロから構築し、任意の方法でバッファを交換することもできます。
https://github.com/brunodecarvalho/efflux
このスレッドで私の答えを見てください
オプション 2、クライアント サーバー (ここでは JNI ネイティブ コードは必要ありません)
送信者からオーディオをアップロードし、サーバーから RTSP として受信者に提供します。Youtube のビデオはすべて、RTSP クライアント用にエンコードされていました (今でもそうかもしれません)。これは、サーバーから Android メディア プレーヤーへのシナリオとしてよく知られています。これは、そのようなファイルの SDP 記述とセッションのログだと思います...
D/chooseit( 6854): Session Descriptor
D/chooseit( 6854): v=0
D/chooseit( 6854): o=GoogleStreamer 1263099257 1890734730 IN IP4 74.125.213.247
D/chooseit( 6854): s=Video
D/chooseit( 6854): c=IN IP4 0.0.0.0
D/chooseit( 6854): b=AS:51
D/chooseit( 6854): t=0 0
D/chooseit( 6854): a=control:*
D/chooseit( 6854): a=range:npt=0-63.800000
D/chooseit( 6854): m=video 0 RTP/AVP 98
D/chooseit( 6854): b=AS:39
D/chooseit( 6854): a=rtpmap:98 H263-2000/90000
D/chooseit( 6854): a=control:trackID=0
D/chooseit( 6854): a=cliprect:0,0,144,176
D/chooseit( 6854): a=framesize:98 176-144
D/chooseit( 6854): a=fmtp:98 profile=0;level=10
D/chooseit( 6854): m=audio 0 RTP/AVP 99
D/chooseit( 6854): b=AS:12
D/chooseit( 6854): a=rtpmap:99 AMR/8000/1
D/chooseit( 6854): a=control:trackID=1
D/chooseit( 6854): a=fmtp:99 octet-align
D/chooseit( 6854): Got response:
D/chooseit( 6854): RTSP/1.0 200 OK
D/chooseit( 6854): Content-Type: application/sdp
D/chooseit( 6854): Cache-Control: must-revalidate
D/chooseit( 6854): Date: Wed, 28 Sep 2011 17:27:22 GMT
D/chooseit( 6854): Expires: Wed, 28 Sep 2011 17:27:22 GMT
D/chooseit( 6854): Last-Modified: Wed, 28 Sep 2011 17:27:22 GMT
D/chooseit( 6854): Content-Base: rtsp://v8.cache8.c.youtube.com/CigLENy73wIaHwlcw_gs85OUchMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp/
D/chooseit( 6854): CSeq: 0
D/chooseit( 6854): Server: Google RTSP 1.0
D/chooseit( 6854): Content-Length: 406
D/chooseit( 6854):
D/chooseit( 6854): for the request:
D/chooseit( 6854): DESCRIBE rtsp://v8.cache8.c.youtube.com/CigLENy73wIaHwlcw_gs85OUchMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp RTSP/1.0
D/chooseit( 6854): CSeq: 0
D/chooseit( 6854): Accept: application/sdp
D/chooseit( 6854): User-Agent: RTSPClientLib/Java
D/chooseit( 6854):
D/chooseit( 6854): Got response:
D/chooseit( 6854): RTSP/1.0 200 OK
D/chooseit( 6854): Session: 328393bf;timeout=90
D/chooseit( 6854): Transport: RTP/AVP;unicast;mode=play;client_port=49060-49061;server_port=10580-10581;source=74.125.213.247;ssrc=55922C32
D/chooseit( 6854): Cache-Control: must-revalidate
D/chooseit( 6854): Date: Wed, 28 Sep 2011 17:27:22 GMT
D/chooseit( 6854): Expires: Wed, 28 Sep 2011 17:27:22 GMT
D/chooseit( 6854): Last-Modified: Wed, 28 Sep 2011 17:27:22 GMT
D/chooseit( 6854): CSeq: 1
D/chooseit( 6854): Server: Google RTSP 1.0
D/chooseit( 6854):
D/chooseit( 6854): for the request:
D/chooseit( 6854): SETUP rtsp://v8.cache8.c.youtube.com/CigLENy73wIaHwlcw_gs85OUchMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp/trackID=1 RTSP/1.0
D/chooseit( 6854): CSeq: 1
D/chooseit( 6854): Transport: RTP/AVP;unicast;client_port=49060-49061
D/chooseit( 6854): User-Agent: RTSPClientLib/Java
D/chooseit( 6854):
D/chooseit( 6854): using client IP addr 192.168.1.125
D/chooseit( 6854): remote ssrc 1435642930
D/chooseit( 6854): raw parms 49060 10580 74.125.213.247
D/chooseit( 6854): session: 328393bf
D/chooseit( 6854): transport: client_port=49060-49061 server_port=10580-10581 source=74.125.213.247 ssrc=55922C32
D/chooseit( 6854): Got response:
D/chooseit( 6854): RTSP/1.0 200 OK
D/chooseit( 6854): Session: 328393bf;timeout=90
D/chooseit( 6854): Range: npt=0.000-63.800
D/chooseit( 6854): RTP-Info: url=rtsp://v8.cache8.c.youtube.com/CigLENy73wIaHwlcw_gs85OUchMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp/trackID=1;seq=9498;rtpt
ime=958652148
D/chooseit( 6854): CSeq: 2
D/chooseit( 6854): Server: Google RTSP 1.0
D/chooseit( 6854):
D/chooseit( 6854): for the request:
D/chooseit( 6854): PLAY rtsp://v8.cache8.c.youtube.com/CigLENy73wIaHwlcw_gs85OUchMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp RTSP/1.0
D/chooseit( 6854): CSeq: 2
D/chooseit( 6854): Session: 328393bf;timeout=90
D/chooseit( 6854): Range: npt=0.000-
D/chooseit( 6854): User-Agent: RTSPClientLib/Java