Pus*_*kar 5 mac ffmpeg transcode
我正在尝试确定 M1 Mac 使用 FFmpeg 进行视频转码(特别是调整大小和调整比特率)的效果如何。我可以使用如下命令进行单个转码:
ffmpeg -I in.mp4 -nostdin -c:v h264_videotoolbox -c:a copy -vf scale=1280:720 -b:v 8000k out.mp4
Run Code Online (Sandbox Code Playgroud)
现在,当我运行这个程序时,我可以在活动监视器中看到该进程,但它显示 CPU 使用率很高,但 GPU 使用率为 0%,尽管它肯定使用某种形式的硬件加速(使用 libx264 而不是 h264_videotoolbox 慢得多)。
当我尝试同时运行多个进程时,计时表明几乎没有并行执行的证据:
测试 | 定时 |
---|---|
转换单个测试文件 | 6.8秒 |
依次转换文件 5 次 | 33.6秒 |
并行转换文件 5 次 | 31.5秒 |
由于 M1 芯片内部应该有 7 或 8 个 GPU,我预计会看到相当好的并行性,那么我是否缺少以下选项:
以下是我在该主题上发现的内容:
\n对于初学者来说,superuser.com 上有一个非常好的答案,涉及如何提高ffmpeg
线程/速度:
[1] https://superuser.com/a/792609/1211883
\nApple M1 7 核 GPU
\n接下来,这可能是我找到的关于该主题的最佳资源,至少适合您和您的 M1 Mac:
\n[2] https://superuser.com/a/1324326/1211883 \xe2\xad\x90\xef\xb8\x8f\xe2\xad\x90\xef\xb8\x8f\xe2\xad\x90\xef\xb8 \x8f\xe2\xad\x90\xef\xb8\x8f
\n[3] https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox \xe2\xad\x90\xef\xb8\x8f\xe2\xad\x90\xef\xb8\x8f\xe2\xad\x90\xef \xb8\x8f\xe2\xad\x90\xef\xb8\x8f\xe2\xad\x90\xef\xb8\x8f
\n[4] https://doesitarm.com/tv/running-ffmpeg-on-mac-with-apple-silicon-m1-i-woz7p7zmz2s/ \xe2\xad\x90\xef\xb8\x8f\xe2\xad\ x90\xef\xb8\x8f\xe2\xad\x90\xef\xb8\x8f\xe2\xad\x90\xef\xb8\x8f
\n[5] https://github.com/cdgriffith/FastFlix/issues/196 \xe2\xad\x90\xef\xb8\x8f\xe2\xad\x90\xef\xb8\x8f\xe2\xad\x90\xef \xb8\x8f
\n总而言之,
\n\n\n在 macOPS 上有\xe2\x80\x99s videotoolbox。
\n
\n\n检查一下编码器选项:
\n
ffmpeg -hide_banner -h encoder=hevc_videotoolbox\n\n
Run Code Online (Sandbox Code Playgroud)\n本质上你必须使用encoder=hevc_videotoolbox
硬件编码器。
英伟达 GPU
\n这里可能是我发现的与 nvidia gpus 相关的最佳资源,以防万一有人拥有其中之一:
\n[6] https://developer.nvidia.com/blog/nvidia-ffmpeg-transcoding-guide/
\n它指出:
\n\n\n“从源代码构建 [ffmpeg] 时激活对硬件加速的支持需要一些额外的步骤:”
\n
您可能想要按照其中的说明进行操作,并将对硬件加速的支持添加到您的 ffmpeg 安装中。
\n然后在 [6] 中的“Multi-GPU”标题下,说明了以下内容:
\n\n\n多 GPU\n在一个系统中使用多个 GPU 时,必须将编码和解码工作显式分配给一个 GPU。GPU 通过索引号来识别;默认情况下,所有工作都在索引为 0 的 GPU 上执行。使用以下命令获取系统中所有 NVIDIA GPU 的列表及其对应的 ID 号:
\n
ffmpeg -vsync 0 -i input.mp4 -c:v h264_nvenc -gpu list -f null \xe2\x80\x93\n
Run Code Online (Sandbox Code Playgroud)\n\n\n一旦知道索引,-hwaccel_device 索引标志可用于设置用于解码和编码的活动 GPU。在下面的示例中,工作将在索引为 1 的 GPU 上执行。
\n
ffmpeg -vsync 0 -hwaccel cuvid -hwaccel_device 1 -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4\n
Run Code Online (Sandbox Code Playgroud)\n其他有用的资源
\n最后,看看 ffmpeg 文档本身可能不会有什么坏处:
\n[7] https://ffmpeg.org/ffmpeg.html
\n同样,这个资源很棒,按平台显示了所有不同的ffmpeg
平台可用性和GPU 选项:ffmpeg
[8] https://trac.ffmpeg.org/wiki/HWAccelIntro
\n我正在努力升级,这样我就可以对未来的一些帖子进行投票,所以我希望这会有所帮助!
\n但是,尝试及时对视频进行转码总是很有趣;我衷心祝愿您一切顺利!
\n 归档时间: |
|
查看次数: |
8058 次 |
最近记录: |