2010年08月27日

FriioのTSをmacやLinuxのffmpeg/mp4boxで処理するメモ

かなり長く眠っていた地デジチューナFriioを引っ張り出して録画サーバにしようとあれこれやってみました。とりあえず録画は無事出来たのですが、若干音ずれがあるので先人たちに感謝しつつ忘れないようにMacやLinuxで修正してh264に変換するためのメモ。

使ったもの
  • ffmpeg
  • mp4creator
  • mp4box
インストール
  •  Ubuntuではmedibuntuのリポジトリを追加して"apt-get install ffmpeg gpac mpeg4ip-server mpeg4ip-utils"
  • MacOSXでは macportsを使って"port install ffmpeg mpeg4ip"してから"gpac"を手動インストール
    1. svn co https://gpac.svn.sourceforge.net/svnroot/gpac gpac
    2. cd cpac
    3. ./configure --disable-wx
    4. make
    5. sudo make install
使い方
かなり適当ですが以下の用な感じ。 shellかmakefileにしておくと便利

recfriio --b25 xx xx foo.ts 
ffmpeg -threads 2  -i foo.ts -vcodec libx264 -vpre iphone -b 1200k -r 30000/1001 -map 0.0:0.0 -s 720x400 -aspect 16:9 -an tmp.mp4 
ffmpeg -i foo.ts -acodec copy -map 0.1:0.0 -vn audio.aac
mp4creator -aac-profile=4 -create=audio.aac audio.mp4
ffmpeg -i audio.mp4 -acodec libfaac -ab 128k -ar 48000 audio-tmp.mp4
mp4box -add tmp.mp4#video:delay=300 -add audio-tmp.mp4#audio -new result.mp4
rm -f audio.aac audio.mp4 audio-tmp.mp4 tmp.mp4

映像が先行している時は映像に逆なら音声にmp4boxのdelayオプションでmsを指定して適当に遅らせて微調整。音ずれがない時はmp4creatorでの出力先をtmp.mp4にする。人間というのは良くできているもので音と映像が数フレームでもずれると違和感を覚えるんですよね。

本当は映像もcopyで分離してmp4を作って使い慣れたHandBrakeを使いたかったのですが、ffmpegのバグで映像のcopyがソースによって失敗、音声もエンコードに失敗してしまうことがあるようです。

しかし音ずれ対策は自動では出来ないのかな。。。
ffmpegのプリセット
vpreのiphoneは古いiPod touchでも再生できるようにレベル低めで調整中。かなり適当ですが以下のような感じで~/.ffmpeg/libx264-iphone.ffpresetを作成。
coder=0
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8+partp4x4
me_method=full
subq=7
me_range=16
g=150
keyint_min=25
qcomp=0.6
qmin=10
qmax=51
qdiff=4
bf=0
refs=1
directpred=1
trellis=0
flags2=-wpred-dct8x8+mbtree
wpredp=0
level=30
maxrate=1400k
bufsize=14000k

PCで見るために画質を追求するならビットレートを上げたりCABACの設定をした方がいいですが、とりあえずiPhone/iPadやPCでもちょっと視る程度にはワンセグよりも綺麗だし、AirVideoのディレクトリに放り込んでおけば外出先で低ビットレートに変換しながら見れます。
 
サーバにしているSheevaPlugでFriioを動かすのも少しはまったのですが、それは後日。ARM 1.2Ghzの実力を見てみたいのでffmpegでの変換にもいずれ挑戦。 

2010年08月08日

SheevaPlugをtgtでiscsi targetにしてみたメモ

SheevaPlugにLinux SCSI target framework (tgt)をインストールしてiscsiのtarget(サーバ)にしてみたのですが、ちょっと問題があったのでメモ。

上にあるSheevaPlugにiscsiを入れる記事ですが、そのままだとインストールはできるもののtgtadmするとどうもサーバが落ちてしまってうまく動きません。適当にgdbで落ちてる箇所を特定してパッチを当ててみると無事動いている模様。

インストール手順
  1. SheevaPlug自体に開発ツールその他が入っていること
  2. sudo apt-get install libconfig-general-perl
  3. Linux SCSI target framework (tgt) projectからtgt-1.0.7.tar.gzをダウンロード
  4. 適当なディレクトリで展開
    tar xvfz tgt-1.0.7.tar.gz
  5. cd tgt-1.0.7
  6. usr/util.cの145行目 (str_to_open_flags()の頭のあたり)に以下の2行を追加
    if (!buf)
        return 0;
  7. make ISCSI=1 && sudo make install
  8. tgt-adminにMOIMOIさんのパッチ適用
    gist: 459680 - GitHub

これでインストール完了。

動作確認
  1. sudo tgtd
  2. sudo tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2010-08.com.yourdomain.plugserver:storage.fserver.data
  3. sudo tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda
  4. sudo tgtadm --lld iscsi --op show --tid 1
  5. なにやらディスクの情報が見えるはず
これで適当にクライアントからつないでみると動いていると思います。この時点ではiqn...はもっと短い適当な名前でもOK。
 
設定ファイル作成
tgtadmでの設定はサーバを落とせば消えてしまうのでconfigファイルを以下のように作成。
 
file: /etc/tgt/targets.conf
 
default-driver iscsi

<target iqn.2010-08.com.yourdomain.plugserver:storage.fserver.data>
  driver iscsi
  backing-store /dev/sda
  incominguser <user-name> <your password>
</target>
 
ちなみにiqnから始まるディスクの名前っぽいのはiscsiネームというもので世界的にユニークな必要があるらしい。iqn.取得日付.domain.server:disk...という感じのネーミングとのことらしい。ローカルオンリーなら問題なさそうだが一応それっぽく書いておくのがいいかもしれません。
起動時に有効になるように
initスクリプトを自分で書けばいいのだが手抜き。/etc/rc.localに以下の二行を追加

tgtd
tgt-admin -e --ready ALL

ベンチマーク
前のエントリーと同じ条件/同じディスクを使い同じMacBook Airからxbenchのdiskテストを行った結果の抜粋。値はスコアです。
 
Disk Test 7.97
Sequential 4.72
Random 25.69

前エントリーで測ったeeepc901より若干いい結果ですがほぼ誤差と思われます。SheevaPlugの1.2GhzのARMもそれなりに速いですがATOMよりは遅いでしょうからUSBディスクとネットワークの方で頭打ちになっている模様(予想の範囲)。1Gbpsの有線イーサで比べると実力差が出るかもしれません。いずれにせよカジュアルな使い方ではそれなりな性能が出ているようです。
 
注意点
 
iSCSIディスクは基本固定ディスクの扱いですので、アンマウントせずにサーバのリブート・シャットダウンやネットワークの切断などを行うとMac側も動作がおかしくなったり最悪データが失われたりします。サーバからONにしてクライアントからOFFにしていくという昔ながらの基本手順は必須。
 
また上で当てたパッチはかなり適当なので我ながら少し不安。いずれちゃんと追っかける予定。とりあえず数日TimeMachineディスク+データディスクにしていますが今のところ問題ない模様。

2010年08月03日

Ubuntuのiscsi(tgt)を使ってMacのディスクにしてみたメモ

Ubuntuでiscsi-targetをサーバにしてMacのglobalSAN iSCSIを使ってみたのですが、(どちらが悪いかはわからないが)余り安定しているとは言えないのでtarget(サーバ)側を"tgt"に換えてみたのでメモ。本当はMacOSX側で環境設定が32bitしかなくてイマイチ動きが良くないglobalSAN iSCSIから有料のATTOのInitiatorにしてみたいのだけれど$195もするのでさすがにパス。

サーバはUbuntu 10.04.1で"tgt"の設定は以下のリンクを参考に、というかそのまま。

target(サーバ)のインストールは"apt-get install tgt"。既にiscsi-targetが動いている場合は停止させる。余談ですがDebian/Ubuntu系のパッケージ名"tgt"は余りに短いと思います。fedoraではscsi-target-utilsとわかりやすいので同じようにもうちょっと何とかして欲しいですね。

MOIMOIさんのところの設定やパッチも含め丸ごといただいて参考にし、/etc/tgt/targets.confでmacでフォーマットしたhfs+のディスクを丸ごと指定。

Mac側でglobalSAN iSCSIから"+"で"Portal"、IPアドレスかホスト名を指定するとディスクが見えます。私は当初ディスクが見えなかったのですが、一度FedoraのQuickStartに従い手動で設定して試したところ無事問題なく接続でき、それ以降はなぜかOK。原因は未追求。

まだ使い込んではいませんが、MacBookAirのTimeMachineのバックアップを半日程度取らせていみましたが、今のところ問題なさそうです。同じディスクにXcode4等も入れてあるのですが、無事使用できているようです。安定性はこれからチェックです。(TMをONにしたまま2日程度放置。問題なくバックアップが取られているようです) 

最近は500-750GBもの容量がある2.5inch HDD搭載のノートPCと違い1.8inch HDDのMacBook Airは容量を増やすのにやたらお金がかかるので、うまく外部ディスクを使いたいところです。いくつか方法がありますが、外付けディスクはじゃまになるため結構不便、ファイル共有は悪くないが制限もある。その点iSCSIはちゃんと動くと普通に外付けディスクとして使えてキャッシュが効くため速度もまあまあ速いのがいいところ。(と思ったのですが...)

これだけでは何なのでxbenchで少しベンチマーク。サーバはEeePC901+USB2.0/2.5inch/320GB HDD。クライアントはMacBook Air。AirMac Expressに接続。LANは100Mbps。 

    SSD tgt+wifi tgt+lan USB  
Disk Test   61.94 4.45 7.34 28.94 スコア
Sequential   43.16 2.97 4.4 34.25  
  Uncached Write [4K] 32.02 2.51 4.73 23.2 MB/S
  Uncached Write [256K] 14.06 2.17 3.2 21.44 MB/S
  Uncached Read [4K] 11.12 0.52 0.67 6.18 MB/S
  Uncached Read [256K] 72.48 1.83 3.05 30.35 MB/S
Random   109.67 8.87 22.09 25.05  
  Uncached Write [4K] 6.88 1.44 3.59 0.94 MB/S
  Uncached Write [256K] 19.72 1.19 3.64 19.23 MB/S
  Uncached Read [4K] 3.35 0.55 0.74 0.43 MB/S
  Uncached Read [256K] 67.89 1.94 3.44 13.75 MB/S 

上の表の真ん中tgtで始まる2列がiscsiの結果。tgt+wifiはサーバもwifi接続。tgt+lanはサーバはLAN接続。相手がWifi経由のUSBディスクのせいか結構遅いですね。以前MacMini+Linux Boxで有線のGB EtherにSATA 3.5inch HDDで試したときには内蔵2.5inchより速いくらいでしたが。

使用感的にはクライアント側でのキャッシュが効きやすいので2回目以降はまあまあ普通に使えます。(Dockのバウンス回数からみると内蔵SSDの1/2-1/3程度の速度)。デメリットとしては接続中にサーバを停止させたりネットワークを切断したりするとキャッシュ中のデータが失われたりする可能性があるので要注意。

とはいえ眠っているNetbookをサーバにすれば安上がり。うっとうしいケーブルを差さなくていい。iSCSIで使用するディスクをUSBの外付けHDDにしておくとUSBとiSCSIで可換な使い方が出来るので(ちゃんとtargetもinitiatorも止めて)サーバから抜けばそのまま持ち出しも出来て便利です。

SheevaPlugでもtgtが使えているようなのでそのうち試してみよう。

iSCSIはCHAP等の認証はありますし、暗号化機能もあるとはいえ基本的にSCSIの線をEther等にするためのモノなので外部から使うならばVPN経由が良さそう。

2010年07月30日

MacのChrome(dev版)でPDFが開かないので暫定対処

MacOSXでメインのブラウザとしてChromeのdev版(6.0.472.11 dev)を使っているのですが、PDFファイルをクリックするとプラグインが見つかりませんと宣い見ることが出来ません。ついクリックしてしまうと悲しいので、プラグインを切る方法をメモ。

  1. chromeのURLのテキストボックスで"chrome://plugins"と入力してプラグインの一覧を出す。
  2. "Chrome PDF Viewer"プラグインがリストにあるのでこれを無効に。

以上でpdfをクリックすると普通にダウンロードされ、ステータス部分に出てくるのでプレビューで見ることが出来ます。

他のOSではどうかわかりません。Adobe Readerを入れたら問題ないんだろうかと思いつつ。

2010年07月28日

UbuntuのPPAを検索するchrome拡張機能なんてあるのか

Ubuntuの個人的に作成されたパッケージを集めたppa (Personal Package Archive)。Ubuntuの公式リポジトリではサポートされていないソフトや、まだパッケージに入っていない最新版があったりするので重宝しているのですが、これを検索するGoogle Chrome用のプラグインがあるようなのでメモ。

インストールすると右上にUbuntuマークのアイコンが出てくるので、さくっと検索できます。Macのchromeでも使えます。まあ普通にlaunchpad.netにいって検索しろよって程度のものでもありますが。

しかし個人的にすっかりchromeがメインブラウザになってしまいました。拡張機能も結構充実していますし。長年お世話になったFirefoxには悪いのですが、やはり軽いのはいいですね。ただタブを大量に開くとツラいので多段タブをサポートしてくれたらうれしいんですがねー。



2010年08月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

カテゴリー

モバイル版

このページは携帯電話からもご覧いただくことが出来ます。
blog.browncat.org qr-code
Powered by
Movable Type 3.36

Twitter


注目エントリー

人気エントリー

デル株式会社ads