将所有流从一个 mkv 容器复制到另一个 mkv 容器时,原始封面缩略图流会被复制,但不会被可视化

将所有流从一个 mkv 容器复制到另一个 mkv 容器时,原始封面缩略图流会被复制,但不会被可视化

因此,为了简化这个问题的主题,我使用了一个简单的命令,它只复制所有原始流并将其副本放入新的 mkv 容器中。

原始的 cover.png 流仍在新容器中。但是,虽然原始 mkv 文件的封面显示在 Windows 文件资源管理器中,但在 Windows 文件资源管理器中查看通过复制其流生成的新 mkv 文件时,不会显示其封面。

我不确定我是否做错了什么,或者这是 FFmpeg 部分的一个错误,或者这只是不可能的事情。我想到了一种绕过这个限制的方法,可以先将封面提取到单独的 png 文件中,然后将其作为新封面添加到新的 mkv 文件中。但是,只有在没有合适的方法直接复制封面时,我才会选择这种方法。

为了轻松复制问题,这里有两个不同的命令用于获取带有工作封面缩略图的 mkv 视频(其中一个使用 yt-dlp 和 FFmpeg,另一个仅使用 FFmpeg)。

yt-dlp.exe --embed-thumbnail --convert-thumbnails png --embed-metadata -o hasthumb.mkv URL

ffmpeg -i download.mkv -map 0:V -map 0:a -c copy -attach cover.png -disposition:v:1 attached_pic -metadata:s:2 mimetype=image/png hasthumb2.mkv

这是我用来将流复制到新的 mkv 文件中的命令,生成的文件的封面缩略图不起作用

ffmpeg -i hasthumb.mkv -map 0 -c copy output.mkv 

在最后一个示例中,视频、音频和图像缩略图流都被复制,但缩略图并未显示在 Windows 文件资源管理器中

答案1

因此,虽然我还没有弄清楚如何正确地执行此操作,或者是否可以仅使用一个命令来完成此操作,但我已经弄清楚了如何使用两个命令分两个步骤来完成此操作

首先,我们从原始视频中提取图像:

ffmpeg -i video.mkv -map 0:v -map -0:V -c copy cover.png

然后,我们将其再次附加到视频中,并删除旧附加的图像:

ffmpeg -i video.mkv -map 0:V -map 0:a -c copy -attach cover.png -metadata:s:t mimetype=image/png newvideo.mkv

对于应该只是简单地复制和粘贴所有流的事情来说,这似乎还是有点太复杂了。因此,如果有人能找到更好的方法在一个命令行中完成它,我仍然会很感激。

相关内容