원시 YUV444에서 VLC로의 FFMPEG h.264 스트림은 검은색 화면과 오디오 소음을 발생시킵니다.

원시 YUV444에서 VLC로의 FFMPEG h.264 스트림은 검은색 화면과 오디오 소음을 발생시킵니다.

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 로그.

내가 도대체 ​​뭘 잘못하고있는 겁니까?

추신: 이 질문은 답변을 얻지 못했기 때문에 Stack Overflow에서 여기로 옮겼습니다. 답변되지 않은 오래된 중복 항목은 삭제됩니다.

답변1

근본적인 문제는 해결되지 않았지만 @Gyans 힌트가 문제를 해결하는 데 도움이 되었습니다. 다른 플레이어(PotPlayer) 또는 이전 버전의 VLC를 사용하면 스트림 디스플레이가 작동하게 되었으며 이것이 제가 필요한 전부였습니다.

관련 정보