FFMPEG h.264 流从原始 YUV444 到 VLC 产生黑屏和音频噪音

FFMPEG h.264 流从原始 YUV444 到 VLC 产生黑屏和音频噪音

我正在使用 stdout (管道格式:管道<-Y<-U<-V 每个整个帧)从 C++ 程序内部将原始 YUV444 640x480 帧传输到 ffmpeg。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 使流显示正常工作,这就是我所需要的。

相关内容