web-dev-qa-db-ja.com

生のYUV444からVLCへのFFMPEGh.264ストリームは、黒い画面とオーディオノイズを生成します

Stdoutを使用してC++プログラム内から生のYUV444640x480フレームをffmpegにパイプしています(パイプ形式:パイプ<-Y <-U <-Vフレーム全体)。 ffmpegはh.264を使用してそれらをエンコードし、UDPを介してビデオを選択したIPにストリーミングします。

Ffmpegを使用してビデオを-mp4ファイルとしてストリーミングおよび記録デバイスに保存していない場合、すべてが機能します-しかし、ネットワーク経由でストリーミングしてVLCで受信しようとすると、ストリームが受信され、ビデオ画面の下の再生タイマーが実行されます、しかし、画像は黒で、ビデオは表示されません。また、オーディオ出力にパチパチという音がします。生のビデオにはオーディオトラックがありません。

私のffmpeg設定は次のとおりです。

ffmpeg -y -loglevel verbose -f rawvideo -r 25 -c:v rawvideo -pix_fmt yuv444p -s 640x480 -i - -c:v libx264 -preset superfast -framerate 25 -f mpegts udp://192.168.150.1:20001

vLC(GUI)では、udp:// @:20001で「オープンネットワークストリーム」を使用します。ポートが開いているので、単純なダミーの送信側/受信側でテストしました。ビデオ録画のほぼ同じcli引数は、ファイルに書き込んでダウンロードするときに完全に再生可能なビデオにつながります。

ffmpeg -y -loglevel verbose -f rawvideo -r 25 -c:v rawvideo -pix_fmt yuv444p -s 640x480 -i - -c:v libx264 -preset superfast -framerate 25 video.mp4

同じ録画ビデオを使用してストリーミングしようとすると

ffmpeg -i video.mp4 -v 0 -vcodec mpeg4 -f mpegts udp://192.168.150:20001

上記のように、再び黒い画面が表示されます。

VLCログ出力は私のストリームをmp3として識別しているので、おそらくストリームタイプの認識が原因です。しかし、なぜ?

ffmpegコンソール出力VLCログ です。

私は何が間違っているのですか?

PS:回答が得られなかったため、この質問をStack Overflowからここに移動しました。古い未回答の重複は、削除されます。

1
GerbGerb

根本的な問題は解決されていませんが、@ Gyansのヒントが問題の解決に役立ちました。他のプレーヤー(PotPlayer)または古いバージョンのVLCを使用すると、ストリームディスプレイが機能するようになり、必要なのはそれだけです。

1
GerbGerb