diary/Kojima/2013-08-17
の編集
http://sv5.linet.gr.jp/index.php?diary/Kojima/2013-08-17
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
[[diary/Kojima]] ・Plamo-5.1とradiru_rec.py 自作の「らじる☆らじる」録音用スクリプト、毎日せっせと語学講座を録音してくれているのだけど、 そろそろサーバ類をPlamo-5.1な環境に移行しようかと思って、新しく組んだマシンで動かしてみた。 atコマンドで録音する機能は問題なく動いたのだけど、生成したmp3なデータファイルはノイズまみれで聞けたもんじゃない。 さて、何がどうなっているのだろう、、としばし追いかけてみた。 結論としては、mplayerで「らじる☆らじる」のサイトからデータをダウンロードしてくるところまでは問題ないものの、 それをlameでmp3に変換するところでエラーが起きているらしい。 改めて手動でWAVなファイルをMP3に変換しようとしてみると $ lame test.pcm test.mp3 Unsupported data format: 0x0003 というエラーになってしまう。あれれ、、と思ってGoogleで調べてみると、 これはlame-3.8xではサポートしていない32ビットfloatなPCMデータを変換しようとした際のエラーらしい。 何故、WAV形式で保存したデータが32ビットfloatになっちゃうんだろう、と調べてみたところ、 Plamo-5.1ではffmpeg由来のlibavcodecで用が足りるだろうと、 Plamo-5.0では入れていたlibmpg123を外したのが原因だった模様。 このlibmpg123がリンクされていると、mplayerはWAV(PCM)形式のデータを本来の16ビットintな形式で保存するのだけど、 libavcodecを使うと32ビットfloatな形式がデフォルトになるらしい。 libmpg123を使うようにビルドしなおすことも考えたけど、-af format=s16le というオプションを指定すれば、 16ビットintな形式で保存してくれるようなので、とりあえず radiru_rec.py スクリプトで生成するシェルスクリプトに このオプションを指定するようにしてみたところ、無事 MP3 形式に変換することが可能になった。 ちなみに、lameを3.95あたりに更新すると、32ビットfloatなWAVファイルもちゃんと扱えるようになるものの、 rawなWAV(PCM)データを受ける際の -r オプションを指定すると、受け取ったデータは16ビットintな形式だと見なすようで、 同じ問題が発生する模様。 この手の組み合わせ依存の問題は、実際にその問題に直面しない限り、問題の存在自体に気付かないから厄介だなぁ。。 #comment
タイムスタンプを変更しない
[[diary/Kojima]] ・Plamo-5.1とradiru_rec.py 自作の「らじる☆らじる」録音用スクリプト、毎日せっせと語学講座を録音してくれているのだけど、 そろそろサーバ類をPlamo-5.1な環境に移行しようかと思って、新しく組んだマシンで動かしてみた。 atコマンドで録音する機能は問題なく動いたのだけど、生成したmp3なデータファイルはノイズまみれで聞けたもんじゃない。 さて、何がどうなっているのだろう、、としばし追いかけてみた。 結論としては、mplayerで「らじる☆らじる」のサイトからデータをダウンロードしてくるところまでは問題ないものの、 それをlameでmp3に変換するところでエラーが起きているらしい。 改めて手動でWAVなファイルをMP3に変換しようとしてみると $ lame test.pcm test.mp3 Unsupported data format: 0x0003 というエラーになってしまう。あれれ、、と思ってGoogleで調べてみると、 これはlame-3.8xではサポートしていない32ビットfloatなPCMデータを変換しようとした際のエラーらしい。 何故、WAV形式で保存したデータが32ビットfloatになっちゃうんだろう、と調べてみたところ、 Plamo-5.1ではffmpeg由来のlibavcodecで用が足りるだろうと、 Plamo-5.0では入れていたlibmpg123を外したのが原因だった模様。 このlibmpg123がリンクされていると、mplayerはWAV(PCM)形式のデータを本来の16ビットintな形式で保存するのだけど、 libavcodecを使うと32ビットfloatな形式がデフォルトになるらしい。 libmpg123を使うようにビルドしなおすことも考えたけど、-af format=s16le というオプションを指定すれば、 16ビットintな形式で保存してくれるようなので、とりあえず radiru_rec.py スクリプトで生成するシェルスクリプトに このオプションを指定するようにしてみたところ、無事 MP3 形式に変換することが可能になった。 ちなみに、lameを3.95あたりに更新すると、32ビットfloatなWAVファイルもちゃんと扱えるようになるものの、 rawなWAV(PCM)データを受ける際の -r オプションを指定すると、受け取ったデータは16ビットintな形式だと見なすようで、 同じ問題が発生する模様。 この手の組み合わせ依存の問題は、実際にその問題に直面しない限り、問題の存在自体に気付かないから厄介だなぁ。。 #comment
テキスト整形のルールを表示する