使用Python恢复旧的VCD配音

2021-02-09 20:39:25

我们家庭中的孩子可以同时学习英语和广东话,这是一种很好的支持方式,那就是向他们展示他们喜欢用母语录制的电影,还有什么更好的电影可以向孩子们展示,但吉卜力工作室的电影呢?

但这是一个问题:吉卜力工作室的电影是日语的(自然地),但幸运的是,它们已经被翻译成多种语言并在世界范围内发行了。更好的是,它们现在甚至可以在Netflix上使用。但是,为简单起见,您往往只能获得您所居住的国家或地区的翻译版本,而对于英国...则是英语。

如果幸运的话,可以找到可导入的粤语蓝光副本,但是通常会遇到两个问题:

高价。在亚马逊英国,《千与千寻蓝光》的英文版售价约为12英镑,但广东话的进口价格超过45英镑!

区域锁定。幸运的是,与DVD的6个相比,蓝光只有3个区域!但是,如果您能够负担得起从另一个大陆导入的蓝光,那仍然是一个问题。然后,您可以导入相关播放器,但这会浪费大量现金。

"好吧,我听到你说," ...但是您现在可以在线上流传输这些电影,确定粤语配音一定可以播放吗?"。令人遗憾的是,截至2021年,在线观看吉卜力电影的唯一方法是在Netflix上,而且确实有一些额外的配音,但只占很小的一部分。

..一家人早在2000年代中期就在香港,并带回了一盒吉卜力工作室粤语配音像。不是DVD,VCD。这些东西在西方似乎来来往往很快,被DVD取代。但是,在亚洲,VCD的流行时间更长(https://en.wikipedia.org/wiki/Video_CD#In_Asia)。 VCD在2021年使用时存在两个主要问题:首先,质量只能准确地概括为"土豆"。其次,由于CD的大小限制为700MB,因此必须将电影分成两个磁盘,分成两半。在这个现代时代确实有点裤子!

但是,让我们不要在嘴里看起来像是礼物马,我们绝对可以用这些来做!

我已经拥有几乎所有在英国发行的吉卜力影片,所以现在我有了理想的原始资料。蓝光电影版本的高质量视频,以及VCD上同一电影的广东话配音。我们需要做的就是找到一种将粤语配音复制到高质量视频上的方法...

VCD电影分为两部分,这意味着它们需要重新加入(一点点ffmpeg魔术都做不到!)。

中间的连接有时但并非总是准确,这意味着与全长影片相比,中间可能会缺少毫秒。

VCD影片和Blu Ray影片并不完全相同,VCD的黑屏在开始时会显示几秒钟的本地发行商名称(不同长度)。

追溯到2020年,IBM的我的一些同事对我们的内部代码呼吁竞赛有一个绝妙的主意。 Choirless是一项在线网络服务,可让远距离的合唱团和乐队成员分别录制他们的表演,并让他们自动同步并合并到精彩的表演视频中。绝唱的摘要值得一看:

令我惊讶的是,Chorless所做的使所有表演者同步的工作可能是解决这个问题的灵丹妙药,@ HammerToe编写了一些聪明的python,可以获取两个音频流并将其同步,甚至还提供了他的代码的演练,几个月前,我设法抓住了:

关于此过程,我在这里可以解释的只是重新混编以上视频,因此,我强烈建议您检查一下。但是关键点在于:尽管日语和广东话的音轨会因为语言的不同而有所不同,但是仍然有很多(几乎)相同的音频。在这两个版本中,所有音乐和声音效果都应该相同,这样可以为我们提供确定粤语配音正确起点的确切条件。

该过程从提取视频和视频开始。将蓝光和VCD中的音频传输到您的计算机上,为此我使用了手刹。

然后,您将处理HQ视频(主视频)和第一个VCD视频(辅助视频)。 python脚本将使用起始强度在两个音频流中查找峰值,然后将执行具有不同偏移量的正向和反向传递,以找到起始强度匹配的最佳匹配。

现在,由于VCD被一分为二,我们需要计算出音频应该在那一点上。开始,这样我们就可以在主要轨道上向前跳到正确的位置,从而为我们提供找到偏移的最佳机会。这基本上是以下公式:

一旦做到这一点,我们将对音频的后半部分重复同步过程!有时差异是积极的,而不是消极的,这意味着在中间存在一个可悲的差距,因此我们在进行操作之前需要在中间稍加延迟,因此在您自己执行此操作时请记住这一点。

现在,对于有趣的部分,如果需要添加一些“死空气”,请使用sox将音频流连接在一起。在中间,然后您还可以使用sox生成一些空音频:

将合并的音频添加到现有的HQ电影中:ffmpeg -i high_quality_film.mp4 -i cantonese_merged.aac -map 0 -map 1:a -c复制high_quality_film_Cantonese.mp4

多田 现在,您应该以自己选择的语言在影片上看到一条新的音轨,以供您亲自欣赏。 请记住,仅在您自己的媒体个人副本上使用此过程,并且不要将其分发给其他任何人,否则可能会使您陷入困境! 我放在一起的代码绝对不是生产环境中的任何东西,因为我只需要将它用于我拥有的少量磁盘,但是非常欢迎您将其用于 你自己的目的。 我已将其在GitHub上发布,供您在此处使用: