与FFmpeg音频和视频不同步的RTP流媒体

时间:2017-08-25 16:07:07

标签: ffmpeg video-streaming rtp

我正在使用以下命令播放网络摄像头/音频:

ffmpeg.exe -f dshow -framerate 30 -i video="xxx" -c:v libx264 -an -f rtp rtp://localhost:50041 -f dshow -i audio="xxx" -c:a aac -vn -f rtp rtp://localhost:50043

这将输出以下sdp信息:

    v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=No Name
    t=0 0
    a=tool:libavformat 57.65.100
    m=video 50041 RTP/AVP 96
    c=IN IP6 ::1
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1
    m=audio 50043 RTP/AVP 97
    c=IN IP6 ::1
    b=AS:128
    a=rtpmap:97 MPEG4-GENERIC/44100/2
    a=fmtp:97 profile-level-id=1;mode=AAC-
    hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=121056E500

我用命令

读取了流
ffmpeg.exe -protocol_whitelist file,udp,rtp -i D:\test.sdp -c:v libx264 -c:a aac d:\out.mp4

在生成的文件中,音频略高于视频。我已经读过RTCP在RTP端口+ 1上运行,并包含同步信息。我没有在SDP文件中看到任何RTCP信息。

我是否需要指定包含RTCP的内容?

如果这不是问题,我还可以做些什么来同步音频和视频?

1 个答案:

答案 0 :(得分:1)

不确定RTCP是否是您的问题,但我首先尝试使用一个directshow输入并将其拆分为两个输出,如下所示:

ffmpeg.exe -f dshow -framerate 30 -i video="XX":audio="YY" -an -vcodec libx264 -f rtp rtp://localhost:50041 -acodec aac -vn -f rtp rtp://localhost:50043

ffmpeg DirectShow documentation在使用多个输入时提到同步问题。它还提到如果要将输入分开,尝试使用“-copy_ts”标志来解决同步问题。