Das Problem, das Sie beim Muxen in avi haben, hängt mit der Tatsache zusammen, dass filesrc Puffer für avimux bereitstellt, die nicht ordnungsgemäß an den Mjpeg-Frames ausgerichtet sind. Daher erstellt avimux intern Proben mit falscher Ausrichtung, was die Verwendung der Player erschwert später während der Wiedergabe.
Dies kann durch Verwendung eines Mjpeg-Parsers nach dem Capsfilter (jpegparse?) Behoben werden. Eine andere Option besteht darin, die Samples zu decodieren und erneut zu codieren, um sie richtig auszurichten und zu muxen. Die folgende Pipeline sollte funktionieren:
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
Sie können den Encoder und Muxer auswählen, den Sie möchten, Sie können sie sogar in jpeg und mux in avi codieren, wie Sie es anfangs gewünscht haben.
Bearbeiten : Um zu versuchen, den Inhalt ohne Dekodierung in avi zu muxen, versuchen Sie Folgendes:
gst-launch-1.0 filesrc location=encode.mjpeg \ ! 'image/jpeg,framerate=30/1,width=1280,height=720' ! jpegparse ! avimux \ ! filesink location=encode.avi . -v
Wenn jpegparse es sehr gut macht, sollte '' image / jpeg, Framerate = 30/1, width = 1280, height = 720 '' nicht erforderlich sein.