動画ファイルに音声を追加する
#ffmpeg
まあふつうに
code::
ffmpeg -i video.mp4 -i audio.mp4 -map 0:v -map 1:a -vcodec copy -acodec copy output.mp4
とかでいいんだけど(参考 https://stackoverflow.com/a/11783474/5979662 )、これだとディスクアクセスが
video.mp4 を全部読む
audio.mp4 を全部読む
output.mp4 を書く
と 3 回行われてしまう。
図にするとこう
https://i.stack.imgur.com/eyCVy.png
( figure from https://stackoverflow.com/a/11783474/5979662 )
思い
コンテナフォーマットに詳しくないので何とも言えないが、
video.mp4 にオーディオのストリームが無い場合は追記
video.mp4 にオーディオのストリームがある場合は置き換え
するような形で音声を追加できないだろうか? #アイデア
図
https://gyazo.com/418ec618eb8eb871636512121c02223c/thumb/500.jpg
もちろん、単純なテキストファイルではないので単に追記というわけにはいかない。
でもヘッダを適切に読み書きして、うまいことコンテナ内部のデータをいじってやればできないか?
もしできたら、ディスクアクセスを
audio.mp4 を読む
audio.mp4 を書く
正しいフォーマットになるようにちゃんとメタデータ類を調整する
のみに減らせて、嬉しそう…
仕様っぽいのが読めるとこ
https://www.iso.org/standard/68960.html
https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFPreface/qtffPreface.html
わかりやすそうな解説
https://qiita.com/satken2/items/d14b4113fe3fb5f5597b
複雑~!
これじゃあちゃんと全部読まないと無理かもしれんねえ…
再帰下降パーサで解析書けそう、いつかやってみたいな #アイデア
効率は悪そう
#mp4