完遂 (Re: the way to detect sync time of two audios の皮算用)

追記では書いたけれど一応。

the way to detect sync time of two audios の皮算用は、二つの動画を音声に基づいて同期を取りたい場合のオフセットを知りたい、て話だった。

StackOverflow のこのセルフノリツッコミ成果の align-videos-by-sound、PR ぶん投げたらマージしてくれた。Python 2/3 両方で、なおかつ Windows でも動くようになったよ、使ってあげてみな。(正直もうちっと綺麗に書き直してあげたい気もあるがやめといた。)

使い方はたとえば:

パスの通った場所に置いてあるとして、(Unix 的)シェルから
1 [me@host: ~]$ for i in 1 2 4 ; do \
2 > align_videos_by_sound_track.py 3.mp4 $i.mp4 ; \
3 > done
4 Result:
5             The file 'c:\path\to\3.mp4' needs to be have its beginning truncated by 0.9752 seconds for the files' soundtracks to match
6 Result:
7             The file 'c:\path\to\3.mp4' needs to be have its beginning truncated by 7.6858 seconds for the files' soundtracks to match
8 Result:
9             The file 'c:\path\to\3.mp4' needs to be have its beginning truncated by 4.3421 seconds for the files' soundtracks to match

それなりの大きさの動画ならそれなりに時間がかかるが、許容範囲だろうと思う(20分の動画で数分かな?)。どうしても高速に処理したい用があるなら何かほかのものを探すか、部分的に C/C++ にする(Cython を使う)なりもっと numpy らしくするなり色々すれば良くなるだろうとは思うが、動画から wav として音声ファイルを(ffmpegで)抽出する部分もそれなりの時間なので、全てを自力でやろうとしない限りは高速化も限度があるはずなので…、まぁ頑張ってくれとしか言えない。ワタシは興味ない。


2018-06-21追記:
都合3つの PR 投げて全部マージされた。随分許容範囲度がまして、結構実用と思う。

出力は上で紹介したのと少し変更されてるのと、2つ以上のファイルを扱えるようになってるのと、json 形式の出力をするようになったのと。あと max_misalignment を指定すると元動画のスキャン範囲を絞り込めるようになったのと。max_misalignment を使えば、それなりに長い動画の場合待ち時間はかなり短縮する。


2018-06-27追記:
投げた PR、全部マージされた。随分改造した。

一般の人々向けには setup.py 流儀にしたのが一番大きいと思うよ。(スクリプトの名前は変わったが、Windows では exe に包まれるので(Unix もどきを使わないユーザには)オイシイ。)