QuickTime Player 10 動画再生で特定区間が遅くなる件

https://shingoushori.hatenablog.jp/entry/2018/03/04/001806

こちらの記事を真似して FFmpeg の show 系で遊んでいたら、妙に長い動画に変換されました。

```:shell
% ffmpeg -i input.wav -filter_complex "\
    [0:a]showspectrum=s=320x100,pad=320:180[vs]; \
    [0:a]showwaves=s=320x80[sw]; \
    [vs][sw]overlay=0:H-h[out]" \
    -map "[out]" -map 0:a output.mp4
```

 |input.wav | output.mp4|
 |---|---|
 ![スクリーンショット 2024-05-28 1.49.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798/3a8093aa-bc19-5c53-9c13-cb77b2993e62.png) | ![スクリーンショット 2024-05-28 1.50.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798/84e01b3f-2129-704c-7e72-83e399c825b0.png) |

35分32秒 が 3時間29分39 に増えてます。
また、再生ゲージの下に見た事のないゲージが増えていて、そのゲージの区間だけ再生がとても遅くなります。
全体時間はこの遅くなった分だけ増加しているようです。なお、このゲージの間隔を 0 にすれば普通に再生します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798/c1f8ce79-b5bc-31f1-a125-c6f37ec74701.png" width="50%" />

ブラウザの video タグで再生しても 35分32秒で再生しますし、ffplay でも同じくです。
どうやら、QuickTime Player の特殊事情のようです。

# アドバイス

神よ。。。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">25fpsで揃えると？
ffmpeg -y -i input.wav -filter_complex  "[0:a]showspectrum=mode=combined:color= rainbow:scale=cbrt:slide=scroll:s=320x100:fps=25,pad=320:180[vs]; \
[0:a]showwaves=s=320x80:mode=cline:scale=sqrt[sw]; \
 [vs][sw]overlay=0:H-h[out]" -map "[out]" -map 0:a output.mp4</p>&mdash; ロべルト@FFmpeg本出ました (@nico_lab) <a href="https://x.com/nico_lab/status/1794703332680020288">2024年5月26日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

このコマンドだと確かに問題なくなります。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798/4d89d840-c9a2-0825-6b27-e478e115b50a.png" width="50%" />

なるほど fps 、と思って自分の作った動画をよくよく見ると、巨大な fps 値です。

```:shell
% ffmpeg -i output.mp4
(略)
  Duration: 00:35:32.51, start: 0.000000, bitrate: 353 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 320x180 [SAR 1:1 DAR 16:9], 196 kb/s, 240 fps, 240 tbr, 15360 tbn (default)
```

240 fps　！！？？

先の変換コマンドだとデフォルトでこの  240 fps になるようです。

# 調査

25 - 240 の間で二分探索して問題の発生する閾値を調べました。

> 25 - 240 => 100 => 200 => 150 => 125 => 110 => 105 => 104

```
% ffmpeg -y -i input.wav -filter_complex  " \
    [0:a]showspectrum=s=320x100:fps=104,pad=320:180[vs]; \
    [0:a]showwaves=s=320x80[sw]; \
    [vs][sw]overlay=0:H-h[out]" \
    -map "[out]" -map 0:a output104.mp4
% ffmpeg -y -i input.wav -filter_complex  " \
    [0:a]showspectrum=s=320x100:fps=105,pad=320:180[vs]; \
    [0:a]showwaves=s=320x80[sw]; \
    [vs][sw]overlay=0:H-h[out]" \
    -map "[out]" -map 0:a output104.mp4
```

| output104.mp4 | output105.mp4 |
|---|---|
| ![スクリーンショット 2024-05-27 0.27.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798/3bdd8a5a-5998-2d1b-64b5-8a7a98c4c008.png) | ![スクリーンショット 2024-05-27 0.27.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798/70b940c4-5a13-8b68-5925-bd7163c57226.png) |

fps:104 までセーフ。fps:105 から QuickTime Player の挙動がおかしくなります。

# 備考

もしかしたら、メタデータの解釈が ffmpeg と QuickTime Player で異なるのではと、ffmpeg の metadata を消すコマンドを試したり、バイナリ編集で udta を削ったりして、解決しませんでした。

どなたかヒントを頂けないでしょうか。_:(´ཀ`」 ∠):