我正在使用 FFmpeg 将视频容器从 mkv 更改为 mov,代码如下:
ffmpeg -find_stream_info -probesize 84M -i input_file.mkv
-map 0:v -map 0:a -map -0:s -codec copy output_file.mov -loglevel error;
但转换后,所有音频流均获得“SoundHandler”作为名称/处理程序。 结果 我怎样才能保留原来的名字? 这就是我想要得到的
我尝试添加这个:
-metadata:s:a handler_name='' -empty_hdlr_name 1
它应该告诉 FFmpeg 不要使用默认的“SoundHandler”名称,而是使用一个空字符串,这意味着它应该采用原始流名称。但它只能正确获取第一个音频流,其他流都获得相同的处理程序,就好像每个流都是第一个一样……有什么解决办法吗?
答案1
用 SoundHandler 替换所有音频流名称?
它不是替换名称 – 文本“SoundHandler”进入不同的元数据字段而不是标题。问题实际上是title
元数据字段根本没有被复制。
根据使用 ffmpeg 将元数据从一个文件复制到另一个文件,你可能需要:
- 用于
-map_metadata 0
复制全局元数据; - 使用
-map_metadata:s:v 0:s:v
和-map_metadata:s:a 0:s:a
复制视频和音频流元数据; - 用于
-movflags use_metadata_tags
强制写入元数据,因为您的输出是 MOV 文件。