【问题标题】:batch conversion from .h264 to .avi using ffmpeg [duplicate]使用ffmpeg将.h264批量转换为.avi [重复]
【发布时间】:2021-05-01 08:02:58
【问题描述】:

我正在完成一个项目,其中有大量 .h264 视频文件,所有这些文件都需要转换为高质量的 .avi 文件。它们必须是 .avi,因为之后我在它们上使用 DeepLabCut。 我已经能够使用代码逐个文件地执行此文件:

ffmpeg -i practicevid_5.h264 -q:v 6 practicevid_5_2.avi

但是,理想情况下,我希望能够转换这些文件的整个文件夹以节省时间。如果您能帮忙解决这个问题,请告诉我。

【问题讨论】:

  • this answer如何使用ffmpeg转换整个目录?

标签: linux bash ffmpeg sh


【解决方案1】:

如果你使用的是 bash:

cd /the/dir/the/h264/videos/are/in
for input in *.h264; do ffmpeg -i $input -q:v 6 ${input/.h264/_2.avi}; done

在 Windows 默认 shell 中:

for %%input in (*.h264) do ffmpeg %%input -q:v 6 %input:.h264=_2.avi%

无法测试 windows 示例,因为我没有 windows 机器!

【讨论】:

  • 谢谢!我会试试这个。我正在使用 Linux!
  • @oliopti 很好,因为我已经多次使用 bash 版本了!
  • 我导航到该文件夹​​,并使用您建议的代码 ffmpeg -i $input -q:v 6 ${input/.h264/.avi} ,就像这样输入。但是,我收到以下错误 -q:v: Protocol not found。你的意思是文件:-q:v?
  • @oliopti 首先,我的帖子中有一个错字已修复,其次,当您在正确的文件夹中时,请复制粘贴我的代码的第二行,看看错误是否仍然存在。
  • @oliopti 错误的原因是您只输入了ffmpeg ... 部分而忽略了for 循环。这导致$input 变量为空,ffmpeg 将-q:v 作为输入文件。 -q 然后被解释为一个互联网协议,由于这样的协议不存在,它会给你这个错误。解决方案是复制粘贴我的代码的第二行。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 2015-09-03
  • 1970-01-01
  • 2013-03-24
  • 1970-01-01
  • 2017-09-27
  • 2014-11-04
  • 2014-07-12
相关资源
最近更新 更多