recfsusb2nを使った録画で出力されるtsファイルがひじょーに重く扱いにくい。
なので,mp4に圧縮してファイルサイズを削減します。
Raspberry Piにはh264のハードウェアエンコーダが備わっているので,
これを使うことで非力なRPiでも短時間でエンコードが可能になります!
さっそくエンコードに必要となるソフトgstreamerの準備をします。
$ sudo apt-get install gstreamer1.0-*
必要ないものは削ってください。
ハードウェアデコーダ/エンコーダが有効になっているかを確認。
ここではmpeg2のハードウェアデコーダを使っているので,こちらを参考に有効にしておいてください。
$ gst-inspect-1.0 | grep omx
で出力内にomxmpeg2videodecとomxh264encがあればOK
gst-inspect-1.0はgstreamerで使用できる機能の一覧を調べられます。ここまで確認できればあとは変換するのみ。
(例:test.tsからtest.mp4にコンバート
$ 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.
実行するとこんなのが出てくるので,動画のフォーマットに合わせてgstreamerのオプションを修正
$ mediainfo test.ts
General
Complete name : test.ts
Format : MPEG-TS
Video
Format : MPEG Video
Format version : Version 2
Width : 1 440 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Audio
Format : AAC
Format/Info : Advanced Audio Codec
Format version : Version 2
Bit rate : 192 Kbps
システム負荷の軽減を目指しmpeg2のハードウェアデコーダを有効化する。
mpeg2のハードウェアデコーダはライセンスを購入する必要があるので,このサイトから購入。
購入にはCPUのシリアル番号が必要になるので,下記コマンドを実行し確認する。
$ cat /proc/cpuinfo
実行結果:processor : 0
model name : ARMv6-compatible processor rev 7 (v6l)
Features : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : BCM2708
Revision : 000d
Serial : **************** ← これがシリアル番号
下記の手順でライセンスを登録する。
$ sudo cp /boot/config.txt /boot/config.txt.back
$ sudo vim /boot/config.txt
ライセンスを末尾に記載
decode_MPG2=0x********
うまく登録ができていることを確認する。$ vcgencmd codec_enabled MPG2
実行して以下が出力されれば成功!
MPG2=disabled
以下なら正常に動作していない。。。
MPG2=enabled
登録先の間違い,コピペのミスなどなど。
$ vcgencmd get_config str
を実行し,登録したライセンス(メールで送られてきたヤツ)が出力されれば無事に登録されている。
decode_MPG2=0x********
出力されなかった場合や内容が異なる場合は/boot/config.txtを確認。購入してから時間が経っていて,Rasberry Piハード自体を制御しているソフトが古いVersionの可能性がある。
なので,最新版にアップデート
$ sudo rpi-update
$ sudo reboot
どうやらハードウェアデコーダの機能はCamera機能を有効にしないと使えない模様。
なので,カメラを有効にする。
$ sudo raspi-config
「5 Enable Camera」を選択。
その中でEnableを選び,機能を有効にする
$ sudo reboot