Armadilloフォーラム

Gstreamerの動画圧縮

hiroyuki405

2016年5月10日 21時45分

お世話になります。

Gstreamerを用いてSDカード内の動画ファイルを圧縮し、同じく別のファイル名として
SDカードに圧縮後の動画ファイルの保存がうまくできません。

どういったことが原因として考えられるでしょうか。
対象の動画はサンプルの「big-buck-bunny-30sec-800x480.mp4」と「big-buck-bunny-30sec-fullhd.mp4」を使用しました。

ファイル ファイルの説明
teraterm.log
コメント

at_shota.tamura

2016年5月11日 10時26分

田村です。

> Gstreamerを用いてSDカード内の動画ファイルを圧縮し、同じく別のファイル名として
> SDカードに圧縮後の動画ファイルの保存がうまくできません。

動画の圧縮方法はいくつかあると思いますが、圧縮はH.264エンコードをさしていますか?

もし、行いたいことが、
「H.264圧縮(エンコード)された動画をデコードし、再度H.264エンコードして、MP4形式で保存する」
であるならば、以下のバイプラインで行うことが出来ます。

gst-launch-1.0 -e filesrc location=src.mp4 ! qtdemux \
! avdec_h264 ! videoconvert ! acmh264enc ! qtmux \
! filesink location=dst.mp4

※ Armadillo の仕様上、acmh264enc と acmh264dec の同時利用ができないため、
avdec_h264 (ソフトウェアデコーダー)を使用しています。

> gst-launch-1.0 filesrc location=/mnt/big-buck-bunny-30sec-800x480.mp4 ! qtdemux \
> ! queue ! acmh264dec ! video/x-raw,width=800,height=480 ! acmfbdevsink device=/mnt/outpEnc.mp4

また、「ファイルに保存する」ということであれば、
acmfbdevsink (画面表示用のエレメント)でななく
filesink (ファイル保存用のエレメント)を使用すればファイルに保存できます。

その他のGStreamer のエレメントを探すには、gst-inspect-1.0 を実行するか、以下のサイトを参照してください。

 https://gstreamer.freedesktop.org/documentation/plugins.html