我正在使用 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% 是免费的。肯定不是处理器问题。