[Live-devel] RTPSink for a PCM audio subsession

Maxim P. DEMENTIEV maxim.dementiev at nexvision.fr
Tue Aug 4 05:56:51 PDT 2015


Thank you very much, it has worked out.

[rtsp @ 0x7f35f00008c0] SDP:aq=    0KB vq=    0KB sq=    0B f=0/0  
v=0
o=- 137163047 1 IN IP4 0.0.0.0
s=Live session, streamed by LIVE555
i=live?token=1080p_noaudio
t=0 0
a=tool:LIVE555 Streaming Media v2015.07.23
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:Live session, streamed by LIVE555
a=x-qt-text-inf:live?token=1080p_noaudio
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:0
a=rtpmap:96 H264/90000
a=fmtp:96
packetization-mode=1;profile-level-id=640028;sprop-parameter-sets=Z2QAKK2EBUViuKxUdCAqKxXFYqOhAVFYrisVHQgKisVxWKjoQFRWK4rFR0ICorFcVio6ECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZprQDwBE/Kg==,aO48sA==
a=control:track1
m=audio 0 RTP/AVP 97
c=IN IP4 0.0.0.0
b=AS:0
a=rtpmap:97 L16/16000
a=control:track2

Input #0, rtsp, from 'rtsp://192.168.55.2:554/live?token=1080p_noaudio':
  Metadata:
    title           : Live session, streamed by LIVE555
    comment         : live?token=1080p_noaudio
  Duration: N/A, start: 0.002375, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuv420p, 1920x1080 (1920x1088), 25
tbr, 90k tbn, 180k tbc
    Stream #0:1: Audio: pcm_s16be, 16000 Hz, 1 channels, s16, 256 kb/s

And yes, I've used htons() on the PCM buffer, thanks again.

Best regards,
Max

On 07/29/2015 11:05 PM, Ross Finlayson wrote:
>> We need to broadcast the PCM (S16LE/16000) audio as a separate channel
>> with our RTSP-server.
> […]
>> What is a preferred RTPSink class that I should use for this audio
>> format in our OnDemandServerMediaSubsession?
>
> You should use a “SimpleRTPSink” - specifically:
>     SimpleRTPSink::createNew(envir(), rtpGroupsock,
>                                     rtpPayloadTypeIfDynamic, 16000,
>                                     "audio", “L16", numChannels);
> where “numChannels” is 1 for mono, and 2 for stereo.
>
> Note, however, that because your input source is in ‘little-endian’
> form (I presume that’s what the “LE” stands for), you will need to
> byte-swap it before you feed it into your “SimpleRTPSink” (because the
> IETF standard RTP payload format for the “audio/L16” type specifies
> that the data be packed into RTP packets in big-endian form.
>
> Therefore, your implementation of the “createNewStreamSource()”
> virtual function should feed the input source into a new
> “EndianSwap16” filter object (and return a pointer to that filter object).
>
>
> Ross Finlayson
> Live Networks, Inc.
> http://www.live555.com/
>
>
>
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live555.com
> http://lists.live555.com/mailman/listinfo/live-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20150804/eb61a73e/attachment.html>


More information about the live-devel mailing list