Я пытаюсь использовать VideoCriter OpenCV для записи и кодирования видео MP4. Я успешно заставил VideoWriter работать с форматом AVI (передавая CV_FOURCC ('M', 'J', 'P', 'G')), но CV: VideoWriter.open () возвращает False для каждого варианта MP4, который у меня есть. пытался. Я не супер привереда, я просто хочу, чтобы один вариант MP4 работал.
Я пишу на C ++ в Ubuntu 16.04 с OpenCV 3.4.1. Я пробовал что-то вроде того, чтобы убедиться, что FFmpeg установлен (наверняка, похоже), и загрузить и собрать openH264 (казалось бы, никакого эффекта, хотя я не уверен, как указать openCV на созданный мной openH264).
#include <opencv2/opencv.hpp>
class videoRecorder
{
...
void videoRecordingLoop();
...
cv::VideoWriter m_videoWriter;
};
void videoRecorder::videoRecordingLoop()
{
if (m_firstPass)
{
m_firstPass = false;
m_videoWriter.open(fileWithMP4Extension,
CV_FOURCC('M','P','4','2'),
m_frames_per_second,
m_frame_size);
}
...
m_videoWriter.write(frame);
}
Для параметра CV_FOURCC я пробовал MP42, MP4V, mp4v, X264, H264 и, возможно, некоторые другие. Все это приводит к тому, что CV: VideoWriter.open () возвращает False и не создает никакого выходного файла. Только при использовании MJPG и передаче имени файла .avi open () возвращает True (возможно, есть и другие устаревшие кодеки, которые также будут работать, но это ни здесь, ни там - я упоминаю, что .avi / MJPG служит доказательством того, что остальныемоего кода и моей установки openCV и так далее работают должным образом.