如何防止 FFmpeg 用 SoundHandler 替换所有音频流名称?

如何防止 FFmpeg 用 SoundHandler 替换所有音频流名称?

我正在使用 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 将元数据从一个文件复制到另一个文件,你可能需要:

  1. 用于-map_metadata 0复制全局元数据;
  2. 使用-map_metadata:s:v 0:s:v-map_metadata:s:a 0:s:a复制视频和音频流元数据;
  3. 用于-movflags use_metadata_tags强制写入元数据,因为您的输出是 MOV 文件。

相关内容