微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

文件夹范围内在 ffmpeg 中批量转换为 H264 编解码器 使用 libx264或用于硬件加速编码的 h264_omxh264_mmal 用于硬件加速解码

如何解决文件夹范围内在 ffmpeg 中批量转换为 H264 编解码器 使用 libx264或用于硬件加速编码的 h264_omxh264_mmal 用于硬件加速解码

所以我试图了解 ffmpeg,但我不太擅长。我正在尝试使用 H264 编解码器将所有 .mkv 文件转换为 .m4v。从另一个项目中,我知道 h264_cuvid 解码器非常适合我的需要。我还通过 ffmpeg -decoders 检查我是否正确编写了它。所以windows-batchfile(我从其他论坛弗兰肯斯坦编的)看起来像这样:

for %%a in ("*.mkv") do ffmpeg -i "%%a" -c:v h264_cuvid -preset fast -crf 20 -b:v 128k "newfiles\%%~na.m4v"
pause

遗憾的是,我得到的只是:

未知编码器“h264_cuvid”

我该如何解决这个问题?

如果从头开始更容易以下就是我想要实现的

我对整个转换/编码这件事还很陌生。我有一个树莓派作为我的视频文件的家庭服务器。遗憾的是,它只能直接流式传输正确编码的文件(H.264),否则 Pi 会尝试对视频本身进行编码(导致缓冲的原因)。所以我试图找到一种解决方案,将我的整个库放入一个文件夹并将其转换为可用格式。

解决方法

我建议您使用其他编解码器,因为 h264_cuvid 与 NVIDIA CUDA 严格相关,当然它不能在 Raspberri Pi 上运行。为了使用 h264_cuvid,您需要一个带有硬件编解码器的 NVIDIA GPU。有关详细信息,请参阅 https://developer.nvidia.com/nvidia-video-codec-sdk/download

,

如果可以,就重新多路复用

.mkv 文件是否已经包含 H.264 或 .m4v 支持的其他格式?如果是,那么您只需使用 -c:v copy stream copy(重新复用)视频而不必重新编码:

for %%a in ("*.mkv") do ffmpeg -i "%%a" -c:v copy "newfiles\%%~na.m4v"
pause

h264_cuvid 是一个解码器

不是编码器,而且Raspberry也不支持CUVID。见FFmpeg Wiki: Hardware


如果你必须编码

使用 libx264

for %%a in ("*.mkv") do ffmpeg -i "%%a" -c:v libx264 -preset fast -crf 20 -b:v 128k "newfiles\%%~na.m4v"
pause

有关详细信息,请参阅 FFmpeg Wiki: H.264

或用于硬件加速编码的 h264_omx

如果您的 Raspberry 和 ffmpeg 支持 OpenMax,您可以使用 h264_omx:

for %%a in ("*.mkv") do ffmpeg -i "%%a" -c:v h264_omx "newfiles\%%~na.m4v"
pause
  • 您需要使用 ffmpeg 编译 --enable-omx --enable-omx-rpi 才能使用它。
  • 与 libx264 相比,它是一个简单且有限的编码器,因此结果不会那么好。
  • FFmpeg hardware acceleration on Raspberry PI

h264_mmal 用于硬件加速解码

如果您的 ffmpeg 是用 --enable-mmal 编译的,并且您的 Raspberry 支持 Broadcom Multi-Media Abstraction Layer,并且您的输入视频格式是 H.264、VC-1、MPEG-2 或MPEG-4,那么你也可以添加硬件解码:

for %%a in ("*.mkv") do ffmpeg -c:v h264_mmal -i "%%a" -c:v h264_omx "newfiles\%%~na.m4v"
pause

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。