我正在使用Janus Gateway来流传输从视频文件中获取并由ffmpeg编码的视频。该项目的目标要复杂得多,但我尝试将其减少到最小,以帮助进行故障排除。
编码是通过以下方式完成的:
ffmpeg -re -thread_queue_size 4 -stream_loop -1 -i \
/root/syncTest.mkv -c:v libvpx -vf scale="-1:360" -minrate 400k \
-maxrate 600k -b:v 500k -an -deadline realtime -f rtp \
rtp://127.0.0.1:5004?pkt_size=1200 -vn -ar 48000 -ac 2 -c:a libopus \
-f rtp rtp://127.0.0.1:5002?pkt_size=1200
我正在使用Streaming插件,流似乎没有任何技巧配置:
stream-1 :
{
type = "rtp";
id = "1";
description = "stream-1";
audio = "yes";
audioport = "5002";
audiopt = "111";
audiortpmap = "opus/48000/2";
video = "yes";
videoport = "5004";
videopt = "100";
videortpmap = "VP8/90000";
data = "no";
secret = "adminpwd";
};
以下是指向我的流媒体插件和Janus配置的链接-我尝试使用nack队列长度和dtls超时参数播放一些内容,但无济于事,它们没有任何改变。
https://codeda.com/data/janus.jcfg.txt https://codeda.com/data/janus.plugin.streaming.jcfg.txt
结果视频(WebRTC播放器页面的屏幕截图)在这里:https://codeda.com/data/janusSyncIssue.mp4-如您所见,视频和音频之间存在相当大的不同步。
如我所见,问题在于视频流和音频流是分别发送的,或者不包含时间码,或者由于某种原因而被忽略。显然,对视频进行编码和对音频进行编码会花费不同的时间,而对视频来说则需要更多的时间,从而导致视频延迟。
我怀疑这个吗?如果是这样,我该如何解决?我想象有一些ffmpeg设置或Janus流插件设置。
是的,该服务器上的处理器几乎是免费的,有80-85%的空闲时间。肯定不是处理器问题。