FFmpeg从UYVY422转换为YUV420P

时间:2012-07-07 19:06:08

标签: video ffmpeg h.264 video-processing

我有UYVY422格式的原始视频,我想将其转换为YUV420p。 我正在执行该命令()

ffmpeg -y -r 25.0 -f rawvideo -s 1920x1080 -pix_fmt uyvy422 -i input.avi -pix_fmt yuv420p -f avi -r 25 -s 1920x1080 output.avi 

我的输出视频似乎浮动(视频的右侧开始出现在左边缘,它从左向右移动)

有没有人知道我做错了什么?我试图将输出视频设置为原始格式,但它没有用...... \

3 个答案:

答案 0 :(得分:8)

  

ffmpeg -y -r 25.0 -f rawvideo -s 1920x1080 -pix_fmt uyvy422 -i   input.avi -pix_fmt yuv420p -f avi -r 25 -s 1920x1080 output.avi

这里的问题是源是AVI文件。它可能包含原始的YUV帧,但它不是原始的YUV文件,它周围仍然有AVI标题等。您告诉它将其解析为原始YUV文件,这就是您看到滚动帧的原因。

我只是删除-i之前的所有选项,然后它应该正常工作:

ffmpeg -i input.avi -pix_fmt yuv420p -c:v rawvideo -an -s 1920x1080 -y output.avi

答案 1 :(得分:4)

使用ffmpeg我认为你需要告诉它做一个直接复制,否则它会尝试编码输出。尝试添加'-vcodec copy'选项:

ffmpeg -y -r 25.0 -f rawvideo -s 1920x1080 -pix_fmt uyvy422 -i input.avi -vcodec copy -pix_fmt yuv420p -f avi -r 25 -s 1920x1080 output.avi

答案 2 :(得分:1)

我刚刚从yuv420p转换为yuv444p。我不是100%肯定这会在你的情况下有效,但它可能。值得一去:

windows中的命令行:

  
    

ffmpeg.exe -y -pix_fmt yuv420p -s 1920x1080 -r 30 -i ldr_420.yuv -f rawvideo -pix_fmt yuv444p -s 1920x1080 -r 30 ldr_444.yuv

  

Linux中的命令行: $。/ ffmpeg -y -pix_fmt yuv420p -s 1920x1080 -r 30 -i ldr_420.yuv -f rawvideo -pix_fmt yuv444p -s 1920x1080 -r 30 ldr_444.yuv

在您的情况下,请将输入和输出-pix_fmt替换为所需的格式。