Код FFMPEG x264 (fourcc = 0x21) c не работает с OpenCV - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь использовать кодирование в формате mp4 (fourcc = 0x21) в OpenCV 3.2, но безуспешно. Возможно, у меня проблема с настройкой Ubuntu 18.04, но в настоящее время у меня заканчиваются идеи, как это исправить. Сначала я перекомпилировал FFMPEG с поддержкой x264. Чем перекомпилировать OpenCV (с contrib и OPENCV_ENABLE_NONFREE = ON, WITH_FFMPEG = ON). Это все еще не работает.

Я не могу использовать четыре cc, отличных от 0x21. Я имею в виду .. Я не могу использовать другой код c.

Пример:

>>> import cv2
>>> out = cv2.VideoWriter('output.mp4', 0x21, 20.0, (640,480))
OpenCV: FFMPEG: tag 0x00000021/'!???' is not found (format 'mp4 / (null)')'

Однако, это работает нормально (остальные четыре cc, код c):

>>> out = cv2.VideoWriter('output.mp4',0x31637661 , 20.0, (640,480))

OpenCV скомпилирован с поддержкой FFMPEG (версия 3.2), cmake config:

Video I/O:
DC1394 1.x:                  NO
DC1394 2.x:                  YES (ver 2.2.5)
FFMPEG:                      YES
  avcodec:                   YES (ver 57.107.100)
  avformat:                  YES (ver 57.83.100)
  avutil:                    YES (ver 55.78.100)
  swscale:                   YES (ver 4.8.100)
  avresample:                YES (ver 3.7.0)

Сборка FFMPEG с поддержкой x264:

ffmpeg -version
ffmpeg version N-96891-g60b1f85 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: --prefix=/home/user/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/home/user/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil      56. 42.100 / 56. 42.100
libavcodec     58. 73.102 / 58. 73.102
libavformat    58. 39.101 / 58. 39.101
libavdevice    58.  9.103 / 58.  9.103
libavfilter     7. 77.100 /  7. 77.100
libswscale      5.  6.100 /  5.  6.100
libswresample   3.  6.100 /  3.  6.100
libpostproc    55.  6.100 / 55.  6.100

FFMPEG x264 простой тест преобразования работает:

ffmpeg -i in.mp4 -vcodec libx264 -f mp4 out.mp4y
ffmpeg version N-96891-g60b1f85 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: --prefix=/home/user/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/home/user/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil      56. 42.100 / 56. 42.100
libavcodec     58. 73.102 / 58. 73.102
libavformat    58. 39.101 / 58. 39.101
libavdevice    58.  9.103 / 58.  9.103
libavfilter     7. 77.100 /  7. 77.100
libswscale      5.  6.100 /  5.  6.100
libswresample   3.  6.100 /  3.  6.100
libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'in.mp4':
Metadata:
   major_brand     : isom
   minor_version   : 512
   compatible_brands: isomiso2avc1mp41
   encoder         : Lavf57.83.100
Duration: 00:00:10.00, start: 0.000000, bitrate: 3826 kb/s
 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x960, 3825 kb/s, 10 fps, 10 tbr, 10240 tbn, 20 tbc (default)
Metadata:
  handler_name    : VideoHandler
File 'out.mp4y' already exists. Overwrite? [y/N] y
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...