我正在使用ffmpeg通过此命令将容器从mkv切换到mp4:
ffmpeg -i filename.mkv -vcodec copy 1.mp4
这是我在没有重新编码的情况下从mkv容器转换为mp4时发现的最简单的命令。输出另有说明(如果我没有记错的话)
这是输出的小屏幕截图:
它表示流映射,#0:0(264(本机)) - > 264(libx264))。这是否意味着它从x264重新编码为libx264?我做错了什么?
感谢任何帮助...
答案 0 :(得分:14)
问题解决了,指定音频编解码器解决了我的问题...
ffmpeg -i filename.mkv -vcodec copy -acodec copy 1.mp4
答案 1 :(得分:0)
重塑容器,例如带有mpmpeg的MKV或AVI到MP4,只会保留一个-尝试从输出文件中的输入文件中选择一个 best 可用的音频和视频流。可以通过提供-map 0
来避免这种情况。
Matroska文件通常包含FFmpeg,尤其是MOV / MPEG容器不支持的格式的字幕。 SRT / Subrip或ASS / SSA。它们可以简单地通过-sn
删除,也可以转换为mov_text
之类的本机格式。 (您也可以burn hard subtitles into a video stream with filters。)
有时,使用启发式方法添加丢失的信息可能会有所帮助。这是通过-find_stream_info
激活的,但是我不确定是否默认使用它。
我将假定已构建的配置不重要(-hide_banner
),并且仅应将严重问题记录到控制台(-loglevel warning
,或者:quiet
| {{1} } | panic
| fatal
| error
| warning
(默认)| info
| verbose
| {{ 1}})。
因此,一个相当通用的转换命令如下所示:
debug
要在trace
内的Windows框中批量处理多个文件并覆盖现有文件($ ffmpeg -find_stream_info -i input.mkv \
-map 0 -codec copy -codec:s mov_text output.mp4 \
-hide_banner -loglevel warning; \
rm input.mkv
),请使用cmd
:
-y
答案 2 :(得分:-1)
将此批处理文件扔到同一目录中并执行。这应该可以解决问题:
@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接受了。