min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi 3 をh264動画変換サーバにする(ハードウェアエンコーダをgstreamerで使う)

前記事でうまくいかなかった。あのときはRaspberryPi B+だったからかも。

min117.hatenablog.com

RaspberryPi 3 を買っているので再挑戦する。ちなみに RaspberryPi 3 は、ハードウェアもパワーアップしている。

min117.hatenablog.com

ーーー

進め方はこのサイト参照しながらやる。

tnishinaga.hatenablog.com

まずはリポジトリを追加する。

# sudo -s

# cd /etc/apt

# vim sources.list

f:id:min117:20160605121302p:plain

末尾に

deb http://vontaene.de/raspbian-updates/ . main

を書き足して保存する(7行目)。

f:id:min117:20160605121351p:plain

# sudo aptitude update

f:id:min117:20160605121638p:plain

# sudo aptitude -y install libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer1.0-dev liborc-0.4-0 \liborc-0.4-0-dbg liborc-0.4-dev liborc-0.4-doc gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 \gstreamer1.0-alsa gstreamer1.0-doc gstreamer1.0-omx gstreamer1.0-plugins-bad \gstreamer1.0-plugins-bad-dbg gstreamer1.0-plugins-bad-doc gstreamer1.0-plugins-base \gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-base-doc \gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-good-doc \gstreamer1.0-plugins-ugly gstreamer1.0-plugins-ugly-dbg gstreamer1.0-plugins-ugly-doc \gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-x libgstreamer-plugins-bad1.0-0 \libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev

f:id:min117:20160605122038p:plain

何か注意が出るけど Yes で進める(y だとダメみたい)。

f:id:min117:20160605122438p:plain

インストールはうまくいったように見える。

f:id:min117:20160605122615p:plain

変換には MPEGライセンスキー も必要だから、予め買っておく(300円くらい)。買い方はこの記事どおり。

min117.hatenablog.com

ーーー

いよいよハイビジョンtsファイルの変換を試す。ソース映像はこれ。

f:id:min117:20160605123557p:plain

tsファイルだからさすがにキレイ。

f:id:min117:20160605123424p:plain

f:id:min117:20160605123445p:plain

f:id:min117:20160605123435p:plain

変換実行(suではないユーザーで実行)。

gst-launch-1.0 filesrc location=20160601_074221.ts  ! progressreport ! mpegpsdemux name=demuxer demuxer. ! queue ! mpegaudioparse ! mad ! audioresample ! audioconvert dithering=0 ! voaacenc bitrate=196000 ! mux. mp4mux  name=mux ! filesink location=20160601_074221.ts.mp4 demuxer. ! queue ! mpegvideoparse ! omxmpeg2videodec ! videoconvert ! omxh264enc target-bitrate=6000000 control-rate=variable ! video/x-h264,stream-format=byte-stream,profile=high ! h264parse ! mux.

f:id:min117:20160605124555p:plain

エラーになった…

f:id:min117:20160605124638p:plain

ただ、以前の記事のようにgstreamerそのものが動いていないんじゃなくて、gstreamer内部で起きているエラーに見える。

調べる。

ーーー

こんなコードもみつけた。意味はまだよく分からないが流してみる。

gst-launch-1.0 videotestsrc num-buffers=1000 ! omxh264enc ! "video/x-h264,profile=high" ! h264parse ! queue max-size-bytes=10000000 ! matroskamux ! filesink location=20160601_074221.ts 

f:id:min117:20160605131110p:plain

ファイルはできたけど、変換前に117Mあったファイルが1.8Mになっている。これじゃダメっぽい。

変換前

f:id:min117:20160605123557p:plain

変換後

f:id:min117:20160605131301p:plain

2016/11/27 追記

gstreamerはアウトだったけど、HandBrakeCLIが動くようになった。これで超省電力動画変換サーバの完成だ。詳細は以下。

min117.hatenablog.com