あなたはすべての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は常にそれを処理できるはずです)。
JPGは定義上、ロッシーな形式です。 JPGとして保存するとデータを失うことはありません。無損失が必要な場合は、PNG –
に行ってください。http://en.wikipedia.org/wiki/Lossless_JPEG – ShinTakezou
@MarcB:可逆圧縮PNG gstreamer要素はありますか? – jacknad