使用FFMPEG无损地将YUV转换为其他格式,以便在Adobe Premier中进行编辑

33
我有一个原始的YUV视频文件,我想在Adobe CS6 Premiere中对其进行一些基本编辑,但它无法识别该文件。我想使用ffmpeg将其转换为Premiere可以接受的格式,但我希望这是无损的,因为之后我需要再次使用YUV格式。我考虑过avi、mov和prores,但我似乎无法弄清楚正确的命令行和如何确保它是无损的。
谢谢您的帮助。

你所说的无损是指少量损失吗?因为当转换文件格式时,不幸的是总会有一些质量损失。 - brendosthoughts
5
无损并非没有损失。就像压缩文件一样,压缩后的文件会更小,解压后却完全相同,这就是无损压缩。 - Omega
3
请考虑使用UT Video。这是一种快速的无损格式,非常适合用作临时和中间文件。ffmpeg可以本地编码和解码它(例如:ffmpeg -i input -codec:v utvideo -codec:a pcm_s16le output.avi),如果您安装了UT Video,则Premiere也可以使用它。还可以参见如何从Adobe Premiere Pro使用FFmpeg进行编码 - llogan
1个回答

67

是的,这是可能的。由于它只是一个没有任何头信息的原始数据文件,所以您无法打开该原始视频文件。因此,Adobe Premiere不知道大小、帧速率等信息。

首先确保您已经下载了FFmpeg命令行工具。然后安装后,您可以运行带参数的命令开始转换。在开始转换之前,有一些参数需要您自己填写:

  1. 您正在使用哪种类型的YUV像素格式?最常见的格式是YUV4:2:0平面8位(YUV420p)。您可以键入ffmpeg -pix_fmts获取所有可用格式的列表。
  2. 帧速率是多少?在我的示例中,我将使用-r 25 fps。
  3. 您想使用哪个编码器?libx264 (H.264)编码器是一个很好的无损压缩编码器。
  4. 帧大小是多少?在我的示例中,我将使用-s 1920x1080

然后我们得到这个命令来完成压缩。

ffmpeg -f rawvideo -vcodec rawvideo -s 1920x1080 -r 25 -pix_fmt yuv420p -i inputfile.yuv -c:v libx264 -preset ultrafast -qp 0 output.mp4

其他参数的简要说明:

  • 使用-f rawvideo设置输入格式为原始视频容器
  • 使用-vcodec rawvideo将输入文件设置为未压缩
  • 使用-i inputfile.yuv设置您的输入文件
  • 使用-c:v libx264将编码器设置为编码视频到libx264。
  • -preset ultrafast设置仅加速压缩,因此文件大小将大于设置为veryslow
  • 使用-qp 0可设置最佳质量。在我们的示例中,0表示最佳质量,51表示最差质量。
  • output.mp4是您的新容器,用于存储数据。
  • 在完成Adobe Premiere后,您可以通过反转几乎所有参数将其转换回YUV文件。FFmpeg会识别mp4容器中的内容,因此您不需要为输入提供参数。

    ffmpeg -i input.mp4 -f rawvideo -vcodec rawvideo -pix_fmt yuv420p -s 1920x1080 -r 25 rawvideo.yuv


    2
    在将原始文件转换成MP4的FFmpeg命令中,你为什么同时使用了yuv422p和yuv420p像素格式? - Necktwi
    1
    好的,你说得对!我在那里犯了一个错误。你只需要提供一个pix_fmt就可以了。我会编辑答案。 - Omega
    你能帮我将由http://linuxtv.org/downloads/v4l-dvb-apis/capture-example.html代码生成的rawvideo转换吗?当我使用你的ffmpeg命令进行转换时,输出的output.mp4在用vlc播放时,视频会失真。这是视频中的一帧https://lh3.googleusercontent.com/-S_Oaj6CYqZw/UmAIQ-Kw5BI/AAAAAAAAAuY/l2CBwo32g0w/w640-h480-no/myframe.jpg - Necktwi
    @river_jones,我不明白你的意思。你是在问如何在ffmpeg中知道视频是否以无损编码吗?如果是这样,请在superuser.com上提出一个新问题。 - Omega
    @river_jones,抱歉回复晚了。根据libx264手册:量化器刻度的范围是0-51:其中0表示无损,23表示默认值,51表示最差情况。在上面的例子中,我使用“-qp 0”参数来实现。此外,如果这个答案对你解决问题有帮助,你可以在stackoverflow上接受它。 - Omega
    显示剩余5条评论

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