最近仕事で実際に開発をしているときに、ビデオに字幕を追加するために Python を実装する必要があることに遭遇しました。どこから始めればよいかわかりませんでした。最終的にコード生成 AI ツールについてアドバイスを求め、この必要性を認識しました。参考までに、問題を解いた後、誰もが落とし穴を回避できるように、落とし穴をすべて明確に書き留めた方が良いと思いました。
このタスクを達成するには、Python のいくつかのライブラリを使用してビデオと字幕の処理を実装する必要があります。具体的には、OpenCV および MoviePy ライブラリを使用してビデオを処理し、pycaption ライブラリを使用して字幕を処理できます。
このタスクを実行するサンプル コードを次に示します。
```python
import cv2
from moviepy.editor import VideoFileClip
import pycaption
# 读取视频文件
clip = VideoFileClip("video.mp4")
# 读取字幕文件
with open("subtitle.srt", "r", encoding="utf-8") as f:
subtitle = pycaption.WebVTTReader().read(f.read()).get_captions("en-US")
# 将字幕转换为SRT格式
srt = pycaption.SRTWriter().write(subtitle)
# 解析SRT格式的字幕内容
cues = pycaption.SRTReader().read(srt)
# 在视频中添加字幕
for cue in cues:
# 获取字幕时间
start = cue.start
end = cue.end
# 将视频中的每一帧读取为图像
for i, frame in enumerate(clip.iter_frames(start=start, end=end)):
# 将字幕渲染到图像上
img = cv2.putText(frame, cue.plaintext(), (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# 写入包含字幕的视频帧
cv2.imwrite("frame_{}.png".format(i), img)
# 将带有字幕的视频帧合成为视频文件
clip_with_subtitle = cv2.VideoWriter("video_with_subtitle.mp4", cv2.VideoWriter_fourcc(*"mp4v"), clip.fps,
(clip.w, clip.h), True)
for i in range(len(cues)):
frame = cv2.imread("frame_{}.png".format(i))
clip_with_subtitle.write(frame)
# 清理临时文件
clip_with_subtitle.release()
cv2.destroyAllWindows()
このコードは、AI アシスタントである v-letter アプレットによって提供されます。