Проблема с мультиплексированием в avi связана с тем, что filesrc предоставляет буферам для avimux, которые неправильно выровнены по фреймам mjpeg, поэтому avimux создает сэмплы с неправильным выравниванием внутри, что усложняет их использование игроками. позже во время воспроизведения.
Это можно исправить с помощью парсера mjpeg после capsfilter (jpegparse?). Другой вариант - декодировать и перекодировать сэмплы, чтобы выровнять их правильно и мультиплексировать. Следующий конвейер должен работать:
gst-launch-1.0 filesrc location=encode.mjpeg \ ! 'image/jpeg,framerate=30/1,width=1280,height=720' ! decodebin ! videoconvert ! \ <some encoder> ! <some muxer> ! filesink location=outputfile
Вы можете выбрать кодировщик и мультиплексор, который вам нравится, вы даже можете закодировать их обратно в jpeg и mux в avi, как вы изначально хотели.
Изменить : Чтобы попытаться преобразовать содержимое в AVI без декодирования, попробуйте что-то вроде:
gst-launch-1.0 filesrc location=encode.mjpeg \ ! 'image/jpeg,framerate=30/1,width=1280,height=720' ! jpegparse ! avimux \ ! filesink location=encode.avi . -v
Если jpegparse работает очень хорошо, '' image / jpeg, частота кадров = 30/1, ширина = 1280, высота = 720 '' не требуется.