2010/09/29

sshリバースポートフォワードのメモ





普段から順方向のポートフォワードはやたら多用してるんですが、逆方向、つまりかっちょよく言うとリバースポートフォワードを使えるようにsshサーバを設定変更したのでそのメモ。
# vi /etc/ssh/sshd_config
で、以下の1行を追加。
GatewayPorts yes
"yes"じゃなくて"clientspecified"の方がいいかもしれませんが、これ設定したところでどのIP使ってリスンするかが変わるだけなので別にいらないかな。接続してくるホストを制限できるわけではない。

で、sshd再起動したらクライアント側から、
# ssh -N -f -R 10022:localhost:22 usename@remotehost
でOK。便利ですね。

具体的な使い道としては、クライアント側がinboundの通信許可してなかったりNATの下だったりしたときかな。さらに具体的に言うと、NAT下(どこ?)で起動させたままのPCのリモートデスクトップに家から接続したりとか、かな。。。localhostじゃなくてホスト指定したりするとすっかりバックドアなので、セキュリティには気を配って使いましょう。かなり便利。

なんかもうsshサーバが1台あるとすっかりVPN装置/FWの如く遊べるから楽しいわ。

2010/09/23

XBMCで音が出ない動画をffmpegでどうにかしたメモ


いつからかわからないんですが、以前はちゃんと再生できてたモノラル音声かつサンプリングレート48kHz以外の動画ファイルをXBMCで再生しようとすると、音が出ないことに気づきました。どっちが悪いのか切り分けてませんが、この2つの条件が重なると”failed to initialize audio device”ってエラーが出たりして(出ないパターンもあるので難解。。)音が出ない。つってもかなり昔にエンコードしたようなファイルだけなので実害は無いのですが、なんか嫌なのでForumで質問したり.asoundrcいじったり色々してみましたが、全然改善しないので発想を変えて再エンコードしてみました。その時のメモ。

携帯動画変換君とか使えばいいのかなと思いましたが、自宅サーバ上で一気にやりたかったのでffmpegを使ってやってみました。便利ですねffmpeg。めっちゃ便利。ubuntu10.04でやった。

  1. ffmpegが入ってなければaptitudeで入れる。
  2. 音声をmp3で再エンコードしたいので、libmp3lameを入れる。単にlibmp3lameと指定しても見つからないけど、以下のパッケージを入れると使える。
    # aptitude install libavcodec-unstripped-52
  3. 対象の動画の音声だけを2chにしてサンプリングレートを48kHzにして書き出す。ビットレートは適宜(デフォルト64kb/s)。
    # ffmpeg -i hoge.avi -vcodec copy -acodec libmp3lame -ab 128k -ar 48000 -ac 2 hoge.mod.avi
    -vcodec copy: ビデオは同じ設定で書き出す。
    -acodec libmp3lame: 音声コーデック指定。
    -ab: 音声ビットレート指定。kをつける。
    -ar: 音声サンプリングレート指定。
    -ac: 音声チャンネル数指定。2chに。
これでできました。あとは以下の感じでディレクトリ無いの全aviファイルを一気に処理して完了。
# for i in *.avi ; do ffmpeg -i $i -vcodec copy -acodec libmp3lame -ab 128k -ar 48000 -ac 2 $i.mod.avi ; done
実は最初はこうやって一発でできるってわからなくて、一度mp3だけ設定変えて書き出し→音声消した動画だけ書き出し→両者を結合、とか3回も処理させてました。なんでかって、まずmp3だけ書き出し→元の動画と結合、ってやってみたら元の動画の音声がそのままになっちゃったからでした。じゃあ一度音消して結合すればいいや、というわけですね。色々試してみたら、先に読み込ませた方の音声が有効になる(?)みたいでした。つまり、音の入っている動画ファイルに音声かぶせるときは、
# ffmpeg -i hoge.avi -vcodec copy -i hoge.mp3 -acodec copy hoge.mod.avi
だとダメで、
# ffmpeg -i hoge.mp3 -acodec copy -i hoge.avi -vcodec copy hoge.mod.avi
だとOK。なんだかそういう事みたい。ふーん。紆余曲折っと。

とりあえずこれで特に音ズレとかも無しでXBMCから再生できる動画になりました。ホントffmpeg便利なのねえ。

2010/09/05

TVDB bulk uploader


僕が最高にお世話になっている、TheTVDB.comというサイトがあります。このサイトはなにかっつーのをかいつまんでお話ししますと、TVシリーズの情報を集めたオープンのDBで、XBMCなんかのメディアセンターから参照してシリーズやらエピソード情報が取得できるそんなサービスです。もうちょっと詳しく言うと、Aというテレビ番組があって、そのシーズン1の第1話だったら録画したファイルを「A 1x01.mp4」とかってファイル名にしておいて処理をすると、XBMCのライブラリにこんな風に情報を取りこめるんですね。
まあ多分日本国内で10人位しか興味の無い話だと思います。

でですね、例えば大量に話数のあるシリーズを登録する時とかって、1話1話TVDBのWebからせっせと登録が必要なわけですよ。これがちょー面倒なんです。4クールあるアニメとかであらすじまで入れ出すともう日が暮れます。基本的に公式サイトからのコピペなんですが、それにしても面倒です。それでもXBMCのファイルブラウザから視聴するよりもライブラリに登録したほうが150倍メディアセンターの意味があるので、せっせと登録したりしてました。

余談ですが、これって本来オープンなDBなのでWikiみたいにいろんな人が編集してくれるもんなですよね。例えば本場の24とかLostなんかはすげースピードで登録されてて一切手伝う必要がないくらい。ただ日本でTVDBっていうかXBMC使ってライブラリ管理してるのってもしかして俺が一番ヘビーユーザなんじゃねえの?ってくらい日本語情報が無いので、せっせと登録とかになっちゃうんですよね。もっとユーザ増えないかなあ。 かと思うとこんなマニアックなドラマが登録されてるの?って事もあったりして、密かに使用者はいるみたいなんですが。

閑話休題。そういうわけで、プログラムを組んだりとかできないですがなんとかCVSを読み込ませてエピソード情報の登録ができないかなと考えてみました。で、例によってJMeterを使ったら結構簡単にできました。とりあえずこれが入ってないとダメだろ、っていうエピソード名とオンエア日くらいは簡単にまとめて入れられるようになった。

詳しくJMeterのシナリオの作り方とかTVDBのエピソード管理の方法とか書こうと思ったんですが、面倒なので割愛しちゃいます。どうせ誰も興味ないしw 簡単に言うと、以下みたいなCSVファイルを作ってJMeterの「CSV Data Set Config」機能で変数としてPOSTパラメータに入れてあげるってだけです。
1,364,Pilot,2010/09/05
2,365,xxxxxxx,2010/09/12
 1つ目のカラムはエピソード番号。2つ目はTVDBで使ってる"id"ってパラメータの番号(e.g. 425023→425024だったり、2743641→2743651だったり法則ちゃんと調べてないんですが、前者だったら023→024、後者だったら364→365を使う)。3つ目はエピソードの題名。4つ目はオンエア日です。適宜あらすじとか脚本家の名前とかも追加できますが、この4つがあれば少なくともライブラリに登録できます。日付はなくてもOKかな。

一応JMeterの設定はこんな感じです。まずHTTPリクエスト。
 んでもってCSV Data Set Config。

これで今後新しいシリーズまとめて登録するのが億劫じゃなくなりました。なんかあんまり連続したリクエスト送るとTVDBに制限されちゃいそうですが、しばらくこれでやってみます。いや、まとめて何十話も登録するって滅多に無いんですけども。

Related Posts Plugin for WordPress, Blogger...