cv2.VideoWriter с кодеком h.265

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

Я разрабатываю код для сохранения видео с веб-камеры, мне нужно сохранить одно и то же видео с 4 разными кодеками, но я не могу сохранить в h.265, у меня возникает следующая ошибка:

[ERROR:[email protected]] global cap_ffmpeg_impl.hpp:3133 open Не удалось найти кодировщик для codec_id=173, ошибка: Кодировщик не найден
[ERROR:[email protected]] global cap_ffmpeg_impl.hpp:3211 open VIDEOIO/FFMPEG: Не удалось инициализировать VideoWriter", также приведен код, который я использую для создания cv2.VideoWriter:

Я получаю эту ошибку только для h.265, остальные кодеки работают отлично.

out = []
out.append(cv2.VideoWriter("output_30_mp4v.mp4", cv2.VideoWriter_fourcc(*"mp4v"), 30.0, (width, height)))
out.append(cv2.VideoWriter("output_30_xvid.avi", cv2.VideoWriter_fourcc(*"xvid"), 30.0, (width, height)))
out.append(cv2.VideoWriter("output_30_mjpeg.avi", cv2.VideoWriter_fourcc(*"MJPG"), 30.0, (width, height)))
out.append(cv2.VideoWriter("output_30_h265.mp4", cv2.VideoWriter_fourcc(*"hev1"), 30.0, (width, height)))

Кто-нибудь имеет идею, что я могу сделать?


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

Проблема с кодеком h.265 в OpenCV: Решение и рекомендации

В процессе разработки приложения для записи видео с веб-камеры вы столкнулись с проблемой при использовании кодека h.265 (HEVC). Ошибка, которую вы получаете, указывает на то, что видеопроцессор не может найти соответствующий кодировщик для этого кодека. Давайте разберем, как можно устранить эту проблему и корректно использовать h.265 в OpenCV.

1. Причины проблемы

Ошибка [ERROR:... Encoder not found] указывает на то, что кодировщик h.265 не доступен в вашей среде OpenCV. Основные причины могут включать следующее:

  • Отсутствие необходимого кодека в FFmpeg: OpenCV использует FFmpeg для работы с видеофайлами, и если FFmpeg не собран с поддержкой h.265, вы не сможете использовать этот кодек.
  • Версия OpenCV: Убедитесь, что вы используете актуальную версию OpenCV, так как более старые версии могут не поддерживать некоторые кодеки.
  • Несоответствие названий кодеков: Кодек h.265 может обозначаться разными способами в зависимости от сборки FFmpeg.

2. Проверка наличия кодека

Для проверки доступных кодеков в вашей сборке FFmpeg выполните следующую команду в терминале:

ffmpeg -codecs | grep hevc

Если вывод показывает наличие кодека hevc или libx265, это значит, что кодек доступен. Если нет, вам потребуется переустановить FFmpeg с поддержкой h.265.

3. Установка FFmpeg с поддержкой h.265

Если h.265 отсутствует, вам нужно будет установить или пересобрать FFmpeg. Для пользователей Ubuntu это можно сделать следующими шагами:

sudo apt update
sudo apt install -y ffmpeg

Для компиляции с поддержкой h.265 вы можете использовать следующие инструкции:

  1. Установите необходимые зависимости:

    sudo apt install -y yasm libx265-dev 
  2. Скачайте FFmpeg:

    git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
  3. Перейдите в директорию FFmpeg и выполните сборку:

    cd ffmpeg
    ./configure --enable-gpl --enable-nonfree --enable-libx265
    make
    sudo make install

После этого проверьте снова доступные кодеки.

4. Изменение кода

Ваш код для создания объекта VideoWriter выглядит корректно. Однако, убедитесь, что вы используете правильный FourCC код. Для h.265 это может быть hevc или libx265. Попробуйте изменить ваш код так:

out.append(cv2.VideoWriter("output_30_h265.mp4", cv2.VideoWriter_fourcc(*"hevc"), 30.0, (width, height)))

Или используя альтернатива:

out.append(cv2.VideoWriter("output_30_h265.mp4", cv2.VideoWriter_fourcc(*"libx265"), 30.0, (width, height)))

5. Тестирование

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

Заключение

Использование кодека h.265 в OpenCV может вызывать сложности, связанные с отсутствием поддержки в вашей текущей версии FFmpeg. Однако, следуя шагам, описанным выше, вы сможете успешно интегрировать эту функциональность и обойти возникшие ошибки. Удачи в разработке вашего проекта!

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

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