Ответ 1
Необходимо правильно указать поток
Пример:
ffmpeg -y -i frames/%06d.png -c:v huffyuv -pix_fmt rgb24 -attach mybinaryfile \
-metadata:s:t mimetype=application/octet-stream testout.mkv
Эта команда установит метаданные для всех потоков вложения (t
) (s
). Если у вас несколько вложений, а метаданные разные, тогда вам нужно быть более конкретными, например:
-metadata:s:t:0 mimetype=text/plain \
-metadata:s:t:1 mimetype=application/gzip
Это установит метаданные для первого вложения как mimetype=text/plain
, а второе - как mimetype=application/gzip
. Помните, что индекс потока начинается с 0
, поэтому первый пар помечен 0
.
Что случилось с вашей командой
Используя -metadata:s:2
(который, по-видимому, был скопирован дословно из документации), задает метаданные для третьего потока, независимо от типа потока (поскольку спецификатор отсутствует), но ваш вывод содержит только два потока.
Приложение: Нет
Вы можете увидеть что-то вроде этого:
Output #0, matroska, to 'output.mkv':
...
Stream #0:1: Attachment: none
Metadata:
filename : 2ceb-1916-56bb-3e10
mimetype : application/octet-stream
Attachment: none
не означает, что вложения нет, но нет связанного с ним формата, поэтому его можно игнорировать.
Также см.
Спецификаторы потока и ffmpeg
документация на -attach
, -metadata
и -map_metadata
для более подробной информации.