2012-04-05 10 views
0

Die folgende Pipeline eignet sich gut zum Speichern von komprimierten JPEG-Bildern, aber gibt es eine Möglichkeit, verlustfreie komprimierte JPEG-Bilder mit gstreamer zu speichern?Verlustfreies komprimiertes JPEG-Gstreamer-Element?

gst-starten v4l2src always-copy = falsch num-buffers = 1 chain-ipipe = true! 'Video/X-Roh-Yuv, Format = (viercc) NV12, Breite = 2176, Höhe = 1944'! Dmaiaccel! dm365facedetect draw-square = wahr! dmaienc_jpeg! filesink location = $ FILE_NAME

+0

JPG ist per Definition ein verlustreiches Format. Es ist unmöglich, beim Speichern als JPG keine Daten zu verlieren. Wenn Sie verlustfrei benötigen, dann gehen Sie mit PNG –

+2

obwohl, http://en.wikipedia.org/wiki/Lossless_JPEG – ShinTakezou

+0

@MarcB: gibt es eine verlustfreie komprimierte PNG-GStreamer Element? – jacknad

Antwort

3

Angenommen, Sie haben die alle GStreamer-Plugins installiert (gut, schlecht und hässlich), haben Sie eine beeindruckende Anzahl von lossless Video Kompressoren zur Verfügung über das Element FFmpeg GStreamer. Dazu gehören ffenc_png (für PNG-Codierung), ffenc_jpegls (verlustfreier JPEG-Algorithmus) und viele weniger häufige.

Wenn ich jedoch Ihre GStreamer-Befehlszeile richtig lese, scheinen Sie eine Reihe von benutzerdefinierten Komponenten aufzurufen, die an einen bestimmten Hardwaretyp gebunden sind (ich habe gegoogelt, aber ich habe noch nicht genau festgelegt es ist). Die JPEG-Encoderkomponente ist 'dmaienc_jpeg'. Es ist möglich, dass das Element in der Kette (dm365facedetect) nur Daten ausgibt, die dmaienc_jpeg interpretieren kann. Wenn es sich jedoch um einen allgemeinen Farbraum handelt, können Sie es über einen verlustfreien FFmpeg-Encoder senden, möglicherweise mit einer Farbraumkonvertierung dazwischen. Die Antwort kann ermittelt werden, indem 'gst-inspect' für die Elemente aufgerufen wird und die Ausgabe untersucht wird (die Datentypen src und sink).

Update, nach neuen Daten: Gute Nachrichten: Das Element dm365facedetect gibt Roh-YUV im NV12-Format aus. Sehr flexibel und Sie haben viele Möglichkeiten.

Auf welcher Plattform sind Sie? Wenn Sie Ubuntu Linux verwenden, mit einem Bündel von GStreamer-Plugins installieren:

apt-get install gstreamer0.10-plugins-good \ 
    gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg 

Einige Optionen Lossless-Codec: PNG, entweder über ‚pngenc‘ oder ‚ffenc_png‘ (obwohl dies wegen einem kleinen wenig Verlust technisch entstehen kann zu YUV -> RGB-Farbraumkonvertierung), 'ffenc_huffyuv', 'ffenc_jpegls' oder 'ffenc_ljpeg'. Wenn Sie diese codieren, senden Sie sie über die Avimux-Komponente. So wird ein Beispiel Änderung bis zum Ende der Befehlszeile:

... ! dm365facedetect draw-square=true ! ffenc_ljpeg ! \ 
    avimux ! filesink location=$FILE_NAME 

die Lossless-Codec Daten erwarten etwas größer sein als die JPEG-Daten, die Sie vor dem Einsteigen wurden. Experimentieren Sie mit verschiedenen Codecs, um zu sehen, was Sie wollen, und stellen Sie sicher, dass Sie die Daten auf der anderen Seite mit Ihrer bevorzugten Toolchain dekodieren können (FFmpeg und VLC sollten immer in der Lage sein, damit umzugehen).

+0

Ja. Es gibt einige benutzerdefinierte Komponenten. dm365facedetect verwendet das [RidgeRun SDK] (https://www.ridgerun.com/developer/wiki/index.php/RidgeRun_2011Q2_SDK_User_Guide) mit einem TI DaVinci [TMS320DM368] (http://www.ti.com/product/tms320dm368) HW Face Detect Engine, um ein Rechteck um ein Gesicht zu zeichnen. Und ja. gst-inspect gibt eine Bootsladung von Plugins (145) und Features (520) zurück, aber ich sehe weder ffenc_png noch ffenc_jpegls. Wie werden GStreamer Plugins normalerweise installiert? Ist es mit ffenc_jpegls oder ffenc_png möglich, verlustfreie JPEG-Dateien zu speichern? Ebenfalls. Ich brauche keine Farbe. Graustufen ist in Ordnung. – jacknad

+0

gst-inspect-Ausgabe ist [hier] (https://docs.google.com/document/d/19ovBIEPNz1BFKuJLjw20Q4YmP47Xu7dvVUu_okUn4Uo/edit) – jacknad

+0

Vielen Dank für die Veröffentlichung der Ausgabe von gst-inspect. Ich brauche ein wenig mehr Informationen, um Ihre Frage zu beantworten: Bitte veröffentlichen Sie die Ausgabe von 'gst-inspect dm365facedetect' und 'gst-inspect dmaienc_jpeg'. Außerdem würde ich gerne 'gst-inspect TIDmaiVideoSink' sehen. –

Verwandte Themen