2014/01/11

SONY WALKMANでのAAC再生

SONY WALKMAN NW-A850


通勤中などに音楽を聞く用途の場合、ノイズキャンセリング対応&そこそこ小型、というのが重要。

ということで、普段はNW-A850を使用している。


こいつを使用する上で、不満だった点がいくつかあった。
  • 24h使用しないとスタンバイモードから電源OFFになるが、電源OFFになると再生していた場所を忘れる
  • Vorbisに対応していない
  • AACに対応と書いてあるが再生できない?

これらのうち、最後のAACの件について少しだけ進展したのでメモ。

aacの再生できなかった状況


NW-A850の仕様一覧を見ると、音声圧縮形式としてAACにも対応、と書いてある。

しかし、*.aacなファイルを入れても再生リストに出てこない。

実は再生不可能なフォーマットになっていて、そういったものはリストに出てこないのかと思って*.wmaで48kHzなファイルを入れてみた。

しかし、再生リストには出てくるが未対応のフォーマットです、と怒られる。ということで再生可能かどうかはあまり関係ないらしい。


aacが再生リストに表示されない原因


WALKMAN用のファイル転送ソフトであるx-アプリに関するWikipediaのページを見ると、aacに関するコンテナフォーマットとしてMP4(*.3gp,*.mp4,*.m4a)と書かれていた。

つまり、拡張子が*.aacで再生リストに表示されなかった理由はコンテナだった。

AACといえば拡張子はaac、と思っていたので、まさかコンテナの問題とは思わなかった…



aac→m4aの変換方法


aacからm4aへの変換はffmpegでできる。

ffmpegで音声変換を行う際の基本的な書式はffmpeg -i <input_filename> -acodec copy <output_filename>だが、どうやらffmpegでは出力ファイル名として*.aacが指定された場合には素のAAC、*.m4aが指定された場合にはMPEG4コンテナに格納されたAACを出力するらしい。

そのため、<input_filename>*.aacを、<output_filename>*.m4aを指定することでAACファイルをMPEG4コンテナに入れることができる。
今回は下記のようなシェルスクリプトを作って一括で変換。

#!/bin/bash

IFS=$'\n'

for input_file in $*
do
/usr/bin/ffmpeg -i ${input_file} -acodec copy ${input_file%.*}.m4a
done

変換した後にWALKMANへコピーすることでリストにも表示されるようになった。

しかし、再生してみると再生はされてるようだけど音が出ない…
詳細情報を見るとビットレートが0kbpsと表示されているのでまだ何かがおかしいらしい。
原因はなんだろうなぁ…


(追記)
いろいろ試してみたところ0kbpsと表示されても再生できるものもある。
  • ダメだったもの: 48kHz / 49kbps
  • 再生できたもの: 44.1kHz / 49kbps, 98kbps, 194kbps

ちなみにNW-A850の仕様には下記のように書いてある。
本体で再生可能なAACファイル形式フォーマット:AAC-LC
ビットレート:16-320kbps(VBR)(サンプリング周波数によっては規格外および保証外の数値も含みます)
サンプリング周波数:8/11.025/12/16/22.05/24/32/44.1/48kHz

サンプリング周波数によっては規格外および保証外の数値も含みますに引っかかってしまっているのかもしれない。


(追記 その2)
先日スペインへ行った際に、WALKMAN本体を紛失してしまった。
そのため試行錯誤も終了。


参考