视频作为输入
虽然大多数大型语言模型(LLM)本身不支持视频处理,但可以通过渲染帧并将其作为图像添加到提示中来集成到脚本中。这个过程可能很繁琐,而GenAIScript提供了高效的辅助工具来简化这一流程。
ffmpeg配置
视频渲染和分析功能依赖于 ffmpeg 和 ffprobe。
在Linux系统上,您可以尝试
sudo apt-get update && sudo apt-get install ffmpeg请确保这些工具已本地安装并在您的PATH环境变量中可用,
或者配置FFMPEG_PATH / FFPROBE_PATH环境变量指向ffmpeg/ffprobe可执行文件。
提取帧
如上所述,多模态大语言模型通常支持将图像作为一系列帧(或屏幕截图)来处理。
ffmpeg.extractFrames 会从视频文件中提取帧画面,并将其作为文件路径数组返回。您可以直接将结果用于 defImages。
- 默认情况下,提取关键帧(内部帧)
const frames = await ffmpeg.extractFrames("path_to_video")defImages(frames)- 使用
count指定帧数
const frames = await ffmpeg.extractFrames("...", { count: 10 })- 使用
timestamps(或times)以秒数或视频时长的百分比来指定时间戳
const frames = await ffmpeg.extractFrames("...", { timestamps: ["00:00", "05:00"],})- 指定由transcribe函数计算的转录文本。GenAIScript将在每个片段的开始处提取一帧。
const transcript = await transcribe("...")const frames = await ffmpeg.extractFrames("...", { transcript })- 指定场景阈值(介于0和1之间)
const transcript = await transcribe("...", { sceneThreshold: 0.3 })提取音频
ffmpeg.extractAudio 会从视频文件中提取音频并保存为 .wav 文件。
const audio = await ffmpeg.extractAudio("path_to_video")使用transcribe时,视频会自动转换为音频。
提取片段
你可以使用ffmpeg.extractClip从视频文件中提取片段。
const clip = await ffmpeg.extractClip("path_to_video", { start: "00:00:10", duration: 5,})视频探测
您可以使用ffmpeg.probe从视频文件中提取元数据。
const info = await ffmpeg.probe("path_to_video")const { duration } = info.streams[0]console.log(`video duration: ${duration} seconds`)自定义ffmpeg选项
您可以通过传递outputOptions进一步自定义ffmpeg配置。
const audio = await ffmpeg.extractAudio("path_to_video", { outputOptions: "-b:a 16k",})或者直接与ffmpeg命令构建器交互
(这是原生的fluent-ffmpeg命令构建器)。
请注意,在这种情况下,您还应提供一个缓存"hash"以避免重新渲染。
const custom = await ffmpeg.run( "src/audio/helloworld.mp4", (cmd) => { cmd.noAudio() cmd.keepDisplayAspectRatio() cmd.autopad() cmd.size(`200x200`) return "out.mp4" }, { cache: "kar-200x200" })CLI
cli 支持多种命令来运行视频转换。
genaiscript video probe myvid.mp4