WORDにビデオを入れるには
powerpointでは簡単にビデオをスライドに載せられますWORDではどうでしょうかアイコンしか表示されませんアイコンではビデオの中身が見られませんクリックすると別ウインドウでビデオが表示されますもっといい方法はmp4をgifに変換して画像を貼り付けますそうするとビデオがwordの中で動きます本当ならクリックするとビデオが動いてくれればいいのですがaiにプログラムをつくてもらいましたffmpegを使って変換するようですbuildしてexeにしたので使いやすいですexeにmp4をドロップすると変換を行いますpackage mainimport ( "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", } }}