ffmpeg从mkv到mp4的转换,无需重新编码

ffmpeg从mkv到mp4的转换,无需重新编码,ffmpeg,Ffmpeg,我正在使用ffmpeg通过以下命令将容器从mkv切换到mp4: ffmpeg -i filename.mkv -vcodec copy 1.mp4 这是我在从mkv容器转换到mp4时发现的最简单的命令,无需重新编码。另外说明的输出(如果我没有弄错的话) 这是输出的小屏幕截图: 其中表示流映射,#0:0(264(本机))->264(libx264))。这是否意味着它正在从x264重新编码到libx264?我做错了什么 感谢您的帮助…问题已解决,请指定音频编解码器以解决我的问题 ffmpeg -

我正在使用ffmpeg通过以下命令将容器从mkv切换到mp4:

ffmpeg -i filename.mkv -vcodec copy 1.mp4
这是我在从mkv容器转换到mp4时发现的最简单的命令,无需重新编码。另外说明的输出(如果我没有弄错的话)

这是输出的小屏幕截图:

其中表示流映射,#0:0(264(本机))->264(libx264))。这是否意味着它正在从x264重新编码到libx264?我做错了什么


感谢您的帮助…

问题已解决,请指定音频编解码器以解决我的问题

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

使用FFmpeg将容器(如MKV或AVI)重新移动到MP4,只会在输出文件的输入文件中保留一个音频和视频流,它会尝试选择可用的最佳音频和视频流。这可以通过以下方法避免

Matroska文件通常包含FFmpeg(尤其是SRT/Subrip或ASS/SSA)在MOV/MPEG容器中不支持的格式的字幕。它们可以简单地用
-sn
删除,也可以转换为本机格式,如
mov_text
。(你也可以。)

有时,通过使用启发式添加缺少的信息可能会有所帮助。这是用
-find\u stream\u info
激活的,但我不确定默认情况下是否应该使用它

我将假设构建的配置不需要知道(
-hide_banner
),只需要将严重问题记录到控制台(,或者:
安静
|
恐慌
|
致命
|
错误
|
警告
信息
(默认)|
详细
|
调试
|
跟踪

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

$ffmpeg-find_stream_info-i input.mkv\
-映射0-编解码器副本-编解码器:s mov_text output.mp4\
-隐藏_横幅-日志级别警告\
rm input.mkv
要在
cmd
中批处理Windows框中的多个文件并覆盖现有文件(
-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)

将此批处理文件扔到同一目录中并执行它。这应该可以做到:

@ECHO OFF

FOR %%F IN (*.mkv) DO (
    ffmpeg -i %%~nF.mkv -acodec copy -vcodec copy %%~nF.mp4
)
某些上下文,以防其他人面临相同的情况:


我以前使用OBS录制过我的桌面;索尼维加斯不接受mkv文件。我运行了上面的批处理,在每个捕获上调用ffmpeg,生成的MP4被Sony Vegas接受。

图像链接-将来,请注意,ffmpeg问题属于SuperUser.com。控制台输出是文本。它可以复制和粘贴。不需要一些文本的图像。这就像给某人写一封电子邮件,然后只截取其中的一半,然后发送。只需使用
-c copy
而不是
-vcodec copy-acodec copy
。还要注意-i参数必须位于-vcodec和-acodec参数之前。