2012-04-05 22 views
0

以下のパイプラインは、圧縮されたJPEGイメージを保存するのに問題ありませんが、gstreamerを使用して可逆圧縮されたJPEGイメージを保存する方法はありますか?可逆圧縮JPEG gstreamer要素ですか?

gst-launch v4l2src always-copy = false num-buffers = 1 chain-ipipe = true! 'video/x-raw-yuv、format =(fourcc)NV12、width = 2176、height = 1944'! dmaiaccel! dm365facedetect draw-square = true! dmaienc_jpeg! filesink場所= $ FILE_NAME

+0

JPGは定義上、ロッシーな形式です。 JPGとして保存するとデータを失うことはありません。無損失が必要な場合は、PNG –

+2

に行ってください。http://en.wikipedia.org/wiki/Lossless_JPEG – ShinTakezou

+0

@MarcB:可逆圧縮PNG gstreamer要素はありますか? – jacknad

答えて

3

あなたはすべてのGStreamerプラグインがインストールされていると仮定すると(続・夕陽のガンマン)、あなたはFFmpegのGStreamerの要素を経由してあなたの処分でロスレスビデオコンプレッサーの印象的な数を持っています。これには、ffenc_png(PNGエンコーディングの場合)、ffenc_jpegls(ロスレスJPEGアルゴリズム)、およびそれほど一般的でないものが含まれます。

しかし、GStreamerのコマンドラインを正しく読んでいると、特定の種類のハードウェアに結びついている一連のカスタムコンポーネントが呼び出されているようです(私はグーグルではありますが、それです)。 JPEGエンコーダコンポーネントは 'dmaienc_jpeg'です。チェーン内のそれ以前の要素(dm365facedetect)は、dmaienc_jpegが解釈できるデータのみを出力する可能性があります。しかし、それが一般的な色空間であれば、間に色空間変換を持つFFmpegロスレスエンコーダを通して送ることができます。その答えは、要素に対して 'gst-inspect'を呼び出し、出力(srcとsinkのデータ型)を調べることで確認できます。

新しいデータに基づいて更新:良いニュース:dm365facedetect要素は、生のYUVをNV12形式で出力します。非常に柔軟性があり、多くのオプションがあります。

どのプラットフォームを使用していますか?これは技術的に起因する損失のほんの少しを被るかもしれないが「pngenc」または「ffenc_png」のいずれかを経由してPNG、(:

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

をいくつかのロスレスコーデックのオプション:あなたがUbuntuのLinuxを使用している場合は、使用してのGStreamerプラグインの束をインストールYUV→RGB色空間変換)、「ffenc_huffyuv」、「ffenc_jpegls」、または「ffenc_ljpeg」に変換します。これらをエンコードするときは、avimuxコンポーネントを通してそれらを送信してください。だから、あなたのコマンドラインの最後に例の改正:

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

はあなたが前になっていたJPEGデータよりもやや大きめにロスレスコーデックデータを期待します。さまざまなコーデックを試して好きなものを見て、好みのツールチェーンを使って反対側のデータをデコードできることを確認してください(FFmpegとVLCは常にそれを処理できるはずです)。

+0

はい。カスタムコンポーネントがいくつかあります。 dm365facedetectは、TI DaVinci [TMS320DM368](http://www.ti.com/product/tms320dm368)で[RidgeRun SDK](https://www.ridgerun.com/developer/wiki/index.php/RidgeRun_2011Q2_SDK_User_Guide)を使用しています。 HW Face Detect Engineを使用して、顔の周りに長方形を描画します。はい。 gst-inspectはプラグイン(145)と機能(520)のボートロードを返しますが、ffenc_pngまたはffenc_jpeglsは表示されません。 GStreamerプラグインは、通常どのようにインストールされていますか? ffenc_jpeglsまたはffenc_pngはロスレスJPEGファイルを保存できますか?また、色は必要ありません。グレースケールは問題ありません。 – jacknad

+0

gst-inspectの出力はこちら[こちら](https://docs.google.com/document/d/19ovBIEPNz1BFKuJLjw20Q4YmP47Xu7dvVUu_okUn4Uo/edit) – jacknad

+0

gst-inspectの出力を送信していただきありがとうございます。あなたの質問に答えるためにもう少し情報が必要です:「gst-inspect dm365facedetect」と「gst-inspect dmaienc_jpeg」の出力を投稿してください。また、私は 'gst-inspect TIDmaiVideoSink'を見たいと思います。 –

関連する問題