twilioで生成されたmkaをFFMPEGでflacとかwavに変換する時時間が短くなることがある.
具体的には短くなったりするのだがこの現象を回避しようとすると簡単に実現するとcompostion apiを利用することになる.
ただcomposition apiは遅いので回避したい.
理由はtwilioで生成されたmkaの中身はopusという形式で音声を保持しているが, opusはwavみたいに連続したデータを持たずにgranule positionという情報を持つことでデータの開始位置を持つことで空白時間を気にすることなくデータを保持している.
つまりデータが連続していないわけです.
なのでちゃんと処理しないと空白時間がなかったことにされて実際の情報より短いデータが出力されてしまう.

FFMPEGで処理するときは次の用にパラメータを指定すると空白部分も保持したまま変換することができます.

$ ffmpeg -copyts -i in.mka -filter_complex "[0]aresample=async=1:first_pts=0[a0];[a0]amix=inputs=1" out.mka