peketaminの日記

その辺のプログラマーのチラ裏です。

AVAudioPlayerからaveragePower取って波形にしようとしたけど、そういうことじゃないっぽい

stackoverflow.com

stackoverflow.com

AVAsset を使ってデータを読み込む、と。 なるほど、たしかに…トラック全長のうち、N msecごとに音量取ってグラフにしてもなんか違う気がしてた。 音声データの最小フレーム単位ごとに音量データ欲しいよね。そうしないと拡大縮小がちゃんと出来ないし、 再生位置とグラフ上の位置の対応も不正確になっちゃう。

こっちも使えるのかな。

AudioToolbox | Apple Developer Documentation

えーとあとはcoreaudioか。

んー、AudioKitとEZAudioのExample見てるとそんなことしなくて素直にそれらサードパーティライブラリを使えばはやそうだけど…

でも、でも、自力で

  • 波形が書ける
  • OpenGLで描画出来る

ようになったら、なんか嬉しいし、もうちょっと頑張りたい。

power, amplitude, intensity, level, gain, decibel の関係についても全然分かってないし、RMS (root mean square) についても知らなかったし。

Audacity Waveform - Audacity Manual

あ、でも下手に自分でやるより、EZAudioのソース参考にした方が良いかな…?いや、ちょっと自分でやって見て、分かんなかったら答え見る方がセオリー的にも良さそう。


んー、リアルタイムでプロットしていくのはあったけど、波形全長を描画してズームしたりするのはないっぽい…?

stackoverflow.com

ffmpeg -i input -filter_complex "showwavespic=split_channels=1" output.png
ffmpeg -i input -filter_complex \ "showwaves=s=600x240:mode=line:split_channels=1,format=yuv420p[v]" \ -map "[v]" -map 0:a -movflags +faststart output.mp4

おお、ffmpeg にもそういう機能が!ただ、再生シーク位置と同期するには難しそう…?

えーと、

  • AVFoundation /AVAsset
  • CoreMedia
  • CoreAudio

このへんを当たろう。

描画は、細かくベクタで線が引ければ、滑らかズームはできるのでは…。

やっぱり FDWaveformView/FDWaveformView.swift at master · fulldecent/FDWaveformView · GitHub が参考になるのかな。

Baby Maybe

Baby Maybe

  • ICE
  • J-Pop
  • ¥250