生の YUV444 から VLC への FFMPEG h.264 ストリームで黒い画面と音声ノイズが発生する

生の YUV444 から VLC への FFMPEG h.264 ストリームで黒い画面と音声ノイズが発生する

私は、stdout を使用して C++ プログラム内から ffmpeg に生の YUV444 640x480 フレームをパイプしています (パイプ形式: pipe<-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

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

関連情報