簡便なプレゼンテーション

(2024-10-06)

以前から考えていることですが、プレゼンテーションは文字だけではなくて、図だけでもなくて、 アニメーション + 音声で作った方が最も刷り込みが効率的にできると思っているのですが、daVinci Resolve で作成するのはかなり時間がかかってしまいます。

慣れれば daVinci Resolve が最も質の高いコンテンツが作れる気がしますが、もっと簡単に作れる方法はないかと思っていました。

power point で静止画を作成、 python で音声ファイルを作成し結合する

power point の使い方はあまり良くわかりませんが、この方法が最も簡単かもしれません。

power point で静止画を作成

例えば以下のようなタイトルを作成します。

python で音声ファイルを作成

以下のようなテキストファイルを作成します。

windows2000に、office2000 professional をインストールします。

これを python で音声化します。

from gtts import gTTS
import os
import subprocess
dir = 'C:/Users/mituo/Documents/vscode_python/Speaker/text/'
textfile = dir + 'senario.txt'
fp_in = open(textfile, encoding='utf-8')
text_aa = fp_in.read()
fp_in.close()
if(os.path.isfile(dir + 'def.mp3')):
os.remove(dir + 'def.mp3')
tts = gTTS(text_aa, lang='ja', slow=False)
tts.save(dir + 'def.mp3')
command = 'ffmpeg -y -i ' + dir + 'def.mp3 -af atempo=1.2 ' + dir + 'output.mp3'
subprocess.call(command, shell=True)
os.system('start ' + dir + 'output.mp3')

静止画と音声ファイルを結合

python で静止画と音声ファイルを結合します。

from moviepy.editor import *
# 画像と音声のファイルパス
image_path = 'C:/Users/mituo/temp/office2000 - 1.png'
audio_path = 'C:/Users/mituo/temp/output.mp3'
output_path = "output_video.mp4"
# 画像クリップを作成(画像の長さを音声の長さに合わせるため duration は指定しない)
image_clip = ImageClip(image_path)
# 音声クリップを作成
audio_clip = AudioFileClip(audio_path)
# 画像クリップの長さを音声クリップの長さに設定
image_clip = image_clip.set_duration(audio_clip.duration)
# 画像クリップに音声を追加
video_clip = image_clip.set_audio(audio_clip)
# 動画をMP4で出力
video_clip.write_videofile(output_path, fps=24, codec="libx264")

出来上がったものは、

Safari では音声が出ない

上の方法で作成された mp4 ファイルを iPad の Safari で閲覧しようとしても音声が出ません。

以下のように変換すれば音声が出ます。この理由がわかりません。

#!/bin/sh
for file in `find ./before -name "*.mp4"`; do
faname_ext="${file##*/}"
fname="${faname_ext%.*}"
echo $fname
ffmpeg -i $file -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" ./after/$fname.mp4
done