mkvtomp4
看起来mkvtomp4
是你想要的吗?
使用mpeg4ip或GPAC的MP4Box,mkvtoolnix和ffmpeg 将麻烦的mkv文件转换为mp4。转换不会重新编码视频,仅在不使用AAC编解码器时才重新编码音频(可以使用--audio-codec覆盖此行为)。
您可以在Google代码页上下载Windows和Linux版本。但是,您将需要其他软件。
检查站点是否有Windows或Linux下载。在OS X上,只有brew install mkvtoolnix mp4box
拥有Homebrew才需要。
但是,这不会复制您的字幕。您将需要一个额外的步骤。
FFmpeg批处理
如果mkvtomp4对您不起作用,则简单的FFmpeg批处理文件也可以。对于Windows,您可以下载Zeranoe版本。在Linux中,从软件包来源检查FFmpeg。在OS X中,使用brew install ffmpeg
。
然后,只需调用:
ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4
这将创建一个有效的MP4容器,而无需重新编码。根据需要循环使用文件,并且操作系统可以使用这些文件。但是,该批次不会复制字幕。
在* nix中,您可以执行以下操作。只需创建一个文件convert.sh
:
#!/bin/bash
find /path/to/input/folder -iname '*.mkv' -print0 | while read -d '' -r file; do
ffmpeg -i "$file" -c:v copy -c:a copy ${file%%.mkv}.mp4
done
在此处替换视频文件夹的路径。使用使其可执行chmod +x convert.sh
,然后使用进行运行./convert.sh
。
在Windows中,您可能需要两个批处理文件(来自此处的无耻插件),其中一个是startconvert.bat
:
for %%i IN (*.mkv) DO (convert-to-mp4.bat "%%i")
pause
而执行转换的是:
IF EXIST "%1.mp4" GOTO exit
@echo Conversion for %1 started on %DATE% %TIME%
ffmpeg -i %1 -c:v copy -c:a copy %1.mp4
:exit
@echo %1.mp4 already exists
将两者都保存在视频文件夹中。只需startconvert.bat
从您要开始转换的文件夹中运行即可。
字幕
如果您想添加字幕,那么以下操作可能对您不起作用:
ffmpeg -i input.mkv -c:a copy -c:v copy -map 0 output.mp4
要提取字幕,请使用:
mkvextract tracks input.mkv 3:subtitles.srt
这是假设您的文件中确实包含轨道ID为3的字幕,并且可以将其导出为SRT格式。要检查文件是否真的包含字幕的轨道3,请使用mkvmerge -i input.mkv
。
然后,使用MP4Box将字幕重新添加到MP4文件中。
mp4box -add input.mp4 -add subtitles.srt -new output.mp4