Чтобы OpenCV VideoWriter работал согласованно на разных платформах для контейнера MP4 с кодировкой H264 - PullRequest
1 голос
/ 20 марта 2019

Я пытаюсь заставить OpenCV VideoWriter работать на всех платформах последовательно для контейнера MP4 с кодировкой H246.

Целевые платформы в порядке важности - Ubuntu, Raspbian, OSX

По сути, мой недостаток на данный момент заключается в том, что я не понимаю отношения кода FourCC (в качестве параметра к OpenCV VideoWriter) с бэкэндом FFMPEG и его требованиями. Мне интересно понять игру, а не обсуждать кусок кода.

То, что я хочу знать, это когда я указываю 'X264' как код FourCC, пытающийся записать файл x.MP4 (бэкэнд FFMPEG), и запрос направляется в FFMPEG, какие требования / зависимости должны удовлетворяться ОС для него к успеху.

Пока у меня есть мой стек Python, записывающий видеофайлы MP4 через Raspbian / Ubuntu / OSX, с взломом.

В моей установке Raspbian stretch я использую 0x00000021 в качестве кода fourCC. На Ubuntu (VM на OSX) и на OSX AVC1 работает.

Days of Googling доставлял только эти хаки, не очень хорошее понимание проблемы.

x264 в виде кода FourCC приводит к одному из - сбой, непереносимый видеофайл + раздражающее предупреждение FFMPEG.

Я пытаюсь докопаться до сути.

код,

    #self.__fourCC = cv2.VideoWriter_fourcc('x', '2', '6', '4')
    self.__fourCC = cv2.VideoWriter_fourcc('a', 'v', 'c', '1')
    if PlatformUtils.isRunningOnRaspberryPi():
        self.__fourCC = 0x00000021

У меня есть контроль над версией как OpenCV, так и FFMPEG (если требуется, GStreamer тоже). Я могу и построил их для Ubuntu / Raspbian.

...