ふと思いつき、1ヶ月ほどかけて、デスクトップPCのiTunes(現「ミュージック」アプリ)にローカル保存している楽曲データ&プレイリストを、NASに移行しました。
音楽鑑賞といえば時代はサブスクですが、筆者は古馴染みの曲を永久に聴くのが好きなので、所有している楽曲データに今後もより便利にアクセスできるようになりたい!というモチベーションでした。
筆者がiTunesの楽曲&プレイリストをNASに移行したモチベーション
- 子供の頃からコツコツCDから取り込んできた楽曲たちを、いつでもどこでも再生できるようになりたい。
- 実家のデスクトップPCにしか保存していない楽曲データを、バックアップの取りやすいNASに移動しておきたい。
- 実家のデスクトップPCからだけでなく、ノートPCからも、CD取り込みができるようにしたい。
- iPhoneからAndroidスマホに近々買い換えたいので、Apple依存から少しずつ脱却していきたい。
今後同じようなことをされる方がいるかもしれないと思い、記録として本記事を書きました。iMacのOSが古いので「iTunes」ですが、現「ミュージック」アプリもライブラリの構成はだいたい同じようなので、同様の手順になるかと思います。
なお、本記事は以下を前提としています。
- NASサーバを構築済みで、移行元のPC(iMacなど)からストレージにアクセスできる。
- ※NAS以外のストレージ(外付けハードディスクなど)にも移行は可能ですが、ストレージ上の楽曲ファイルを再生する手段が別途必要です。
- NASクライアント(スマホなど)からNAS上の楽曲ファイルを再生できる。
- NASクライアント(スマホなど)からNAS上のM3Uファイルを元にプレイリストを参照でき、再生できる。

ぜひ、ご参考にどうぞ!!
0. 移行元・移行先の情報
- 移行元:デスクトップPC(iMac 13,2、2012年製)
実家に設置してあり、CDを取り込み続けて12年以上、全8,715件の楽曲ファイルをローカル保存しています。環境の詳細は脚注1を参照。 - 移行先:NASサーバ(Synology DS218、2017年製)
同じく実家に設置してあります。Synology社は、インターネット経由でNAS上の楽曲ファイルを再生できる「Audio Station」というアプリケーションを提供しています。環境の詳細は脚注2を参照。 - 楽曲再生クライアント:スマートフォン(iPhone 12 mini、2020年製)
Synology社製の「DS Audio」というクライアントアプリで、インターネット経由でNAS上の「Audio Station」サーバにアクセスできます。「Audio Station」はPCなどのWebブラウザ上でも楽曲を再生できますが、PC上で楽曲を再生するケースは個人的にはほとんどないので、本記事ではスマートフォン上での楽曲再生のみを目的としています。環境の詳細は脚注3を参照。
1. 楽曲データの移行
1.1. 移行元のフォルダパスを特定(iTunesの全楽曲データを格納している場所)
iTunes(現「ミュージック」アプリ)上で、適当な1曲を選択して右クリックし、「Finderで表示」をクリックすると、Finder上で元データの楽曲ファイルを特定することができます。


複数のファイルについて同じことをすれば分かりますが、iTunesでは全楽曲データが以下のようなパスのフォルダにまとめて格納されています。(加えて、Appleデバイス上の動画やアプリ、ゲームといったデータも含まれています。)
移行元のフォルダパス: /Users/<Macのユーザ名>/Music/iTunes/iTunes Media
1.2. NASのマウント
移行元のフォルダを特定したので、次は移行先のフォルダを決定したい所ですが、そのために「Finder」アプリ上でNASの中身にアクセスできるようにしておきます。
いくつか方法があるかと思いますが、今回はNASサーバ上でSambaサーバを立てて、Mac上のSambaクライアントでマウントする方法を採用しました。
1.2.1. NASサイド:Sambaサーバの起動(Synology DSM)
Synology社製のNASサーバでは、GUI(DSM)上からSambaサービスを起動できます。
以下のURLをWebブラウザで開いて、NASサーバのDSMにアクセスします。管理者権限を持つユーザでログインすることで、アプリ「コントロールパネル」を開くことができます。http://QuickConnect.to/<NASサーバに設定したQuickConnect ID>
アプリ「コントロールパネル」 > メニュー「ファイルサービス」 > タブ「SMB」を開き、「SMBサービスを有効化」のチェックボックスを付けて「適用」することで、起動が完了します。


1.2.2. Macサイド:Sambaクライアントによるマウント
Mac上で「Finder」アプリを開き、上部メニューから「移動」>「サーバへ接続」をクリックします。「サーバアドレス」の入力を求められるので、上の図1.2.に指示のある通り、以下のURLを入力します。smb://diskstation


接続できればユーザ認証を求められるので、NASユーザのログインIDとパスワードを入力します。これにより、「Finder」上で、以下のようなフォルダパスとしてNASの中身にアクセスできるようになります。/Volumes/<NASサーバ上のトップフォルダ>


1.3. 移行先のフォルダパスを決定(全楽曲データを新しく格納する場所)
「Finder」上でNASの中身をブラウズできるようになったので、移行先のフォルダパスを決めておきます。
Synology社製の楽曲再生サービス「Audio Station」が管理する楽曲ファイル用フォルダは、デフォルトで/music
となっています。そこに今回の移行用のフォルダを作成して、以下のパスのフォルダを移行先とすることとしました。
移行先のフォルダパス: /Volumes/music/iTunes_backup_2025_04
1.4. NASへの全楽曲データのコピー
移行元と移行先が決まったので、実際にデータをコピーします。
対象のデータサイズが大きいことから、全てコピーし切るまで10時間を超えることが予想できます。その中で万一、途中で処理が落ちてしまったら最初からやり直しになってしまいます。また、処理が完了したあとに、本当に全てのファイルが漏れなく破損なく複製できているのかを、大切なファイルだからこそ確認したいです。
そこで、iMacの画面上でコピペ作業をするのではなく、ターミナル上でrsyncコマンドを使ってコピーしました。その手順は以下の別記事にまとめましたので、ご参照ください。


1.5. NASの楽曲再生アプリでの再生チェックと対処
今回の移行の最終目的は、Synology社が提供するスマートフォンアプリ「DS Audio」上で、NAS上の楽曲ファイルを再生することです。「DS Audio」は多くの形式の楽曲ファイルに対応していますが、一部形式のファイルは再生できません(詳細は「Audio Station」の技術仕様4を参照ください)。したがって、ファイル形式ごとに問題なく再生できるかどうかを確認する必要があります。
- 1.5.1. コピーしたファイルの拡張子一覧の確認
- 1.5.2. 不要なファイルの削除
- 1.5.3. MP3ファイルの再生テスト
- 1.5.4. WAVEファイルの再生テスト
- 1.5.5. M4Aファイルのコーデック一覧の取得
- 1.5.6. M4Aファイル(AACコーデック)の再生テスト
- 1.5.7. 再生できないM4Aファイルの対処
1.5.1. コピーしたファイルの拡張子一覧の確認
ファイル形式の全容を把握するため、まずは拡張子一覧を確認します。
iMac上で「ターミナル」アプリを開き、以下のコマンドを実行します。これにより、今回移行したファイルについて、拡張子とその件数を一覧で確認できます。
COPY_DESTINATION_PATH='<移行先のフォルダパス>'
find "$COPY_DESTINATION_PATH" -type f | awk -F/ '{print $NF}' | awk -F. '{print $NF}' | sort | uniq -c | sort -r
筆者の環境では、以下のようになりました。
表1.1. 筆者が移行したファイルの拡張子一覧
拡張子 | ファイル件数 | 「DS Audio」対応 |
---|---|---|
m4a | 5,965 | △:M4Aファイルは、格納している楽曲のコーデックにより再生可否が分かれます。 |
mp3 | 2,725 | ○:MP3ファイルはそのまま再生可能。 |
mp4 | 134 | △:動画ファイルは再生不可のため要変換。 |
ipa | 120 | – :iOS向けのアプリケーションのファイルで、楽曲情報を含まないので削除対象。 |
m4v | 97 | △:動画ファイルは再生不可のため要変換。 |
strings | 29 | – :Mac上で使われるテキストファイルで、楽曲情報を含まないので削除対象。 |
wav | 23 | ○:WAVEファイルはそのまま再生可能。 |
m4p | 2 | △:M4Pファイルは著作権保護されているため、Apple IDで認証されたデバイス以外では再生不可。 |
MP3 | 2 | ○:MP3ファイルはそのまま再生可能。 |
なお、特定の拡張子を持つファイルの一覧を確認したい場合は、「ターミナル」アプリで以下のコマンドを実行します。
COPY_DESTINATION_PATH='<移行先のフォルダパス>'
TARGET_EXT='<対象の拡張子(ドットより右側)>'
find "$COPY_DESTINATION_PATH" -type f -name "*.$TARGET_EXT"
1.5.2. 不要なファイルの削除
表1.1.で確認した通り、いくつか不要なファイルがあるので、NASから削除します。
- iTunesで使われていた楽曲以外のファイル(*.ipa、*.strings)
不要なのでそのまま削除しました。 - 動画ファイル(*.mp4、*.m4v)
内容をすべて確認したところ、楽曲に相当する動画ファイルは1つもなかったので、今回はMP3ファイルなどの楽曲ファイルに変換することはしませんでした。必要な動画は別のフォルダに移動して保管し、それ以外の動画は全て削除しました。 - M4Pファイル
M4Pファイルは著作権保護(DRM)がかかっているため、Apple IDで認証されたデバイス以外では再生できません。今後はApple依存から脱却していきたいことと、そもそも「DS Audio」アプリがM4Pアプリの再生をサポートしていないこともあるので、M4Pファイルは削除しました。
1.5.3. MP3ファイルの再生テスト
不要なファイルを除くと、筆者の所有する楽曲ファイルは、MP3ファイル・WAVEファイル・M4Aファイルの3種であることがわかりました。
MP3ファイルのデータは「MP3」コーデックしかないので、「Audio Station」の技術仕様[4]にて、iOS上での再生がサポートされている、と記載されている以上問題ありません。実際にいくつかを「DS audio」アプリ上で再生してみましたが、問題ありませんでした。
1.5.4. WAVEファイルの再生テスト
MP3ファイルと異なり、WAVEファイル・M4Aファイルはコンテナフォーマットと呼ばれるもので、「箱」として様々なコーデックのデータを格納することができます。なので、どのコーデックの楽曲データが入っているかは一見して分かりません。
とはいえ、標準的なWAVEファイルには、「LPCM」というコーデックのデータが格納されていることが多いようです。また「Audio Station」の技術仕様[4]においても、iOS上での再生がサポートされていると記載されているため、基本的には再生できるものと思われます。実際に23ファイル全てを「DS audio」アプリ上で再生してみましたが、問題なく聴くことができました。
1.5.5. M4Aファイルのコーデック一覧の取得
一方で、M4Aファイルの標準的なコーデックは「ALAC」または「AAC」です。
このうち「ALAC」はApple Lossless Audio Codecの略で、基本的にはAppleデバイス上で再生するためのコーデックです。よって、「Audio Station」の技術仕様[4]に記載の通り、iOS上での再生はサポートされていますが、Android上では再生がサポートされないです。筆者はiPhoneからAndroidスマホに近々買い換えたいと思っているので、所有するM4Aファイルにどの程度「ALAC」コーデックのファイルが含まれるのかを知っておきたいです。
そこで、「ターミナル」アプリで、以下のコマンドを<Macのユーザ名>
を書き換えた上で実行し、Bashスクリプトを作成して簡単にチェックしていきます(複数行に渡っていますが、1つのコマンドです)。このBashスクリプトにより、全M4Aファイルが「ALAC」なのか「AAC」なのか「その他のコーデック」なのかを判別できます。
echo '#!/bin/bash
# 第一引数が指定されているか確認
if [ -z "$1" ]; then
echo "使用方法: $0 <フォルダパス>"
exit 1
fi
TARGET_DIR="$1"
# ffprobeのパスを明示(必要に応じて調整)
FFPROBE="/Users/<Macのユーザ名>/Downloads/ffprobe"
# 指定フォルダ以下のすべての .m4a ファイルを検索
find "$TARGET_DIR" -type f -name "*.m4a" | while IFS= read -r file; do
# ffprobe で音声コーデック名を取得
codec=$("$FFPROBE" -v error -select_streams a:0 -show_entries stream=codec_name \
-of default=noprint_wrappers=1:nokey=1 "$file")
# コーデック名で分類
case "$codec" in
alac)
echo "$file <-> ALAC"
;;
aac)
echo "$file <-> AAC"
;;
*)
echo "$file <-> その他のコーデック ($codec)"
;;
esac
done
echo "$0 process done!"
' > print_codec_of_m4a_files.sh
ここで作成したBashスクリプトprint_codec_of_m4a_files.sh
を実行するためには、「FFprobe」というツールを実行環境(Mac)にダウンロードする必要があります。以下のWebページを開き、「FFprobe」のセクションからffprobe-xxxxxx-xxxxxxxxxxx.7z
といった7Zファイルをダウンロードし、解凍します。すると、実行ファイルが/Users/<Macのユーザ名>/Downloads/ffprobe
として配置されます。
https://evermeet.cx/ffmpeg/
引き続き以下のコマンドを実行し、Bashスクリプトを実行します。
COPY_DESTINATION_PATH='<移行先のフォルダパス>'
chmod +x ./print_codec_of_m4a_files.sh
./print_codec_of_m4a_files.sh "$COPY_DESTINATION_PATH" \
> ./codec_$(date +%Y%m%dT%H%M%S).log \
2> ./codec_error_$(date +%Y%m%dT%H%M%S).log
コマンドが完了するまで待機します。筆者の場合、5,965件のM4Aファイルのコーデックを書き出すのに5分程度かかりました。完了したら、以下のコマンドで標準出力ログファイルの末尾を確認します。
ls -l ./codec_????????T??????.log
tail <↑で確認した標準出力のログファイル名>
./print_codec_of_m4a_files.sh process done!
と最後に表示されていれば、正常に実行完了しています。以下のコマンドを実行し、念のため標準エラー出力のログも確認しておきます。何か致命的なエラーが表示されていなければ問題ないです。
ls -l ./codec_error_????????T??????.log
cat <↑で確認した標準エラー出力のログファイル名>
以下のコマンドを実行することで、「ALAC」コーデックや「その他のコーデック」のファイルを一覧で確認できます。
grep 'ALAC' <↑で確認した標準出力のログファイル名>
grep 'その他のコーデック' <↑で確認した標準出力のログファイル名>
結論、筆者の環境では「ALAC」コーデックや「その他のコーデック」のファイルは1件もなく、全て「AAC」コーデックであることがわかりました。
1.5.6. M4Aファイル(AACコーデック)の再生テスト
ここまでで筆者の環境では、M4Aファイル=「AAC」コーデックということがわかりました。
「AAC」で注意が必要なのは、2023年8月1日以降はSynology社製のNASサーバ上でのトランスコーディングが非対応になっていることです。ただし、以下のプレスリリース5にもある通り、現在ではほぼすべてのデバイス側で再生が可能になっているということなので、基本的にこれが問題になることはなさそうです。
AACでエンコードされたコンテンツは、現代のデジタルメディアとともに数年前から主流になり、スマートフォン、タブレット、スマートテレビを含むほぼすべてのデバイスによって再生できます。そのため、サーバー側のトランスコーディング サポートは過剰な機能となりました。
— サーバー側のAACトランスコーディング提供中止について | Synology Inc.
筆者の所有するM4Aファイルは5,965件存在するので、さすがに全てを再生テストしてみる訳にはいかないのですが、適当に数十曲をスマートフォンで再生テストしてみると、確かに問題なく再生できることを確認しました。
1.5.7. 再生できないM4Aファイルの対処
ところが、(これは偶然見つけたのですが、)ある一部のM4Aファイルだけ再生できないことがわかりました。再生できるM4Aファイルとの差異を考察したところ、「Windowsの『メディアプレーヤー』アプリで、『AAC』コーデックでCDから取り込んだ楽曲ファイル」であることがわかりました。
どうやら、「AAC」コーデック自体にも「AAC-LC」や「HE-AAC」といった複数のプロファイルがあり、互換性がないものも存在するようです。よって、Microsoft社製のWindowsでエンコードした「AAC」コーデックの楽曲ファイルを、Apple社製のiPhoneで再生できない、ということはあり得るように思えます。実際の原因についてはわかっていません。
いくつかの方法で再生できるように変換・修正を試みたのですが、いずれも上手くいきませんでした。(成功した方法がないので、本記事には記載しません。)
対処としては、対象の楽曲ファイルを改めてCDからMP3として取り込み直す方法をとりました。具体的には、「Windowsの『メディアプレーヤー』アプリで、『MP3』コーデックでCDから取り込む」ことをして、これにより無事スマートフォン上で再生できるようになりました。これで、(全ての再生テストはしていないので、理論上は)移行した全ての楽曲ファイルが再生できる状態となりました。
1.6. NASユーザごとに楽曲ファイルを振り分け(手作業)
正常にスマートフォン上で再生できる状態で、移行が完了したので、次に楽曲ファイルをNASユーザごとに振り分ける作業を実施しました。iTunes上では家族全員が同じライブラリに個々人のCDを取り込んでいたので、すべての楽曲がごちゃ混ぜになっています。例えば、筆者が個人的に聴きたいアニメソングや参考書に付属しているCDなどを、家族全員が聴ける状態になっています。
Synology社製の「Audio Station」アプリは、NASのユーザごとのプライベートな楽曲ライブラリと、全員が再生できる共有の楽曲ライブラリをサポートしています。プライベートライブラリは別のユーザからは見えません。(プライベートライブラリを有効にするには、「Audio Station」の設定で「個人のライブラリを有効にする」をONにしておく必要があります。)
楽曲ファイルの振り分け作業は自動化ができないので、/Volumes/music/iTunes_backup_2025_04
配下の全楽曲について、アーティストごとに手作業で以下のフォルダに振り分けました。
共有ライブラリの楽曲: /Volumes/music/Music/<アーティスト名>/<アルバム名>/<楽曲ファイル>
ユーザ1のライブラリの楽曲: /Volumes/homes/<ユーザ1のユーザ名>/music/Music/<アーティスト名>/<アルバム名>/<楽曲ファイル>
ユーザ2のライブラリの楽曲: /Volumes/homes/<ユーザ2のユーザ名>/music/Music/<アーティスト名>/<アルバム名>/<楽曲ファイル>
:
2. プレイリストの移行
2.1. M3Uファイルについて
Synology社製の「Audio Station」アプリ上でプレイリストを作成すると、以下のようなM3Uファイル(拡張子:*.m3u)が作成されます。M3Uファイルとは、世界で標準的に利用されているメディアプレイリストのファイル書式です(ただし、厳密に規格や仕様が取り決められている訳ではないようです)。内容は、単純に楽曲ファイルのパスを1行ずつ列挙したシンプルなテキストファイルになっています。
# 相対パスの記述例 <-- このように、コメントを「#」を付けて追加できます。
../Music/Artist_One/Album_One/Song_One.mp3
# 絶対パスの記述例
/volume1/music/Music/Artist_Two/Album_Two/Song_Two.m4a
:
楽曲ファイルのパスを絶対パスで記載するパターンと、相対パスで記載するパターンがあるようですが、Synology社製の「Audio Station」アプリにおいては、相対パスしかサポートされていません6(絶対パスを指定した場合、楽曲の読み取りエラーになり再生できません)。
また、Synology社製のNASサーバでは、楽曲ファイルと同様にプレイリストについても、共有プレイリストとプレイベートプレイリストを作成することができます。
共有のプレイリスト: /Volumes/music/playlists/<プレイリスト名>.m3u
ユーザ1のプレイリスト: /Volumes/homes/<ユーザ1のユーザ名>/music/playlists/<プレイリスト名>.m3u
ユーザ2のプレイリスト: /Volumes/homes/<ユーザ2のユーザ名>/music/playlists/<プレイリスト名>.m3u
:
2.2. iTunesのプレイリストのエクスポート
iTunesにおいても、既存のプレイリストをM3Uファイルとしてエクスポートできます。そのエクスポートしたM3Uファイルを加工して、NAS上の/volume1/music/playlists/
などに配置することで、iTunes上のプレイリストをNASに移行できるはずです。
iTunes上で対象のプレイリストを選択した状態で、上部メニューから「ファイル」>「ライブラリ」>「プレイリストを書き出し」を選択すると、ファイル保存のための画面が表示されるので、「M3U」の書式で適切な場所に保存します(そのままの内容ではNASサーバ上で認識できないので、いったん一時的なフォルダに入れて保管しておきます)。


筆者の場合は184個のプレイリストをiTunes上で作成していたので、この操作を184回繰り返しました。エクスポートしたM3Uファイルは、以下のようなNAS上の任意の場所にまとめて格納しておきます。
/Volumes/homes/<任意のユーザ>/iTunesからエクスポートしたM3Uファイル
2.3. M3Uファイル上の楽曲ファイルパスの置換
iTunesからエクスポートしたM3Uファイルでは、記載されている楽曲ファイルのパスが、iTunesがインストールされているPC上のパスになっています。よって、これらすべてをNAS上のパスに置き換える必要があります。
2.1.節に記載したように、Synology社製の「Audio Station」アプリでは、M3Uファイルに記載するパスは相対パスにする必要がありますが、今回は以下のような3段階での置換を実施しました。
理由としては、上記①~③を同時に実施すると操作が複雑になるからです。今回は楽曲ファイルとM3Uファイルの両方の格納場所を、ユーザごとに複数箇所に振り分けるため、同時に実施する場合、各楽曲ファイルと各M3Uファイルとの相対位置関係を考慮して置換後のパスを決定する必要があります。
上記のように分けて実施することで、まず①で各楽曲がNAS上のどこに格納されているかを特定し、存在を確認した楽曲ファイルパスを③で相対パスに置換する、というシンプルなステップになります。
2.3.0. NASサーバの端末にログイン
ここまでの作業は全てMac上で実施してきましたが、本節以降はNASサーバ上で作業をしていきます。なぜなら、M3Uファイルに記載するべき楽曲ファイルのパスは、NASをマウントしたMac上のパスではなく、NASサーバ上の実体のパスだからです。
NASサーバの端末に、SSHなどでログインします。Synology社製のNASサーバの場合は、「ターミナル」や「コマンドプロンプト」のような自身の端末にログインするGUIのアプリケーションは用意されていないので、外部からSSHログインする必要があります。
Macの「ターミナル」アプリやWindowsの「PowerShell」アプリを開き、以下のコマンドを実行することで、NASサーバにログインできます。パスワードが求められるので、ユーザ名に対応するパスワードを入力してログインします。
ssh <NASサーバのユーザ名(管理者)>@<NASサーバのIPアドレス> -p <NASサーバ上のSSHサービスのポート番号>
2.3.1. ①NAS上の絶対パスへの置換
楽曲ファイルを複数ユーザに振り分けて格納したため、M3Uファイル上の各楽曲ファイルが現在NAS上のどこに存在するのかは、ユーザ数+共有フォルダの複数候補が存在します。
その中から、NAS上に実際に存在する楽曲ファイルパスを特定して、M3Uファイル上の移行前のパスをNAS上で特定した絶対パスに置換するスクリプトを、今回はPythonで実装しました。


NASサーバ上に最新のPythonをインストールし、以下のレポジトリのスクリプトreplace_heads_of_audio_paths_in_m3u.py
を実行しています。詳細な実行方法は、レポジトリのREADME.md
を参照してください。
設定ファイルの例は以下です。この設定でPythonスクリプトを実行した場合、事前に作成しておいたフォルダ/volume1/homes/<任意のユーザ>/存在する絶対パスに置換したM3Uファイル
にパス置換後のM3Uファイルが生成されます。
DIR_PATH_FOR_INPUT_M3U_FILES: /volume1/homes/<任意のユーザ>/iTunesからエクスポートしたM3Uファイル
DIR_PATH_FOR_OUTPUT_M3U_FILES: /volume1/homes/<任意のユーザ>/存在する絶対パスに置換したM3Uファイル
BASE_PATHS_BEFORE_REPLACE:
- /Users/<Macのユーザ名>/Music/iTunes/iTunes Media # 置換前(元のiTunesのライブラリフォルダ)
BASE_PATHS_AFTER_REPLACE:
- /volume1/music # 置換後(候補1:楽曲を共有ライブラリに格納した場合)
- /volume1/homes/<ユーザ1のユーザ名>/music # 置換後(候補2:楽曲をユーザ1のライブラリに格納した場合)
- /volume1/homes/<ユーザ2のユーザ名>/music # 置換後(候補3:楽曲をユーザ2のライブラリに格納した場合)
なお、1.5.2項などで削除した楽曲ファイルが含まれるプレイリストは置換が失敗するので、エクスポートしたM3Uファイル上で該当楽曲ファイルの行を削除するか、そのプレイリスト自体を移行対象外とすることで対処しました。
2.3.2. ②各NASユーザのフォルダにM3Uファイルを振り分け(手作業)
楽曲ファイルと同様に、プレイリストについても以下のように手作業で振り分けます。楽曲ファイルの振り分けとは独立して考えてよいので、たとえば共有ライブラリの楽曲が含まれているプレイリストを個人用にすることは可能です。
共有のプレイリスト: /volume1/homes/<任意のユーザ>/存在する絶対パスに置換したM3Uファイル/共有
ユーザ1のプレイリスト: /volume1/homes/<任意のユーザ>/存在する絶対パスに置換したM3Uファイル/ユーザ1
ユーザ2のプレイリスト: /volume1/homes/<任意のユーザ>/存在する絶対パスに置換したM3Uファイル/ユーザ2
:
振り分けが完了したら、以下の本来のフォルダにM3Uファイルをそれぞれコピーして格納します。このあとこのファイルを直接書き換えてしまうので、前項で振り分けたファイルは万が一のために作業フォルダに残しておきます。
共有のプレイリスト: /volume1/music/playlists/<プレイリスト名>.m3u
ユーザ1のプレイリスト: /volume1/homes/<ユーザ1のユーザ名>/music/playlists/<プレイリスト名>.m3u
ユーザ2のプレイリスト: /volume1/homes/<ユーザ2のユーザ名>/music/playlists/<プレイリスト名>.m3u
:
2.3.3. ③絶対パスを相対パスに置換
端末上で以下のようなコマンドを実行して、各M3Uファイル上の絶対パスを相対パスに置換していきます。置換はM3Uファイルを格納しているフォルダごとに実施します。(以下はユーザ1のフォルダに格納されている全プレイリストに対しての一括置換の例です。)
# 変換対象のM3Uファイルの格納フォルダパス
M3U_FILES_DIR='/volume1/homes/<ユーザ1のユーザ名>/music/playlists'
# (1)共有ライブラリの楽曲ファイルパスを相対パスに置換
# 楽曲ファイルの親フォルダの絶対パスの文字列
REPLACE_STR_FROM='/volume1/music/Music'
# 楽曲ファイルの親フォルダの相対パスの文字列(対象のM3Uファイルの格納フォルダを基点)
REPLACE_STR_TO='../../../../music/Music'
# M3Uファイルの一括書き換えを実行
find "$M3U_FILES_DIR" -type f \( -name "*.m3u" -o -name "*.m3u8" \) -print0 \
| xargs -0 sed -i "$(printf 's|%s|%s|g' "$REPLACE_STR_FROM" "$REPLACE_STR_TO")"
# (2)ユーザ1のライブラリの楽曲ファイルパスを相対パスに置換
REPLACE_STR_FROM='/volume1/homes/<ユーザ1のユーザ名>/music/Music'
REPLACE_STR_TO='../Music'
find "$M3U_FILES_DIR" -type f \( -name "*.m3u" -o -name "*.m3u8" \) -print0 \
| xargs -0 sed -i "$(printf 's|%s|%s|g' "$REPLACE_STR_FROM" "$REPLACE_STR_TO")"
# (3)ユーザ2のライブラリの楽曲ファイルパスを相対パスに置換
REPLACE_STR_FROM='/volume1/homes/<ユーザ2のユーザ名>/music/Music'
REPLACE_STR_TO='../../../<ユーザ2のユーザ名>/music/Music'
find "$M3U_FILES_DIR" -type f \( -name "*.m3u" -o -name "*.m3u8" \) -print0 \
| xargs -0 sed -i "$(printf 's|%s|%s|g' "$REPLACE_STR_FROM" "$REPLACE_STR_TO")"
:
2.4. M3Uファイル上の拡張情報の記載の削除
Synology社製の「DS audio」アプリ上でプレイリストの内容を確認すると、以下の図の左側のように「<曲名> – <アーティスト名>」が各曲に表示されます。そして、この状態で再生しようとしても、「アーティスト不明」と表示されて再生できず、スキップされてしまいます。


これは、iTunesからエクスポートしたM3Uファイルが「拡張M3U」という書式で記載されているからです。実際のM3Uファイルの中身を確認してみると、以下のように冒頭に#EXTM3U
とコメントが記載されていて、各曲の直前に#EXTINF
から始まるコメントがそれぞれ挿入されています。これらのコメントは、拡張M3Uに対応しているデバイスにおいて特殊なコメントとして内容が読み取られ、曲の表示などを変えることができます。
#EXTM3U
#EXTINF:259,Over Drive - JUDY AND MARY
../Music/JUDY AND MARY/The Great Escape -COMPLETE BEST-/1-01 Over Drive.m4a
#EXTINF:335,ラッキープール - JUDY AND MARY
../Music/JUDY AND MARY/The Great Escape -COMPLETE BEST-/1-02 ラッキープール.m4a
:
「Audio Station」アプリでは、#EXTINF
は、「曲の長さ」(秒)と「曲のタイトル」をカンマ区切りで指定することで、プレイリスト上で表示することができるようです。一方で、iTunesからエクスポートしたM3Uファイルでは、#EXTINF
は「曲の長さ」と「<曲のタイトル> – <アーティスト名>」をカンマ区切りで記載する書式になっているようで、その違いが悪さをしているようでした。
表記がおかしくなることは良いとしても、なぜプレイリストの曲が再生できないのかはわかりませんでしたが、試行錯誤の末、#EXTINF
で始まる拡張情報の行を削除することで、図2.3.の右側のように正しく表示され、再生もできることが判明しました。
端末上で以下のようなコマンドを実行して、各M3Uファイル上の文字列#EXTINF
で始まる行を削除していきます。行削除は、M3Uファイルを格納しているフォルダごとに実施します。(以下はユーザ1のフォルダに格納されている全プレイリストに対しての行削除の例です。)
M3U_FILES_DIR='/volume1/homes/<ユーザ1のユーザ名>/music/playlists'
find "$M3U_FILES_DIR" -type f \( -name "*.m3u" -o -name "*.m3u8" \) -print0 \
| xargs -0 sed -i '/^#EXTINF/d'
2.5. プレイリストの再生テスト
スマートフォンのアプリ上で各プレイリストが問題なく再生されることを、共有プレイリストと個人のプレイリストについてテストします。再生できない場合は、相対パスに問題がある(2.3.3.項)、または拡張情報を削除できていない(2.4.節)といった原因が考えられるので、M3Uファイルの内容を確認して修正します。





iTunesの全楽曲&プレイリストの移行手順は以上です。ここまで読んでいただき、ありがとうございました!
脚注
- 移行元の環境情報
・デスクトップPC: iMac 13,2 (2012)
・MacOS: 10.13.6 High Sierra (2017)
・iTunes: 12.8.3.1 (2019)
・Bash: 3.2.57(1)-release
・Homebrew: 4.4.24
・rsync: 3.4.1
・FFprobe: N-119686-gae0f71a387-tessus
・総楽曲ファイル数: 8,715件
・総プレイリスト数: 178件 ↩︎ - 移行先の環境情報
・NAS: Synology DS218 (2017)
・DSM: 7.2.2-72806 Update 3 (2024)
・Linux: diskstation 4.4.302+ (2024)
・Bash: 4.4.23(1)-release
・Samba: 4.15.13
・Audio Station: 7.2.0-5516 (2024)
・Python: 3.12.10 ↩︎ - 楽曲再生クライアントの環境情報
・スマートフォン: iPhone 12 mini (2020)
・iOS: 18.4.1 (2025)
・DS audio: 5.17.1 (2024) ↩︎ - “Audio Station テクニカルスペック | Synology Inc.”, https://www.synology.com/ja-jp/dsm/software_spec/audio_station. ↩︎
- “サーバー側のAACトランスコーディング提供中止について | Synology Inc.”, https://www.synology.com/ja-jp/company/news/article/AAC_PR. ↩︎
- “全般設定 | Media Server – Synology ナレッジセンター”, https://kb.synology.com/ja-jp/DSM/help/MediaServer/application_mediaserver_general. ↩︎