フォローアップ: RTMP ストリームが 1 秒間サウンドを再生してから停止 - ビデオがまったくない
ここでの振る舞いは本当に奇妙です。
私の設定:
jwplayer('canvas').setup({
file : "stream.smil",
width : 1024,
height : 768,
stagevideo : false,
autostart : true
});
stream.smil
:
<smil>
<head>
<meta base="rtmp://192.168.1.160:1340/live/" />
</head>
<body>
<switch>
<video src="large" width="1024" height="768" system-bitrate="2000000" />
<video src="small" width="640" height="480" system-bitrate="800000" />
</switch>
</body>
</smil>
さて、(GPU レンダリング) をオフstagevideo
にすると白いビデオは改善されましたが、オーディオの問題は残っています。新しい情報がいくつかあります。
私のRTMPサーバーは、 (smilが示唆するように)リッスンする rtmp module を備えたnginxです。
私は ffmpeg の入力として使用する出力を Mobotix IP カメラを持っており、RTMP サーバーにフィードします。1340
ffmpeg -f mxg -i "http://admin:meinsm@192.168.1.161:80/control/faststream.jpg?stream=MxPEG&needlength" -f flv -ar 44100 -s 1024x768 "rtmp://localhost:1340/live/large"
Chrome、Firefox、Opera、Safari は期待どおりに動作しますが、IE はまったく別の奇跡的な世界です。
- ページを開くとすぐに音声が聞こえますが、動画の読み込みに時間がかかります。動画が読み込まれると、約 1 秒間再生された後、音声が停止し、動画がフリーズします。
- 低品質のストリームに切り替えると、同じことが起こります.ほとんどすぐにオーディオを聞くことができます.ビデオをロードするのに時間がかかります.
- プレーヤー/ストリーム自体を一時停止/閉じずにffmpegフィーダーを再起動すると、しばらくすると、プレーヤーはオーディオとビデオの両方を中断することなく再生し始めます。ある時点でストリームを再度変更するか、ページをリロードすると、#1 に戻ります。その後、再び ffmpeg フィーダーを再起動すると、何も起こらなかったかのようにビデオが続行されます。
独自のコーデックを使用し、デフォルトのコーデックとはいくつかの違いがあるため、MxPEG ライブ ストリームに問題がある可能性があると思います。
I フレームの代わりに...
現在の MxPEG の実装では、1 秒ごとや 20 フレームごとなど、完全な JPEG フレームを含めるようにコーデックに指示する方法はありません。したがって、他のコーデックで知られている I フレームの概念はありません。しかし、1 秒前に戻ってデコードを開始する上記の方法は、実用的な回避策として役立つ可能性があります。
コーデック自体に関する追加情報は、こちらで入手できます。
ただし、そのような違いがあっても、動作しないのが IE だけである理由を説明するものではありません (ただし、プレーヤーが RTMP から読み取り中にフィードを再起動しても問題ありません)。
ここでは手がかりがありません。FLVコーデックをAACでx264に変更しようとしました-Chrome、Opera、Firefox、Safariは機能しますが、IEは機能しません(ただし、別の問題)。
RTMP出力に同じオプションを使用して、入力として静的ビデオファイル(BlendersのSintelビデオ、mp4)をffmpegにフィードしようとしました-一貫した問題があり、すべてのブラウザでビデオが途切れましたが、再生されました。
しかし、はい、誰かがここで何が悪いのか手がかりを持っているのでしょうか?