powerpointでは簡単にビデオをスライドに載せられます
WORDではどうでしょうか
アイコンしか表示されません
アイコンではビデオの中身が見られません
クリックすると別ウインドウでビデオが表示されます
もっといい方法は
mp4をgifに変換して画像を貼り付けます
そうするとビデオがwordの中で動きます
本当ならクリックするとビデオが動いてくれればいいのですが

aiにプログラムをつくてもらいました
ffmpegを使って変換するようです
buildしてexeにしたので使いやすいです
exeにmp4をドロップすると変換を行います
package main
import (
"flag"
"fmt"
"os"
"os/exec"
"path/filepath"
)
// 画質設定を管理する構造体
type QualitySettings struct {
FPS int
Scale int // 幅 (px)
MaxColors int // 最大色数 (最大256)
Dither string // ディザリング手法 (floyd_steinberg, bayer, none)
}
func main() {
// コマンドライン引数の定義
inputFile := flag.String("i", "", "入力するMP4ファイルパス (必須)")
outputFile := flag.String("o", "", "出力するGIFファイルパス (省略時は入力ファイル名.gif)")
preset := flag.String("q", "medium", "画質プリセット: low, medium, high")
customFPS := flag.Int("fps", 0, "カスタムFPS (指定しない場合はプリセットに従う)")
customWidth := flag.Int("width", 0, "カスタム画像幅 (指定しない場合はプリセットに従う)")
flag.Parse()
//---
*inputFile=os.Args[1]
// 必須チェック
if *inputFile == "" {
fmt.Println("エラー: 入力ファイル (-i) を指定してください。")
flag.Usage()
os.Exit(1)
}
// ffmpeg の存在確認
if _, err := exec.LookPath("./ffmpeg"); err != nil {
fmt.Println("エラー: ffmpeg がシステムに見つかりません。パスが通っているか確認してください。")
os.Exit(1)
}
// 出力ファイル名が指定されていない場合の処理
if *outputFile == "" {
ext := filepath.Ext(*inputFile)
*outputFile = (*inputFile)[:len(*inputFile)-len(ext)] + ".gif"
}
// 画質設定の取得
settings := getQualitySettings(*preset)
// カスタム値が指定されていれば上書き
if *customFPS > 0 {
settings.FPS = *customFPS
}
if *customWidth > 0 {
settings.Scale = *customWidth
}
fmt.Printf("変換を開始します: %s -> %s\n", *inputFile, *outputFile)
// fmt.Printf("設定: FPS=%d, 幅=%dpx, 最大色数=%d, ディザリング=%s\n",
// settings.FPS, settings.Scale, settings.MaxColors, settings.Dither)
// FFmpeg フィルター文字列の作成 (高品質化のための2パスパレット処理)
vfFilter := fmt.Sprintf(
"fps=%d,scale=%d:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=%d[p];[s1][p]paletteuse=dither=%s",
settings.FPS, settings.Scale, settings.MaxColors, settings.Dither,
)
// ffmpeg コマンドの構築
cmd := exec.Command("./ffmpeg",
"-y", // 同名ファイルが存在する場合の上書きを許可
"-i", *inputFile, // 入力ファイル
"-vf", vfFilter, // ビデオフィルター
"-loglevel","quiet",
*outputFile, // 出力ファイル
)
// 標準出力と標準エラーをCLIに出力する設定
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
// 実行
if err := cmd.Run(); err != nil {
fmt.Printf("変換エラー: %v\n", err)
os.Exit(1)
}
// fmt.Println("変換が完了しました!")
}
// プリセットに応じた設定を返す関数
func getQualitySettings(preset string) QualitySettings {
switch preset {
case "low":
return QualitySettings{
FPS: 10,
Scale: 320,
MaxColors: 128,
Dither: "bayer:bayer_scale=5", // 容量削減重視のディザリング
}
case "high":
return QualitySettings{
FPS: 20,
Scale: 800,
MaxColors: 256,
Dither: "floyd_steinberg", // 高画質グラデーション重視
}
case "medium":
fallthrough
default:
return QualitySettings{
FPS: 15,
Scale: 480,
MaxColors: 256,
Dither: "floyd_steinberg",
}
}
}