radiko.jp で録音(保存、ダウンロード)したファイルが iOS の CloudBeats や OneDrive で聞けない

iOS の CloudBeats で音楽を聴くようになったのですが、radiko.jp で録音した m4a ファイルが CloudBeats で聴けなかったので調べてみました。

ファイルの情報の確認

もとの aac ファイルの情報は次の通りでした。

Input #0, aac, from 'a.aac':
  Duration: 01:46:17.49, bitrate: 54 kb/s
    Stream #0:0: Audio: aac (HE-AAC), 48000 Hz, stereo, fltp, 54 kb/s

aac ファイルから MP4Box で作った m4a ファイルの情報は次の通りでした。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'b.m4a':
  Metadata:
    major_brand     : M4A
    minor_version   : 1
    compatible_brands: isomM4A mp42
    creation_time   : 2017-12-30T05:33:57.000000Z
  Duration: 01:59:59.57, start: 0.000000, bitrate: 47 kb/s
    Stream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
    Metadata:
      creation_time   : 2017-12-30T05:33:57.000000Z
      handler_name    : aac@GPAC0.5.2-DEV-revVersion: 0.5.2-426-gc5ad4e4+dfsg5-1build1

m4a ファイルは CloudBeats でも OneDrive でも聞けなかったのですが、aac ファイルは CloudBeats でも OneDrive でも聞けました。 少し不思議です。 macOS の iTunes では aac ファイルは聞けなかったのに…

でも、m4a の形式でファイルを保存しておきたいので、もう少し調べてみます。

MP4Box を使わずに、FFmpeg で m4a ファイルを作成する

FFmpeg は拡張子によって柔軟にファイルを作成してくれたはずなので、m4a の拡張子でファイルを作成してみました。

$ ffmpeg -i a.aac -c copy c.m4a
ffmpeg version N-89290-g5f67073b4c-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2017 the FFmpeg developers
…略…
[aac @ 0x539ad60] Estimating duration from bitrate, this may be inaccurate
Input #0, aac, from 'a.aac':
  Duration: 01:46:17.49, bitrate: 54 kb/s
    Stream #0:0: Audio: aac (HE-AAC), 48000 Hz, stereo, fltp, 54 kb/s
Output #0, ipod, to 'c.m4a':
  Metadata:
    encoder         : Lavf58.2.103
    Stream #0:0: Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 54 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=   41692kB time=01:59:59.53 bitrate=  47.4kbits/s speed=9.21e+03x
video:0kB audio:42185kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

作成できました。

できたファイルの情報は次の通りです。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'c.m4a':
  Metadata:
    major_brand     : M4A
    minor_version   : 512
    compatible_brands: isomiso2
    encoder         : Lavf58.2.103
  Duration: 01:59:59.57, start: 0.000000, bitrate: 47 kb/s
    Stream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

minor_version、compatible_brands、encoder あたりが異なっています。 下の方の二つ目の Metadata も異なりますけど、直接的に影響はないと思うのですが…

これを CloudBeats で再生すると…

聞けました!

OneDrive でも聞くことができました。

終わり

原因はよくわからないですが、聞けるようになったので良かったです。 MP4Box を使う必要もなくなり、FFmpeg だけで変換できるようになりました。