ffmpeg — скопировать прикреплённое изображение обложки (cover.jpg) видеофайла во время кодирования?

Вопрос или проблема

Я пытаюсь закодировать видео с помощью ffmpeg, к которому прикреплён файл обложки. Этот файл обложки также должен попасть в закодированное видео.

Я могу сделать это с помощью mkvextract attachments movie.mkv 1 && <долгая команда кодирования ffmpeg> && mkvpropedit movie_new.mkv --add-attachment cover.jpg. Оба, старый и новый, отображаются в mediainfo с двумя строками

Cover                                    : Yes
Attachments                              : cover.jpg

Но когда я пытаюсь интегрировать это в команду ffmpeg, ffmpeg настаивает на обнаружении второго видеопотока и либо отбрасывает его, либо кодирует его как второй видеопоток, что полностью сбивает с толку плеер.

Что я пробовал:
-map 0:t –> ошибка, не могу найти вложения; -map 0:t? –> выполняется и кодирует второй видеопоток

Все виды комбинаций -map, даже тест прикрепления cover.jpg при наличии видео movie_new.mkv без обложки, вместе с отдельным cover.jpg и ffmpeg -i movie_new.mkv -i cover.jpg ... -map 1 -map 0 -c copy -disposition:0 attached_pic не работают.

Какие-нибудь идеи?

Исходный файл, похоже, имеет повреждённое вложение. Во время попыток конвертации заголовок ffmpeg (или ffprobe в общем) показывает:

 Stream #0:7: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 640x360 [SAR 96:96 DAR 16:9], 90k tbr, 90k tbn (attached pic)
      Metadata:
        filename        : cover.jpg
        mimetype        : image/jpeg

тогда как для созданного примера видео по предложению @rotem это

 Stream #0:1: Attachment: none
      Metadata:
        filename        : cover.jpg
        mimetype        : image/jpg

Последнее вложение работает с -map 0:t, первое – нет, так как вложение не распознаётся. Возможно ли это исправить с помощью команды ffmpeg?

Ответ или решение

Чтобы решить проблему интеграции обложки к видео-файлу с помощью FFmpeg, важно учитывать несколько ключевых аспектов—включение ненужного второго видеопотока, правильное назначение обложки и ее формат. Давайте рассмотрим, как вы можете справиться с этой задачей.

Подход к решению

1. Оценка состояния видео

Во-первых, вы упомянули о проблеме с извлечением обложки, которая может быть некорректно закодирована. FFmpeg распознает вашу обложку как видео поток (attached pic), что может вызвать конфликты, когда вы пытаетесь ее снова добавить.

2. Проверка формата входного файла

Проверяемый вами файл имеет заголовок, который указывает на то, что FFmpeg видит обложку как отдельный поток. Необходимо убедиться, что при создании нового файла обложка не будет восприниматься как отдельный видеопоток.

3. Использование команд FFmpeg

Для правильного добавления обложки в конечный файл можно использовать следующую команду:

ffmpeg -i исходное_видео.mkv -i cover.jpg -map 0 -map 1 -c copy -disposition:1 attached_pic movie_new.mkv

Пояснение о каждом флаге

  • -i исходное_видео.mkv: Указывает входной видеофайл.
  • -i cover.jpg: Указывает файл обложки.
  • -map 0: Используем все потоки из исходного видео.
  • -map 1: Добавляем обложку как новый поток.
  • -c copy: Копируем все потоки без перекодирования.
  • -disposition:1 attached_pic: Указываем, что поток обложки является рисунком для обложки.

Потенциальные проблемы и их решения

  • Некорректное обнаружение обложки: Если FFmpeg все равно не распознает обложку, возможно, стоит использовать другую обложку для тестирования, чтобы увериться, что проблема не в исходном файле.
  • Обработка потоков: Если у вас все еще возникают конфликты с неподходящими видеопотоками, вы можете использовать -map для явного выбора нужных потоков.

Заключение

Если предложенная команда не привела к желаемому результату, это может указывать на несовместимость кодеков или другие внутренние ошибки в бурном виде фреймов. В таком случае вы можете попробовать перекодировать ваш исходный файл в другой формат перед добавлением обложки.

Убедитесь, что вы используете последнюю версию FFmpeg, так как новые обновления могут улучшить поддержку работы с вложениями и общую производительность.

Следуя этим рекомендациям, вы сможете успешно интегрировать обложку в ваше видео.

Оцените материал
Добавить комментарий

Капча загружается...