Я пытаюсь заставить 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.