Сохраните видео с помощью opencv с кодеком H264.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сохраните видео с помощью opencv с кодеком H264.

Сообщение Anonymous »


Это выше моего понимания, и я не знаю, что делаю неправильно. Я читал, что для того, чтобы мое видео было в кодеке h265, мне нужно собрать opencv из исходного кода. Что ж, я сделал это, и я также сделал это для компилятора ffmpeg Docker ffmpeg. Но я пытаюсь запустить свое приложение с помощью Docker, но все еще не могу справиться с ошибкой ffmpeg cap_ffmpeg_impl.hpp:3018 open Не удалось найти кодировщик для codec_id=27, ошибка: кодировщик не найден .

Файл Docker:

ИЗ Python:3.10.12-slim-buster ЗАПУСТИТЬ обновление apt-get # Устанавливаем рабочий каталог в контейнере РАБОЧИЙ ПАРАМЕТР/приложение # Копируем код приложения в контейнер КОПИРОВАТЬ. . # Устанавливаем двоичные файлы ffmpeg и ffprobe ЗАПУСК mv ffmpeg /usr/local/bin ЗАПУСК mv ffprobe /usr/local/bin # Соберите opencv из исходного кода, чтобы иметь возможность использовать кодек h264. ВЫПОЛНИТЕ apt-get install -y cmake \ gcc \ г++ \ python3-numpy \ libavcodec-dev \ libavformat-dev \ libswscale-dev \ libgstreamer-plugins-base1.0-dev \ libgstreamer1.0-dev \ libpng-dev \ libjpeg-dev \ libopenexr-dev \ libtiff-dev \ libwebp-dev \ мерзавец ЗАПУСК git clone --глубина 1 --ветвь 4.8.0 https://github.com/opencv/opencv.git && \ git clone --глубина 1 --ветвь 4.8.0 https://github.com/opencv/opencv_contrib.git && \ компакт-диск opencv && \ mkdir построить && \ сборка компакт-диска && \ cmake -D OPENCV_EXTRA_MODULES_PATH=/app/opencv_contrib/modules ../ && \ make -j"$(nproc)" && \ сделать установку # Удалить проект opencv github ВЫПОЛНИТЬ rm -r opencv # Удалить проект opencv_contrib на github ВЫПОЛНИТЬ rm -r opencv_contrib # Не позволяет Python записывать файлы pyc на диск ENV PYTHONDONTWRITEBYTECODE 1 # Предотвращает Python буферизацию stdout и stderr ENV PYTHONНЕБУФЕРИРОВАННЫЙ 1 # Установите зависимости Python RUN pip install --upgrade pip ЗАПУСТИТЬ pip install --no-cache-dir -r require.txt # Установите netcat, чтобы знать, когда работает RabbitMQ ЗАПУСК apt-get install -y netcat # Устанавливаем права на выполнение ЗАПУСК chmod +x точка входа.sh ЗАПУСК chmod +x web_start.sh ТОЧКА ВХОДА [./entrypoint.sh"] Я выполнил команду ./ffmpeg -i 57b3e3a7-ad22-469d-a7ff-cf76ba780664 -vcodec libx264 -acodec aac output.mp4, чтобы проверить ffmpeg, и вот результат.

версия ffmpeg N-112515-gba6a5e7a3d Авторские права (c) 2000-2023 принадлежат разработчикам FFmpeg построен с помощью gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609 конфигурация: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-libs=-static --extra-cflags=--static --extra-cflags=-I/root/ffmpeg_build /include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/root/bin --enable-gpl --enable-libfdk-aac -- Enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 58.27.100/58.27.100 libavcodec 60.30.102/60.30.102 libavformat 60.15.101/60.15.101 libavdevice 60.2.101/60.2.101 libavfilter 9.11.100/9.11.100 libswscale 7.4.100/7.4.100 libswresample 4.11.100/4.11.100 libpostproc 57. 2.100/57. 2.100 Ввод #0, mov,mp4,m4a,3gp,3g2,mj2, из «57b3e3a7-ad22-469d-a7ff-cf76ba780664»: Метаданные: major_brand: qt минорная_версия: 0 совместимые_бренды: qt Creation_time : 2023-10-30T15:34:32.000000Z com.apple.quicktime.make: Apple com.apple.quicktime.model: iPhone 13 Pro Max com.apple.quicktime.software: 16,6 com.apple.quicktime.creationdate: 2023-10-30T11:34:32-0400 Длительность: 00:00:03.60, начало: 0.000000, битрейт: 16264 кб/с. Поток № 0:0[0x1](und): Видео: h264 (высокий) (avc1 / 0x31637661), yuv420p(tv, bt709, Progressive), 1920x1080, 16120 кбит/с, 29,99 кадров в секунду, 29,97 бит в секунду, 600 бит в секунду (по умолчанию). ) Метаданные: Creation_time : 2023-10-30T15:34:32.000000Z handler_name : Основное медиа-видео идентификатор_вендора: [0][0][0][0] кодер: H.264 Побочные данные: displaymatrix: поворот на -90,00 градусов Поток № 0:1[0x2](und): Аудио: aac (LC) (mp4a / 0x6134706D), 44100 Гц, моно, fltp, 89 кбит/с (по умолчанию). Метаданные: Creation_time : 2023-10-30T15:34:32.000000Z handler_name: Core Media Audio идентификатор_вендора: [0][0][0][0] Поток № 0:2[0x3](und): Данные: нет (mebx/0x7862656D), 0 Кбит/с (по умолчанию) Метаданные: Creation_time : 2023-10-30T15:34:32.000000Z handler_name : Метаданные основного мультимедиа Поток № 0:3[0x4](und): Данные: нет (mebx/0x7862656D), 0 Кбит/с (по умолчанию). Метаданные: Creation_time : 2023-10-30T15:34:32.000000Z handler_name : Метаданные основного мультимедиа Поток № 0:4[0x5](und): Данные: нет (mebx/0x7862656D), 34 Кбит/с (по умолчанию). Метаданные: Creation_time : 2023-10-30T15:34:32.000000Z handler_name : Метаданные основного мультимедиа Потоковое отображение: Поток #0:0 -> #0:0 (h264 (собственный) -> h264 (libx264)) Поток №0:1 -> №0:1 (aac (собственный) -> aac (собственный)) Нажмите [q], чтобы остановить, [?] для помощи. [libx264 @ 0x5ae4c00] с использованием возможностей процессора: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2 [libx264 @ 0x5ae4c00] профиль Высокий, уровень 4.0 [libx264 @ 0x5ae4c00] 264 — ядро ​​148 r2643 5c65704 — кодек H.264/MPEG-4 AVC — авторское лево 2003–2015 — http://www.videolan.org/x264.html — параметры: cabac=1 ref=3 разблокировать =1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mix_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 мертвая зона=21,11 fast_pskip= 1 chroma_qp_offset=-2 Threads=30 Lookahead_threads=5 Sliced_threads=0 nr=0 Decimate=1 Interlaced=0 Bluray_Compat=0 Constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 Direct=1 Weightb=1 Open_GoP=0 Weightp=2 keyint=250 keyint_min=25 Scenecut=40 Intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Выход № 0, mp4, в «output.mp4»: Метаданные: major_brand: qt минорная_версия: 0 совместимые_бренды: qt com.apple.quicktime.creationdate: 2023-10-30T11:34:32-0400 com.apple.quicktime.make: Apple com.apple.quicktime.model: iPhone 13 Pro Max com.apple.quicktime.software: 16,6 кодировщик: Lavf60.15.101 Поток № 0:0(und): видео: h264 (avc1 / 0x31637661), yuv420p(tv, bt709, Progressive), 1080x1920, q=2-31, 29,97 кадров в секунду, 30 тыс. битов (по умолчанию) Метаданные: Creation_time : 2023-10-30T15:34:32.000000Z handler_name : Основное медиа-видео идентификатор_вендора: [0][0][0][0] кодировщик: Lavc60.30.102 libx264 Побочные данные: cpb: битрейт макс/мин/сред: 0/0/0 размер буфера: 0 vbv_delay: Н/Д displaymatrix: поворот -0,00 градусов Поток №0:1(und): Аудио: aac (LC) (mp4a / 0x6134706D), 44100 Гц, моно, fltp, 69 кбит/с (по умолчанию). Метаданные: Creation_time : 2023-10-30T15:34:32.000000Z handler_name: Core Media Audio идентификатор_вендора: [0][0][0][0] кодировщик: Lavc60.30.102 aac [out#0/mp4 @ 0x5ae3440] видео: 2773 КБ аудио: 31 КБ субтитры: 0 КБ другие потоки: 0 КБ глобальные заголовки: 0 КБ накладные расходы на мультиплексирование: 0,157082% кадр= 108 кадров в секунду= 74 q=-1.0 Lsize= 2809кБ время=00:00:03.59 битрейт=6393.3кбит/с скорость=2.47x [libx264 @ 0x5ae4c00] кадр I:4 Avg QP:22.27 размер: 48408 [libx264 @ 0x5ae4c00] кадр P:104 Avg QP:24,58 размер: 25440 [libx264 @ 0x5ae4c00] мб I I16..4: 10,3% 82,9% 6,8% [libx264 @ 0x5ae4c00] mb P I16..4: 4,6% 18,1% 0,8% P16..4: 40,3% 6,9% 4,1% 0,0% 0,0% пропуск:25,3% [libx264 @ 0x5ae4c00] Преобразование 8x8 внутри: 78,0% между: 85,0% [libx264 @ 0x5ae4c00] с кодом y,uvDC,uvAC внутри: 44,9% 29,1% 0,1% между: 22,5% 23,3% 0,0% [libx264 @ 0x5ae4c00] i16 v,h,dc,p: 17% 49% 14% 19% [libx264 @ 0x5ae4c00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 25% 37% 3% 3% 5% 3% 2% 4% [libx264 @ 0x5ae4c00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 30% 17% 3% 4% 8% 3% 2% 3% [libx264 @ 0x5ae4c00] i8c dc,h,v,p: 67% 20% 12% 0% [libx264 @ 0x5ae4c00] Взвешенные P-кадры: Y:1,9% UV:0,0% [libx264 @ 0x5ae4c00] ссылка P L0: 61,8% 10,4% 18,3% 9,4% 0,2% [libx264 @ 0x5ae4c00] кб/с: 6303.40 [aac @ 0x68c9880] Qavg: 119.986 В полученном видео использовался кодек h264. На мой взгляд, проблема в opencv. По сути, это то, что я делаю в своем коде на Python:

cap = cv2.VideoCapture(видео) Shoot_frames = [] пока правда: ret, img = cap.read() если не вернуть: перерыв если какое-то_условие: Shoot_frames.append (изображение) если len(shoot_frames) > 41: out1 = cv2.VideoWriter(upload_path(name, dir), cv2.VideoWriter_fourcc(*'avc1'), int(fps), (int(ширина), int(высота)), True) для Shoot_frame в Shoot_frames: out1.write(shoot_frame) out1.release() Shoot_frames = [] Может кто-нибудь сказать мне, что я делаю не так?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • IOS - webrtc One Way Audio только с кодеком Opus
    Anonymous » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • MPEGTS JS AVC1.640028 Проблема с кодеком с BT.709
    Anonymous » » в форуме Javascript
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\src\.cpp:660: ошибка: (-215: утверждение не вып
    Anonymous » » в форуме Python
    0 Ответы
    129 Просмотры
    Последнее сообщение Anonymous
  • Как очень быстро кодировать изображения JPEG в H264 (преобразовать изображения в видео)
    Anonymous » » в форуме Android
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • RTSP-клиент для аудио/видео потока H264
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»