min117の日記

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

RaspberryPi に備わっているh264ハードウェアエンコーダを有効にして省電力変換サーバにする

 

ずっと気になっていたこの記事。

tnishinaga.hatenablog.com

何度か試したけどうまくいかなかった記憶ある。改めて試す。

ーーー

まずはリポジトリの追加。

以下を /etc/apt/source.list に追記する。

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

# cat /etc/apt/source.list

f:id:min117:20160111143434p:plain

# sudo apt-get -y update

f:id:min117:20160111143700p:plain

# sudo aptitude update 

f:id:min117:20160111143807p: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:20160111144106p:plain

インストールがうまく行っているのかよくわからないが進める。こっちのサイトのほうが分かりやすい。

Connecting The Dots: Raspberry Piでgstreamerを使ったh264エンコード

f:id:min117:20160111145924p:plain

必要なデコーダがインストールされているか確認。

# gst-inspect-1.0 | grep omx | grep dec

f:id:min117:20160111150001p:plain

omxmpeg2videodec

omxh264dec

両方あるから、インストールはうまく行ってるらしい。

ーーー

動画変換を試す。

ソースはこれ。

f:id:min117:20160111150325p:plain

コマンドはこれ。

gst-launch-1.0 filesrc location=test.ts ! progressreport ! tsdemux name=demuxer demuxer. ! queue ! aacparse ! avdec_aac ! audioresample ! audioconvert dithering=0 ! voaacenc bitrate=192000 ! mux. mp4mux  name=mux ! filesink location=test.mp4 demuxer. ! queue ! mpegvideoparse ! omxmpeg2videodec ! videoconvert ! omxh264enc target-bitrate=3000000 control-rate=variable ! video/x-h264,width=1280,height=720,stream-format=byte-stream,profile=high ! h264parse ! mux.

f:id:min117:20160111150429p:plain

結果。エラーになった。no element "tsdemux" となってしまう。

tsdemuxて何だ。tsをdemuxするもの?

muxはミキサーだとすると、ミキサーをdeするもの?decoderのdeと同じなのか?

# gstreamer1.0 | grep mux

f:id:min117:20160111151411p:plain

確かに "tsdemux"は無い。これが原因か。

ーーー

いろいろ調べて、可能性としては以下。

① gstreamer1.0 がうまくインストールできていない or Plugin(ミキサー)が足りない

ffmpeg がうまくインストールできていない or バージョンが古い

③ RaspberryPiでデコーダを使うには実はカメラ機能をONにする必要がある

④ RaspberryPiのハードウェアデコーダキーがインストールされていない

多分①か②。③も試す。④はありえない。ts再生がヌルヌルだから。

ーーー

改めてgstreamerのインストールをしなおす。

# sudo apt-get -y autoremove

sudo apt-get install gstreamer1.0-*

f:id:min117:20160111153051p:plain

インストール保留になってる10個って、

 gstreamer1.0-plugins-bad

 gstreamer1.0-plugins-ugly

にある10個のことらしい。これらがインストールされれば"tsdemux"も入るのかもしれない。

エラーにある「E: 問題を解決することができません。壊れた変更禁止パッケージがあります。」を、まず解決するかと思ったが、面倒なので、gstreamer1.0を丸ごと削除して、インストールし直す。

 apt-get remove ではなく

 apt-get --purge で行う。

apt-get install ****** でinstallしたものをuninstallするには?- Linux系OS | 教えて!goo

f:id:min117:20160111153706p:plain

# apt-get -y --purge remove gstreamer1.0*

# apt-get -y autoremove

ーーー

同じく、ffmpegも完全に削除してインストールしなおす。

# apt-get -y --purge remove ffmpeg

ーーー

これで全部アンインストールされたはずだが、apt-get の結果に「保留:10個」と出ていて気持ち悪い。これが原因かもしれないので、保留の解消方法を調べる。

ameblo.jp

# apt-get dist-upgrade

で保留は解消するらしい。実行。

f:id:min117:20160111154636p:plain

 インストール状況を調べる。fedorayumばっか使ってるから、apt-getを改めて勉強する。

qiita.com

f:id:min117:20160111155902p:plain

# dpkg -l gstreamer

f:id:min117:20160111160107p:plain

# dpkg -l ffmpeg

f:id:min117:20160111160125p:plain

クリーンな状況にしたので、gstreamer と ffmpeg を慎重にインストールする。最新版を入れたい。

このサイトが良さげ。

qiita.com

しかし、スクリプトの途中で

# mediainfo

なるコマンドを使っている。

そんなの無いんだけど。

f:id:min117:20160111161745p:plain

こっちのサイトも良い感じだが、やはり mediainfo が前提だ。

paselin.hatenablog.jp

blog.pg1x.com

もう mediainfo はいいや。気にしない。

gstreamer をインストールする。

sudo apt-get install gstreamer1.0-*

f:id:min117:20160111161952p:plain

やっぱダメ。こりゃ本腰入れる必要あるな。

ーーー

もっかい調査。

ソースから入れる。このサイト参考。

tnishinaga.hatenablog.com

サイトに有るスクリプト実行するも、最初のautoconfからしてコケる。

f:id:min117:20160111204433p:plain

やむをえないので RaspberryPi 3 でやり直す。続記事に継続。

min117.hatenablog.com