FFmpeg RTMP转RTP

ffmpeg拉取RTMP流,并转换输出RTP流

由于RTP的一些限制,所以需要将音、视频分开输出,不然的话会提示

FFmpeg Only one stream supported in the RTP muxer

ffmpeg -re -i rtmp://192.168.3.38:21935/phone/123456  -vn -acodec pcm_alaw  -f rtp rtp://192.168.3.6:6000 -vcodec copy -an -f rtp rtp:192.168.3.6:5000

此时会在终端打印出SDP信息

FFmpeg RTMP转RTP_第1张图片 ffpmeg RTMP -> RTP SDP信息​​​​

将SDP信息

v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
t=0 0
a=tool:libavformat 58.17.101
m=audio 6000 RTP/AVP 97
c=IN IP4 192.168.3.6
b=AS:128
a=rtpmap:97 PCMA/16000/1
m=video 5000 RTP/AVP 96
c=IN IP4 192.168.3.6
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAFqy0C4KIgA==,aO48sA==; profile-level-id=640016 

保存为SDP文本文件

注意,这里PCMA的payload type是97,而不是8,千万不要手贱去改这些信息 

这里h264的SPS信息,每次也都不同(http://www.360doc.com/content/12/0627/17/2660674_220789931.shtml)

使用ffplay播放音视频流

ffplay -protocol_whitelist file,udp,rtp -i test.pcma.h264.sdp -fflags nobuffer

这样就可以用ffplay播放了,当然也可以直接用VLC播放器打开SDP文本文件播放音视频流

虽然可以播放出来,并且语音和视频也是同步的,但延迟有点大,3-5s样子

参考资料:

FFmpeg Only one stream supported in the RTP muxer

ffmpeg对RTP直播流的转发实现

使用FFmpeg命令行进行UDP、RTP推流(H264、TS),ffplay接收

 

你可能感兴趣的:(ffmpeg)