Надо сконвертировать mjpeg (mp4 файл, где одни jpeg'и). Исходный файл получен с помощью opencv, соотв. он пишет jpeg (mp4v),
т.е. либо минимальное сжатие, либо просто плюхает jpeg фреймы как есть. Судя по всему, h264 opencv не использует из-за лицензии.
Соотв. в пост-проценссинге уменьшаю файл. На данный момент в 20 секунд, 15 fps, имеет размер 50Мб, после этой команды
Здравствуйте, sergey2b, Вы писали:
S>под какой OS вы пишите ? под вин ffmpeg для opencv уже прикомпилированный
Пока под вин, потом ubunta. S>под линук придеться собирать самому тынц
S>можно использовать флаг cv::CAP_FFMPEG при открытии VideoWriter writer; S>есть в примерах к opencv
Ну он там по умолчанию для mp4 файлов.
S>судя повсему аудио у вас нет S>можно писать при помощи ffmpeg тынц
Аудио нету. А в чем смысл этой ссылки и кода? Кстати, я использую обертку на дотнет, возможно будут проблемы.
Возможно вы правы , могу завтра посмотреть исходник opencv
но тогда надо объяснить почему opencv под linux не включает себя ffmpeg который по умолчанию
Здравствуйте, Sharov, Вы писали:
S>т.е. либо минимальное сжатие, либо просто плюхает jpeg фреймы как есть. Судя по всему, h264 opencv не использует из-за лицензии.
Чтобы OpenCV мог h.264 под Windows, надо ему подложить openh264-1.8.0-win64.dll. Просто найти собранную, скачать и подложить рядом. Туда же opencv_ffmpeg*.dll, которая скачивается, когда делаешь cmake configure
Здравствуйте, sergey2b, Вы писали:
S>Возможно вы правы , могу завтра посмотреть исходник opencv S>но тогда надо объяснить почему opencv под linux не включает себя ffmpeg который по умолчанию
Я всегда сам собираю себе OpenCV и сам руками включаю поддержку ffmpeg и gstreamer.
Здравствуйте, Nuzhny, Вы писали:
N>Чтобы OpenCV мог h.264 под Windows, надо ему подложить openh264-1.8.0-win64.dll. Просто найти собранную, скачать и подложить рядом. Туда же opencv_ffmpeg*.dll, которая скачивается, когда делаешь cmake configure
Что-то не получается, по итогу файл 0 длины. Содержимое папки x64:
openh264-2.4.0-win64.dll
OpenCvSharpExtern.dll
opencv_videoio_ffmpeg490_64.dll
Часть вывода Cv2.GetBuildInformation():
Video I/O:
DC1394: NO
FFMPEG: YES (prebuilt binaries)
avcodec: YES (58.134.100)
avformat: YES (58.76.100)
avutil: YES (56.70.100)
swscale: YES (5.9.100)
avresample: YES (4.0.0)
GStreamer: NO
DirectShow: YES
Media Foundation: YES
DXVA: YES
Пробовал как тут-- безрезультатно.
На SO где-то читал, что без специальной пересборки ffmpeg h264 не взлетит.
Здравствуйте, sergey2b, Вы писали:
S>Возможно вы правы , могу завтра посмотреть исходник opencv S>но тогда надо объяснить почему opencv под linux не включает себя ffmpeg который по умолчанию
Вероятно, что бы был выбор между gst и ffmpeg. Там проблемы с проприетарным h264.
Здравствуйте, Sharov, Вы писали:
S>Здравствуйте, Nuzhny, Вы писали:
N>>Чтобы OpenCV мог h.264 под Windows, надо ему подложить openh264-1.8.0-win64.dll. Просто найти собранную, скачать и подложить рядом. Туда же opencv_ffmpeg*.dll, которая скачивается, когда делаешь cmake configure
S>Что-то не получается, по итогу файл 0 длины. Содержимое папки x64:
Заметил в логах ошибку: [libopenh264 @ 000001db50aca840] Incorrect library version loaded
Может действительно надо 1.8.0 брать...
Update: не взлетело, также не может подгрузить . Очевидно надо как-то версии подбирать.
Пока не понимаю, как понять какую версию ffmpeg OpenCV использует. Может в этом дело?
OpenCV 4.9.0. https://opencv.org/releases/ -- тут ничего не нашел.
Здравствуйте, Sharov, Вы писали:
S>Заметил в логах ошибку: [libopenh264 @ 000001db50aca840] Incorrect library version loaded S>Может действительно надо 1.8.0 брать...
AD>Версия, с которой был собран ffmpeg, лежит как статик переменная g_stCodecVersion внутри ffmpeg в libavcodec/libopenh264.c AD>Т.к. она статик, то наверное до нее не добраться без дебаг инфы... AD>https://github.com/cisco/openh264/blob/master/codec/api/wels/codec_ver.h AD>Но может каким-то образом в dll остался текстовый вариант. Можно поискать "OpenH264 version".
Как понять какую версию ffmpeg ocv использует?
Выше список файлов.
Здравствуйте, sergey2b, Вы писали:
S>оно точно работает с предкомпилированным ffmpeg S>я могу выложить если у вас есть куда
Там с openh264 проблема. Подкладывать надо точно ту версию, с которой собирали сам ffmpeg. Надо либо у источника выяснить, либо перебором... Ну или самому всё пересобрать.