问题已解决,指定音频编解码器解决了我的问题...
ffmpeg -i filename.mkv -vcodec copy -acodec copy 1.mp4
-map 0
可以避免这种情况。-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)
对于那些使用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接受。
ffmpeg.exe -i input_file_name.mkv output_file_name.mp4
它可以转换为mp4格式,但是会使文件变得更大。:)