從原始 YUV444 到 VLC 的 FFMPEG h.264 流會產生黑屏和音頻噪聲

從原始 YUV444 到 VLC 的 FFMPEG h.264 流會產生黑屏和音頻噪聲

我使用 stdout 從 C++ 程式內部將原始 YUV444 640x480 幀通過管道傳輸到 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

雖然根本問題尚未解決,但@Gyans 提示幫助我解決了我的問題。使用其他播放器 (PotPlayer) 或舊版的 VLC 可以讓串流顯示正常運作,這就是我所需要的。

相關內容