繁体   English   中英

(文件夹范围)在 ffmpeg 中批量转换为 H264 编解码器

[英](Folderwide) Bulk conversion in ffmpeg to a H264 codec

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

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”

我该如何解决这个问题?

如果从头开始更容易,那么我正在努力实现以下目标

我对整个转换/编码的事情很陌生。 我有一个树莓派作为我的视频文件的家庭服务器。 可悲的是,它只能引导 stream 正确编码文件(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支持的其他格式? 如果是,那么您只需stream使用-c:v copy (重新复用)视频,而不必重新编码:

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

h264_cuvid 是一个解码器

不是编码器,树莓派也不支持 CUVID。 请参阅FFmpeg Wiki:硬件


如果你必须编码

使用 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
  • 您需要使用--enable-omx --enable-omx-rpi编译ffmpeg才能使用它。
  • 与 libx264 相比,它是一个简单且有限的编码器,因此结果不会那么好。
  • 请参阅Raspberry PI 上的 FFmpeg 硬件加速

h264_mmal 用于硬件加速解码

如果您的ffmpeg是使用--enable-mmal编译的,并且您的 Raspberry 支持 Broadcom 多媒体抽象层,并且您的输入视频格式是 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM