如何在 macOS 中使用 ffmpeg 将 .mkv 批量转换为 .mp4?

如何在 macOS 中使用 ffmpeg 将 .mkv 批量转换为 .mp4?

我正在使用此命令在 macOS 中从 转换.mkv为:.mp4

> ffmpeg -i input/*.mkv -codec copy mp4/%~n.mp4
zsh: no matches found: input/*.mkv
> ffmpeg -i "input/*.mkv" -codec copy mp4/%~n.mp4
ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
  built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.0 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-neon
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
input/*.mkv: No such file or directory

可以在 macOS 13.2 中转换.mkv为批处理吗?.mp4

答案1

您可以使用for如下简单的循环:

for file in *.mkv; do ffmpeg -i "$file" -c copy "mp4/${file%.*}.mp4"; done 

它基本上为每个执行命令.mkv,删除带有参数扩展()的扩展${file%.*}并添加.mp4

答案2

由于第一个答案对我不起作用,因此这是我能做到的。我在 macOS Sonoma 上。

for f in *.mkv; do ffmpeg -i "$f" -c copy "${f%.mkv}.mp4"; done

我相信这个帖子。

请记住,当您进行此容器交换时。生成的 MP4 文件可能无法在 macOS 上播放。例如:Quicktime 不会播放只有音频的视频。缩略图可能不存在。

我找到了一个解决方案,即-tag:v hvc1在 FFmpeg 命令中添加参数,使 HEVC 文件在 Apple 设备上运行。

例子:

ffmpeg -i Aliens1996.mkv -c copy -tag:v hvc1 Aliens1996.mp4

我还没有弄清楚如何使用这个标签进行批量转换,因为我认为我的一些 MKV 已经是 HEVC 了?

相关内容