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
私はストリーミングプラグインを使用していますが、ストリームはトリックなしで構成されているようです:
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://codea.com/data/janusSyncIssue.mp4 - ご覧のとおり、ビデオとオーディオの間にかなりの非同期があります。
問題は、ビデオ ストリームとオーディオ ストリームが別々に送信され、タイムコードが含まれていないか、何らかの理由で無視されていることです。明らかに、ビデオのエンコードとオーディオのエンコードにかかる時間は異なり、ビデオの場合はさらに時間がかかるため、ビデオの遅延が発生します。
私はこれを疑っていますか?もしそうなら、どうすればこれを修正できますか?そのためのffmpeg設定またはJanusストリーミングプラグイン設定があると思います。
ああ、そのサーバーではプロセッサはほぼ無料で、80 ~ 85% は無料です。確かにプロセッサの問題ではありません。