ラベル recfsusb2n の投稿を表示しています。 すべての投稿を表示
ラベル recfsusb2n の投稿を表示しています。 すべての投稿を表示

9月 29, 2014

Raspberry Piでgstreamerを使ったh264エンコード

recfsusb2nを使った録画で出力されるtsファイルがひじょーに重く扱いにくい。
なので,mp4に圧縮してファイルサイズを削減します。

Raspberry Piにはh264のハードウェアエンコーダが備わっているので,
これを使うことで非力なRPiでも短時間でエンコードが可能になります!


gstreamerのインストール

さっそくエンコードに必要となるソフトgstreamerの準備をします。

$ sudo apt-get install gstreamer1.0-*
必要ないものは削ってください。

hardware decoder&encoderの有効化

ハードウェアデコーダ/エンコーダが有効になっているかを確認。
ここではmpeg2のハードウェアデコーダを使っているので,こちらを参考に有効にしておいてください。

$ gst-inspect-1.0 | grep omx
で出力内にomxmpeg2videodecとomxh264encがあればOK
gst-inspect-1.0はgstreamerで使用できる機能の一覧を調べられます。
他のフォーマットからh264に変換したい場合や,h264以外に変換したい場合は,このコマンドを使って適当なモノを探してきます。


エンコード設定

ここまで確認できればあとは変換するのみ。
(例: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.

上記コマンドの簡単な流れ
①filesrc:入力ファイルの指定
②tsdemux:データの読み出し
③aacparse ! avdec_aac:音声をデコード
④audioresample ! audioconvert ! voaacenc:サンプリングしてエンコード(改善余地あり。なぜaccからaccに変換せにゃならんのだ。。
⑤filesink:一度ファイルに保存
⑥mpegvideoparse ! omxmpeg2videodec:今度は動画の読み込み
⑦videoconvert ! omxh264enc:指定フォーマットでエンコード



参考:動画フォーマットを調べる

実行するとこんなのが出てくるので,動画のフォーマットに合わせて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



2月 04, 2014

Rasberry Piのコンパイル最適化のオプション

GCCのコンパイル時にCPUの最適化をするRaspberry Pi用のオプション。

以下をMakefileに追加。

CXXFLAGS=-march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp
CFLAGS=-march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp



9月 17, 2011

recfsusb2n 0.9.2をfit-PC2iに最適化する

fit-PC2iはAtomという非力なCPUを使用しているので,できるだけCPU負荷を減らしてあげる必要があります.
でないと録画がうまくいかない可能性がありますし,省電力PCでCPUを常時使いまくってるのもどうなの?ってのがあるからです.

実はgcc-4.5からAtomの最適化オプションが提供されていて,これを追加してあげるだけでも処理負荷が1/3になったりします.
ぶっちゃけ,このためにここでgcc-4.5.3を入れましたw

ここを参考にやっていきます.(kinumi様ありがとうございます
といってもやることは同じなんですけどねw

$ vi FSUSB2N/Makefile
 この中に最初から書かれている下の二つの行を削除
  CXX = g++
  CXXFLAGS = -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25) 

 その後下を追加
  CXX = /usr/local/gcc-4.5.3/bin/g++
  CXXFLAGS = -O3 -mfpmath=sse -msse -msse2 -msse3 -mtune=atom -march=atom -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25)
  CC = /usr/local/gcc-4.5.3/bin/gcc
  CFLAGS  = -O3 -mfpmath=sse -msse -msse2 -msse3 -mtune=atom -march=atom -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25)
$ make
$ sudo cp recfsusb2n /usr/local/bin/


recfsusb2nを使ってfit-PC2iを録画PCに!!

恵安株式会社から発売されているKTV-FSUSB2recfsusb2nを使ってLinuxで地デジを録画できるようにします.
それぞれがどういうものなのかっていうのは各サイトおよびグーグル先生に聞いてみてください.

まず,KTV-FSUSB2は買ってきていろいろ準備をしておきます.
次に,recfsusb2nの設定をページに記載されている順番でつらつらやっていきます.

まず,デバイスを外した状態で使用するための環境を作っていきます.

$ sudo apt-get install g++
$ sudo apt-get install libboost-thread-dev libboost-filesystem-dev
$ sudo groupadd video
$ gpasswd -a 使いたいユーザ名 video
$ sudo vi /lib/udev/rules.d/89-tuner.rules
 で、以下を追加
 # FSUSB2N
 SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0511", ATTRS{idProduct}=="0029", MODE="0664", GROUP="video"
$ udevadm control --reload-rules

ここで,デバイスを接続して
$ lsusb -d 0511:
 これを実行してなにか入れば,無事に認識できています

recfsusb2nのコンパイルは,ダウンロードしてきたファイルを解凍して,
$ tar zxvf recfsusb2n-0.9.2.tar.gz
$ cd FSUSB2N
$ make
$ sudo cp recfsusb2n /usr/local/bin/

最後に録画の確認をします.
このコマンドはUHF24chを40秒間、test.tsにB25復号しながら記録ものです.
$ recfsusb2n -bv 24 40 test.ts