使用ffmpeg将YUV文件转换为.mp4格式,适合初学者

3
我对Linux和FFmpeg很陌生,但我需要使用Evalvid来流传一个视频文件。我想要流传大约500秒的文件。我的计划是从这里下载其中一个视频:

http://media.xiph.org/

在这个示例中,我下载了一个Big Buck Bunny的视频(480p版本)。它以.xz格式提供,我使用unxz进行解压缩,然后获得了一个.Y4M文件,接着我使用FFmpeg将其转换为YUV文件。

ffmpeg -i big_buck_bunny_480p24.y4m bbb.yuv

我的问题在这里,我尝试使用这个网站的示例,但它们不起作用。使用ffmpeg将其转换为.mp4文件的确切命令是什么,还是有更容易使用的替代方案?

我已经尝试过:

 ffmpeg -f rawvideo -s:v 1920x1080 -r 25 -i bbb.yuv -c:v libx264 output.mp4

这将开始转换过程,但5分钟后我会收到一个无效的缓冲区值错误,输出结果是一堆颜色混乱的东西。

1个回答

4

最近我也在做类似的事情。你可能会得到一堆颜色,因为你的输入文件是480,但你告诉ffmpeg它是1080。试试这个:

ffmpeg -s 640x480 -i bbb.yuv -ss 00:00:00 -c:v libx264 -s:v 640x480 -preset slow -t 00:08:20 output.mp4

-t 00:08:20表示500秒

希望能对您有所帮助。


谢谢,但输出仍然是一团模糊的颜色和线条。最终我通过直接从Y4M转换为MP4来解决了这个问题,但我担心在计算我的实验的MOS时可能会遗漏一些东西。问题可能出在我从Y4M转换的方式上吗?当我使用VLC或专门设计的YUV播放器播放时,YUV文件看起来与输出的MP4类似。 - undefined
那反过来呢,将MP4转换为Y4M呢? - undefined
我发现参数-s 640x480必须放在-i bbb.yuv之前,否则ffmpeg会报错(错误信息为Picture size 0x0 is invalid)(这个答案中包含了两个指定尺寸的参数:-s 640x480-s:v 640x480,我认为是重复的)。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接