2021年1月14日木曜日

PC 音楽をリピート再生するファイルを ffmpeg で

知人に泣き付かれて、音楽ファイルを作成 ... 。
音楽の繰り返しを組み込んだものを。
リピートボタンを押さなくても、勝手に リピート再生 で!。  ;)
ffmpeg でトライして見ました。


知人、曰く。
CD 等の音源では無く、別のものから拾って、気に入った!。
それを繰り返し、何回も、聴いている、と。
オマケに、その一部分のソロパーツだけ、との事。
車の移動中でさえ、それに浸りたい、と。
運転の最中に、何回もリピートボタンを押すのは ... 。
出来れば、ファイル自体が繰り返す様にしたいのだけれど ... 。
との事。

成る程!、 分かります、その気持ち。

興味が湧いたので、その作成を請け負いました。
作ってあげるよ。  ;)

さて、音源。
著作権の問題もありますから、ソースをお借りして作業後に全てを返却。

ソース音源は .wma でした。
お気に入り の 開始時間と終了時間 も知らせて貰いました。



では、部分リピート!を。



先ずは、
該当部分を抽出し、作業用の別ファイルにします。
ソースファイル名 source.wma だとして、
開始時間が 00:00:30 で、終了時間が 00:01:35 ( 65 秒を抽出 )だと仮定して説明します。
全体はもっと長いので、その一部になる訳です。

ffmpeg.exe が C:¥xxx¥yyy にあり、
ソース及び加工後のファイルを C:¥zzz¥zzz1 に置くものとします。

cmd.exe を起動し、
C:¥zzz¥zzz1 にカレントを移動します。  (ドライブが異なる場合には先ずそれを変えた上で)
C:
cd "C:¥zzz¥zzz1"

では、抽出を。

C:¥xxx¥yyy¥ffmpeg -i "source.wma" -ss 00:00:30 -t 65.0 -vn "temp.wma"

  注: 65.0 は 秒単位の経過(採用)時間  スパン

OR

C:¥xxx¥yyy¥ffmpeg -i "source.wma" -ss 00:00:30 -to 00:01:35 -vn "temp.wma"

  注: 時刻は 共に 最初からの(時点)時間  開始と終了の累積時点

ちゃんと抽出出来ているか、再生して確認してから、次に進みます。
本来なら、時間設定から違和感が生じていないか否か? を確認した方が良いのですが、
請負なので、適当に (?) 判断して調整します。

フェードインやフェードアウトも考慮した方が良いのかも知れませんが、
今回は、ぶつ切り!。
まぁ、性格が出て仕舞う処ですね。

  参考: 3例  65 秒のうち 最初と最後の5秒 fi / fo / fi & fo
      -af afade=t=in:st=0:d=5
      -af afade=t=out:st=60:d=5
      -af afade=t=in:st=0:d=5,afade=t=out:st=60:d=5

尚、ファイル名に関しては、次項に留意事項として書いていますので、名称変更時は注意です。


いよいよ、リピート。
此処では、再生時の 楽曲データ表示も考慮して、メタデータも追加します。
メタデータ絡みのオプション指定 の詳細 に関しては 既投稿 を参照下さい。
https://shiroyuki-mot-says.blogspot.com/2020/08/pc-ffmpeg-can-write-tags-on-musics.html

Internet を検索してやったのですが、以下の方法で上手く出来ました。
少し、泥臭い手法ですが、確実が一番。
きっと、OS や ffmpeg の Version に依存するのかも。
今回は ffmpeg ver 4.2 です。  (既に現在、Version は Up していますが。)

sorce.wma や temp.wma と同じ場所に concat.txt を作成します。
メモ帳 notepad.exe を開き、以下の内容で保存します。
3回繰り返しの例。  同じ内容の行を3行です。
file 'temp.wma'
file 'temp.wma'
file 'temp.wma'
保存は UTF-8 CR+LF で OK です。
また、ファイル名前後の ' を " に変えると、エラーを吐き、実行時に落ちて仕舞いますので、注意を。
尚、 試していませんが、英数半角のファイル名( 此処では temp.wma )にして置くのが無難かも。
日本語のエンコーディングが悪影響を与える事も考えられますから。

さて、cmd.exe に戻り、
以下のコマンドを実行します。  長いです、スクロールして。
C:¥xxx¥yyy¥ffmpeg -f concat -i concat.txt -c copy -metadata album="Album" -metadata title="source 繰返 3" -metadata track=1 -metadata album_artist="Musician" -metadata metadata WM/Year=2020 -metadata artist="Players" "01 source 繰返 3.wma"

基本は、
ffmpeg -f concat -i concat.txt -c copy "output.wma"
です。

これで、source.wma と同じ場所に、01 source 繰返 3.wma が生成されます。

勿論、作業後に temp.wma や concat.txt は不要です。
削除して仕舞って構いません。

Windows Media Player が生成するファイル構成と同じにするには、
¥Musician¥Album の Directory(Folder) を新設し、
其処に、01 source 繰返 3.wma をコピーまたは移動し、
正方形(200px 角を推奨 大きくても可)の Folder.jpg でアルバムジャケットを置けば、
ほぼ、同じ構成になる筈です。
音楽ファイルを再生すれば、ジャケットも楽曲データも表示されている筈です。


私の作業は これで おしまい。
後は知人にフォルダとファイル一式を渡し、
自分の環境下にあるものを削除して、
知人が 車載用に 調整するだけ!。  ;)



0 件のコメント:

コメントを投稿