Ошибка при использовании ffmpeg для преобразования видео в формат flv

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

Я пытаюсь конвертировать видео формата flv в mp4 с помощью ffmpeg.

Я проверил вопросы о конвертации из flv, такие как этот и этот, но это не помогло.

Команды, которые я выполнил:

ffmpeg -i input.flv -c:v libx264 output.mp4

также:

ffmpeg -i input.flv -c:v libx264 -crf 19 -strict experimental output.mp4

также:

ffmpeg -i input.flv -codec copy output.mp4

также:

ffmpeg -i input.flv -c copy -copyts output.mp4

также:

ffmpeg -i input.flv -vcodec libvpx -acodec libvorbis output.mp4

также:

ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -i input.flv -c:v libx264 output.mp4

Я получаю следующую ошибку из всех вышеперечисленных вариантов:

[flv @ 0xaaab0f4ec060] Несоответствие пакета 1703445535 198421 198574

[flv @0xaaab0f4ec060] Не удалось найти параметры кодека для потока 0 (Видео:
h264, none): не заданный размер. Рассмотрите возможность увеличения значения для
‘analyseduration’ (0) и ‘probesize’ (5000000) опций

Вход #0, flv, из ‘input.flv’: Продолжительность: 00:00:07.12, старт: 0.000000, битрейт:
16070 кбит/с Поток #0:0: Видео: h264, none, 1k tbr, 1k tbn

Выход #0, mp4, в ‘output.mp4’: Выходной файл #0 не содержит ни одного потока

Пожалуйста, обратите внимание, что я не могу воспроизвести видео с помощью vlc. Мне удалось воспроизвести видео после загрузки FLV-Media-Player

Я думаю, что моему видео нужно какое-то предварительное преобразование, но я не знаю, как это сделать.

ОБНОВЛЕНИЕ:

Используя инструмент MediaInfoOnline для обработки моего видео flv, я получил следующую информацию (с инструментом не было обнаружено ошибок):

Общее
Полное имя                            : input.flv
Формат                                   : Flash Video
Размер файла                                : 12.2 МБ
Общий битрейт режим                    : Постоянный
Видео
Формат                                   : AVC
Формат/Информация                              : Кодек видео высокого разрешения
Профиль формата                           : High@L4
Настройки формата                          : CABAC / 1 референсный кадр
Настройки формата, CABAC                   : Да
Настройки формата, референсные кадры        : 1 кадр
ID кодека                                 : 7
Режим битрейта                            : Постоянный
Битрейт                                 : 16.0 Мбит/с
Ширина                                    : 1920 пикселей
Высота                                   : 1080 пикселей
Соотношение сторон                     : 16:9
Режим частоты кадров                          : Переменный
Стандарт                                 : NTSC
Цветовая палитра                              : YUV
Субдискретизация цветности                       : 4:2:0
Глубина цвета                                : 8 бит
Тип сканирования                                : Прогрессивное
Диапазон цвета                              : Полный
Цветовые первичные                          : BT.709
Передающие характеристики                 : BT.709
Коэффициенты матрицы                      : BT.709

Мне наконец удалось найти рабочее решение. Сначала я установил flvmeta

$ git clone https://github.com/noirotm/flvmeta.git
$ cd flvmeta
$ cmake .
$ make
$ sudo make install

Затем я выполнил следующую команду:

$ flvmeta -t -f input.flv output_meta.flv

После этого следующая команда работает как ожидалось:

$ ffmpeg -i output_meta.flv -c:v libx264 -crf 19 -strict experimental output.mp4

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

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

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

Решение проблемы с конвертацией FLV в MP4

  1. Установка flvmeta:
    Вы правильно выбрали использовать flvmeta, который позволяет исправить метаданные FLV-файлов. Для установки flvmeta выполните следующие команды:

    git clone https://github.com/noirotm/flvmeta.git
    cd flvmeta
    cmake .
    make
    sudo make install
  2. Обновление метаданных видеофайла:
    После установки flvmeta, используйте следующую команду для обновления метаданных вашего FLV-файла:

    flvmeta -t -f input.flv output_meta.flv

    Этот шаг добавит необходимые метаданные, которые могут отсутствовать в вашем исходном файле.

  3. Конвертация в MP4 с помощью FFmpeg:
    После успешного создания нового FLV-файла с корректными метаданными, используйте следующую команду FFmpeg для конвертации в MP4:

    ffmpeg -i output_meta.flv -c:v libx264 -crf 19 -strict experimental output.mp4

Дополнительные рекомендации:

  • Проверка качества видео:
    Использование параметра -crf (Constant Rate Factor) позволяет контролировать качество конечного файла. Значение 19 обеспечит хорошее качество, но вы можете настроить его в диапазоне 18-23 в зависимости от ваших потребностей.

  • Использование параметров анализа:
    Если вы столкнетесь с подобными проблемами в будущем, можно попробовать увеличить параметры -analyzeduration и -probesize для FFmpeg, чтобы дать больше времени для анализа входной дорожки. Например:

    ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -i input.flv -c:v libx264 output.mp4
  • Проверка файла:
    Если видео не воспроизводится, рекомендуется использовать инструменты как MediaInfo, чтобы проверить детали вашего видеофайла.

Заключение

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

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

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