ffmpeg を使って flv から mp3 の作り方

By admin | 2009年3月25日

準備

mac ports を使用して ffmpeg をインストールします。
mac ports の詳細はここをみてください。

sudo port install ffmpeg

音声だけ抜き出して mp3 にする

ffmpeg -y -i hoge.flv -acodec copy hoge.mp3

iphone用の動画(mp4)に変換

ffmpeg -y -i hoge.flv -vcodec libx264 -s 320x240 -b 1024k -acodec libfaac -ac 2 -ar 24000 -ab 96k -f mp4 hoge.mp4

画質を奇麗にしたければ -b(ビットレート) をあげてやればいい。

これをエイリアスにしたい

いちいち覚えれないからエイリアスにして簡単にできたらいいなと。
わざわざこれぐらいでコマンドファイルもつくりたくないし。

#perl -le '($f)=split(/\./, $ARGV[0]);`ffmpeg -y -i $f.flv -acodec copy $f.mp3`' hoge.flv

ワンライナーだとこんな感じででける。
ただこれを alias にすると動かなくなる。

#alias flv2mp3='perl -le "($f)=split(/\./, $ARGV[0]);`ffmpeg -y -i $f.flv -acodec copy $f.mp3`"'
#flv2mp3 hoge.flv

どーすればいいんだろうか。。。。
分かる人ヘルプ

Catalyst::Plugin::Session::State::URI が ‘external URL stays untouched’ とエラーがでインストールできない

By admin | 2009年3月22日

原因は URI::Find が2009/03/19にアップデートされたらしい。
それを使うと Catalyst::Plugin::Session::State::URI をいれようとすると下記のようなエラーがでる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/01use.t t/02pod.t t/03podcoverage.t t/basic.t t/live_rewrite.t t/live_uri_for.t t/param.t
t/01use.t .......... ok
t/02pod.t .......... skipped: set TEST_POD to enable this test
t/03podcoverage.t .. skipped: set TEST_POD to enable this test
t/basic.t .......... 1/51
#   Failed test 'external URL stays untouched'
#   at t/basic.t line 131.
#          got: 'foo <ahref="http://www.woobling.org/"></a> blah'
#     expected: 'foo <a href="http://www.woobling.org/"></a> blah'
t/basic.t .......... 31/51 # Looks like you failed 1 test of 51.
t/basic.t .......... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/51 subtests
t/live_rewrite.t ... ok
t/live_uri_for.t ... ok
t/param.t .......... 1/28
#   Failed test 'external URL stays untouched'
#   at t/param.t line 100.
#          got: 'foo <ahref=%22http://www.woobling.org/?sid=qux"></a> blah'
#     expected: 'foo <a href="http://www.woobling.org/"></a> blah'
# Looks like you failed 1 test of 28.
t/param.t .......... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/28 subtests

インストールされているモジュールのバージョン

- Catalyst::Plugin::Session ...loaded. (0.20 >= 0.06)
- URI                       ...loaded. (1.37)
- URI::QueryParam           ...loaded. (0)
- URI::Find                 ...loaded. (20090319)
- HTML::TokeParser::Simple  ...loaded. (3.15)
- MIME::Types               ...loaded. (1.27)
- Test::MockObject          ...loaded. (1.09 >= 1.01)
- MRO::Compat               ...loaded. (0.09)

URI::Find のバージョンを 0.16 に変更してやるとインストールできた。
ちなみに試した環境は Mac(Leopard) です。
これでようやく Task::Catalyst がはいった。。。。

Mac(Leopard) に DBD::SQLite をいれる時には注意

By admin |

DBIx::Class をいれようとした時に少しハマったのでメモ。
どうやら CPAN コマンドを使ってインストールしようとすると
Mac にバンドルされている sqlite を使ってないらしい。。。
そのためインストールに失敗する。
これを回避しようと思うと Makefile.PL に USE_LOCAL_SQLITE=true に指定すればよいらしい。

1
2
3
$sudo cpan
cpan[1]> o conf makepl_arg USE_LOCAL_SQLITE=true
cpan[2]> install DBD::SQLite

o conf commit をしない限りここで変更しても cpan を再起動すると元の設定を使うことになる。

参考資料

DBD-SQLite-1.14
cpan コマンドでモジュールをインストールするときに Makefile.PL の引数を設定するCommentsAdd Star

wordpress に memcached を使う手順

By admin | 2009年3月17日

手順を簡単に説明すると

  • memcached をインストール
  • memcached を起動
  • php に memcached のクライアントをインストール
  • apache 再起動
  • object-cache.php を配置

こんな感じで出来ます。
というわけで順をおって詳細をば。
(下記はFedora8 x86_64 にインンストールしたのを説明しています)

memcached をインストール

必要なライブラリ : libevent

yum install libevent

これでインストールできます。
つぎに memcached をインストールします

yum install memcached

memcached を起動

yum でいれたのなら

service memcached start
chkconfig memcached on #これは再起動後に自動的に起動するようにしてます。

memcached がちゃんと動作しているかの確認は telnet を使うと簡単にできます。

$telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
 
set hoge 0 0 4                   # <- ここで hoge という値に
fuga                                           fuga を代入している
STORED
 
get hoge                           # <- hoge という値を取り出してる
VALUE hoge 0 4
fuga
END

php に memcached のクライアントをインストール

これは pecl でインストールすると楽です。
pecl は perl でいう CPAN 的なもの。

pecl install memcache

この場合 php.ini に extension=memcache.so を追加してやる必要があります。
僕は yum でいれました。この場合は特に設定する必要はありません。

object-cache.php です。
こいつを wp-content/ にいれてやるだけで大丈夫です。
memcached サーバーの場所がローカルホストの 11211 であるなら何も設定する必要はありません。
それ以外の場合は

 $memcached_servers = array('192.168.1.1:11211', '192.168.1.2:11211');

このように編集してやれば追加できます。

おまけ

便利そうなツールがあったので一つ紹介しときます。
memcache.php ってのがあってこれを利用すると簡単にヒット率や
現在の使用率を見ることができます。
こいつをどこでもいいので、どこかの DocumentRoot 以下に置き
HTTP ベースでアクセスすると表示されます。
ユーザ名、パスワードは memcache.php を開いて変更すれば大丈夫です。
memcache.php にアクセスした画面

複数の wordpress から同一の memcache サーバーを使用している場合は、
このエントリーが凄い参考になります(Wordpressのobject-cache.phpをハックする)

oracle schemaを削除するクエリ

By admin | 2009年3月3日

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SET serveroutput ON
declare
ob varchar2(4000);
    CURSOR cur IS
        SELECT object_type,object_name FROM user_objects ORDER BY object_type,object_name;
begin
    FOR vRec IN cur LOOP
        begin
            ob := 'DROP ' || vRec.object_type || ' ' || vRec.object_name;
            DBMS_OUTPUT.PUT_LINE(ob);
            execute immediate ob;
        exception
            when others then
                DBMS_OUTPUT.PUT_LINE('No:' || SQLERRM);
                DBMS_OUTPUT.PUT_LINE('Object:' || vRec.object_name);
        end;
    END LOOP;
end;

おまけ

mysql でいう limit みたいなこと。
rownum でしないといけない。相当めんどい。

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
    *
FROM
    (
        --実際に取得したいクエリー
        SELECT
            hoge,
            rownum rn
        FROM
            fuga
    )
WHERE
    1 <= rn AND rn <= 10

さらにさらに
order by した上位10件とかだとこうなる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
    *
FROM
    (
        SELECT
            *,
            rownum rn
        FROM
            (
                --実際に取得したいクエリー
            SELECT
                hoge
            FROM
                fuga
            ORDER BY
                foo
            )
    )
WHERE
    1 <= rn AND rn <= 10

めんどくさすぎる。。。。
というのをただ伝えたかっただけwww

WordPress Themes