观看Apple TV下载的电影时,有一些电影是小语种,会导致完全不能理解电影的剧情。如果有办法能给上述电影添加字幕,就能理解电影内容了。
问题1
Apple TV下载的电影有DRM(Digital Rights Management)保护,因此VLC,Infuse等工具无法播放并自动搜索字幕。只有在Apple TV可以播放。
解决1
通过subler工具,我们可以把从字幕网站下载下来的字幕嵌入到电影文件里:
创建 TX3G 和 WebVTT 字幕轨道,与所有 Apple 设备(iPhone、iPad、AppleTV、iPod、QuickTime)兼容。
将视频、音频、章节、字幕和隐藏式字幕轨道从 mov、mp4 和 mkv 文件混合到 mp4。
如下图所示,点击+号,从外部文件导入轨道。
选择字幕文件(可以从 subtitlecat.com 这种平台下载所需字幕文件),然后在刚才的勾选复选框并保存即可
此时重新打开电影,就能看到导入的字幕了
问题2
字幕轨道和音频轨道不同步
解决2
观察.srt文件的格式:
30
00:03:20,874 --> 00:03:24,624
Papa heeft een paar keer uitgeslapen
op een dag dat het geen uitslaapdag was.
31
00:03:24,749 --> 00:03:28,707
Dus nu moet hij voor straf werken
op een echte uitslaapdag.
32
00:03:31,457 --> 00:03:34,166
Hallo papa, goedemorgen. Met Klaasje.
33
00:03:34,291 --> 00:03:37,624
Klaas, ik sta net op het punt
om de deur uit te gaan.
发现其实很简单,就是序号,时间戳,文字。
因此不需要用一些字幕组使用的专业工具,编写个简单的脚本就能达到目标,即修改时间戳,使之匹配音频。
代码如下:
from datetime import datetime, timedelta
import re
def adjust_time(match):
time_format = "%H:%M:%S,%f"
time_delta = timedelta(seconds=7.5) # Pas dit aan om de verschuiving te veranderen
adjusted_time = datetime.strptime(match.group(), time_format) + time_delta
return adjusted_time.strftime(time_format)[:-3]
def adjust_srt_times(filename):
with open(filename, 'r', encoding='utf-8') as file:
content = file.read()
# Regex om tijden te vinden
time_pattern = re.compile(r'\d{2}:\d{2}:\d{2},\d{3}')
adjusted_content = re.sub(time_pattern, adjust_time, content)
with open(filename, 'w', encoding='utf-8') as file:
file.write(adjusted_content)
# Pas de naam van het .srt-bestand aan
srt_filename = 'AllesIsLiefde.srt'
adjust_srt_times(srt_filename)
总结
以上操作后,我们就可以在观看Apple TV下载的电影时同时看到自己想看的字幕了!