FFmpeg将MKV转换为MP4而不重新编码

32

我正在使用ffmpeg将容器从mkv转换为mp4,命令如下:

ffmpeg -i filename.mkv -vcodec copy 1.mp4

这是在不重新编码的情况下,我在从mkv容器转换为mp4时找到的最简单的命令。输出结果显示了相反的信息(如果我没有弄错的话)

这是输出的小截图:

FFmpeg Screenshot

它说流映射,#0:0 (264 (native)) -> 264 (libx264))。这是否意味着它正在从x264重新编码为libx264?我做错了什么?

任何帮助都将不胜感激...


把下面的程序相关内容从英语翻译成中文。只返回翻译后的文本:图片链接-https://i.stack.imgur.com/44I9Z.jpg - unknown
1
将来请注意,有关FFmpeg的问题应发布在SuperUser.com上。 - Brad
控制台输出是文本。它可以复制和粘贴。不需要图像来展示文本的一部分,这就像给某人写电子邮件,然后截取其中一半的屏幕截图,再发送该截图一样。 - llogan
4个回答

55

问题已解决,指定音频编解码器解决了我的问题...

ffmpeg -i filename.mkv -vcodec copy -acodec copy 1.mp4

42
请使用"-c copy"替代"-vcodec copy -acodec copy"。 - llogan
2
请注意,-i参数必须在-vcodec和-acodec参数之前。 - RyanR

10
将容器(例如MKV或AVI)使用FFmpeg转换为MP4时,只会保留一个音频和视频流 - 它会尝试选择输入文件中可用的“最佳”流并将其保存到输出文件中。通过提供-map 0可以避免这种情况。
Matroska文件通常包含FFmpeg不支持的格式的字幕,特别是SRT/Subrip或ASS/SSA格式,在MOV/MPEG容器中。它们可以使用-sn简单地删除,或者转换为本地格式,如mov_text。(您还可以使用过滤器将硬字幕烧录到视频流中。)
有时,使用启发式方法添加缺失信息可能会有所帮助。这可以通过使用-find_stream_info来激活,但我不确定是否应该默认使用此选项。

我假设构建配置不重要(-hide_banner),只有严重的问题应该记录到控制台中(-loglevel warning,或者可以使用:quiet | panic | fatal | error | warning | info(默认)| verbose | debug | trace)。

因此,一个相当通用的转换命令如下:

$ ffmpeg -find_stream_info -i input.mkv \
         -map 0 -codec copy -codec:s mov_text output.mp4 \
         -hide_banner -loglevel warning; \
  rm input.mkv

如果要在Windows系统的cmd中批处理多个文件并覆盖现有文件(-y),请使用for命令:

FOR /r %F IN (*.mkv) DO (@ffmpeg \
  -find_stream_info -i "%F" \
  -map 0 -codec copy -codec:s mov_text "%~pnF.mp4" \
  -hide_banner -loglevel warning -y)

1
还有一个要补充的是,你提供的命令会将所有流名称替换为“SoundHandler”。可以通过“-metadata:s:a:0 handler_name='' -empty_hdlr_name 1”来避免这种情况发生。这告诉ffmpeg不要使用默认的“SoundHandler”名称作为流名称,而是使用空字符串,这意味着采用默认/正常的流名称。 - FireEmerald

0

对于那些使用Windows并想要转换一个MKV文件目录的人,将此批处理文件放在同一目录中并执行:

@ECHO OFF

FOR %%F IN (*.mkv) DO (
    ffmpeg -i %%~nF.mkv -acodec copy -vcodec copy %%~nF.mp4
)

如果有其他人遇到相同的问题,这里提供一些背景信息:

我之前使用OBS录制了桌面视频,但是Sony Vegas无法接受mkv文件。我运行了上述批处理程序,对每个捕获的视频调用ffmpeg,生成的MP4文件可以被Sony Vegas接受。


-2
ffmpeg.exe -i input_file_name.mkv output_file_name.mp4

它可以转换为mp4格式,但是会使文件变得更大。:)


这比重新混音还糟糕。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接