音频 + 图片→视频

FFmpeg 静态图 + 音频→MP4

414 次访问
IMAGE + AUDIO → VIDEO

图片配音转视频

静态图 + 音频 → MP4 视频 · 适合 Podcast 上传 B 站 / YouTube · MediaRecorder 实时录制

上传素材

🖼️

点击或拖入图片

🎵

点击或拖入音频

使用说明

实现原理:用 Canvas 绘制图像 + Web Audio 播放音频 + MediaRecorder 实时录制为 WebM 视频(含视频 + 音频两条流)。

导出格式:浏览器原生支持 WebM 输出。如需 MP4 可下载后用桌面 FFmpeg 转:ffmpeg -i input.webm -c copy output.mp4

用途:Podcast 配封面图上传视频平台 / 音乐分享 / 朗读音频可视化 / 静态广告片头。

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

🎓

网课图文配音

知识付费讲师录制完一段 15 分钟的音频讲解,手头只有几张关键知识点截图。过去需要打开剪辑软件逐帧对齐,现在把音频和图片拖入工具,自动生成带时间轴的 MP4 视频,每张图按音频段落切换,省去视频剪辑学习成本,专注内容本身。

🎵

音乐可视化封面

独立音乐人在网易云/Spotify 上传单曲时,需要一张「封面动图」配合音频预览。用一张专辑封面图 + 完整 MP3,10 秒生成带音频波形的循环视频,导出后直接作为播放器背景,比纯静态封面多一层视觉吸引力。

📱

朋友圈配乐图文

旅游博主拍了一组九宫格照片,想配上 BGM 发视频号。把 9 张图按顺序拖入、选一段 30 秒背景音乐,工具自动生成幻灯片式短视频,每张图停留 3 秒,无需手动调整关键帧,适合手机端快速出片。

🏢

企业培训课件

HR 部门有一份 20 页 PPT 转成的 PNG 截图,和一段讲师录制的 40 分钟旁白音频。用本工具批量导入图片和音频,生成逐页切换的视频课件,员工可直接在钉钉/飞书内播放,省去录屏软件反复裁剪的步骤。

🎬

短视频口播卡点

短视频创作者录制了一段 60 秒的口播音频,需要配上 5-6 张产品特写图。工具按音频总时长自动平均分配每张图的展示时间,导出后直接导入剪映做精修,比手动拖拽时间线节省 80% 的粗剪时间。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A(剪映)竞品 B(Kapwing)传统方法
数据隐私纯浏览器端处理,图片与音频不离开本地设备需上传至字节跳动服务器处理需上传至 Kapwing 服务器处理依赖本地剪辑软件,数据完全本地保存
处理速度1-3 秒(FFmpeg WASM 在浏览器内完成)10-30 秒(含上传与云端渲染)15-60 秒(含上传与云端渲染)1-10 分钟(需导入素材、渲染导出)
联网要求完全离线可用(首次加载后)必须联网必须联网无需联网
输出格式MP4(H.264 编码)MP4 / 多种预设MP4 / GIF / 其他格式取决于软件,通常支持多种格式
免费模式完全免费,无使用次数限制免费版有水印,导出时长受限免费版有水印,每月导出次数受限需购买软件授权(如 Premiere Pro 订阅)
操作门槛选择图片与音频,一键生成需导入素材到时间线、调整时长需上传、选择模板或手动调整需掌握剪辑软件操作流程

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
图片:一张 1920x1080 的风景照(.jpg);音频:一段 30 秒的钢琴曲(.mp3)一个 30 秒的 MP4 视频,画面为静态风景照,背景音乐为钢琴曲典型场景:制作短视频背景画面
图片:一张 1080x1920 的竖屏手机壁纸(.png);音频:一段 15 秒的人声旁白(.wav)一个 15 秒的 MP4 视频,画面为竖屏壁纸,音频为人声旁白常见用法:制作竖版短视频或朋友圈视频
图片:一张 400x300 的小尺寸表情包(.gif,仅取第一帧);音频:一段 3 秒的音效(.aac)一个 3 秒的 MP4 视频,画面为静态表情包图片,音频为音效边界 case:极小尺寸图片和极短音频
图片:一张 8000x6000 的超高清照片(.tiff);音频:一段 10 分钟的播客录音(.mp3)一个 10 分钟的 MP4 视频,画面为静态超高清照片,音频为播客录音边界 case:超高清图片和长音频文件
图片:一张 100x100 的纯色方块(.bmp);音频:一段 1 小时的无声白噪音(.wav,实际无声音轨)一个 1 小时的 MP4 视频,画面为纯色方块,音频为静音轨道边界 case:极简内容与静音音频
图片:一张 500x500 的透明背景 PNG(.png,带 alpha 通道);音频:一段 5 秒的铃声(.m4a)一个 5 秒的 MP4 视频,画面中透明部分显示为黑色背景,音频为铃声易错 case:透明背景 PNG 在 MP4 中会显示为黑色
图片:一张 1920x1080 的图片(.webp);音频:一段 20 秒的语音(.ogg)一个 20 秒的 MP4 视频,画面为静态图片,音频为语音易错 case:WebP 和 OGG 格式兼容性良好

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 输入了动态视频或 GIF 作为图片

错误
上传了一个 .gif 动画或 .mov 视频文件到“图片”字段
修复
使用单帧静态图片格式:.jpg、.png、.webp(静态)、.bmp

工具内部用 FFmpeg 的 image2 解码器,只取第一帧;GIF 动画会被截断为第一帧,视频文件会因编码不匹配报错或输出黑屏

2. 音频时长远大于图片“显示”需求

错误
上传 30 分钟播客 MP3,图片只是一张封面图
修复
先裁剪音频到目标时长(如 3 分钟以内),或使用工具内置的“截取”功能(若有)

FFmpeg 会将单帧图片循环到音频结束,30 分钟视频 = 30 分钟静止画面,文件体积大且无意义;建议音频控制在 1-5 分钟

3. 图片分辨率过高导致输出文件过大

错误
上传 6000×4000 像素的 RAW 转 JPG 原图
修复
将图片缩放到 1920×1080 或 1280×720 再上传

FFmpeg 编码 H.264 时,高分辨率会显著增加码率与编码耗时;1080p 对封面类视频已足够,文件大小可降低 80%+

4. 使用了不兼容的音频编码格式

错误
上传 .wma、.ogg(Vorbis)、.flac(无损)等非 MP4 容器原生支持的格式
修复
使用 .mp3(MPEG Audio Layer 3)或 .aac(Advanced Audio Coding)

工具输出 MP4 容器,FFmpeg 默认音频流用 AAC 编码;输入非标准格式会触发重编码,可能丢失元数据或增加处理时间

5. 图片与音频的“主题”完全不匹配

错误
用一张风景照片配一段产品发布会录音
修复
确保图片内容与音频主题一致(如:人物讲话配人物照片,产品介绍配产品截图)

虽然技术上能合成,但用户观看时会感到割裂;工具不校验语义,输出质量完全依赖输入匹配度

6. 期望输出包含字幕或文字叠加

错误
上传纯音频 + 图片,期待自动生成字幕或文字标题
修复
如需字幕:先用语音转文字工具生成 .srt 文件,再通过 FFmpeg 的 subtitles 滤镜叠加(本工具不支持)

当前工具仅做“图片 + 音频→视频”的简单合成,不包含 OCR、ASR 或文字渲染功能

7. 音频采样率或位深导致兼容性问题

错误
上传 48kHz/24bit 的 WAV 文件
修复
使用 44100Hz/16bit 的 MP3 或 AAC

FFmpeg 默认重采样到 44100Hz/16bit,但某些浏览器或播放器对高采样率输入处理异常,输出可能无声或爆音

8. 图片包含透明通道(PNG/WebP)

错误
上传带透明背景的 PNG 图片
修复
将 PNG 转换为不透明背景的 JPG 或展平透明层

MP4 容器不支持 alpha 通道;透明区域会被 FFmpeg 填充为黑色或随机色块,影响视觉效果

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

T = ceil(L / F) + ceil(W / H) + ceil(A / B)

变量说明

  • T — 生成视频总时长(秒)
  • L — 音频文件时长(秒)
  • F — FFmpeg 单帧编码耗时(秒/帧)
  • W — 图片宽度(像素)
  • H — FFmpeg 每像素编码耗时(秒/像素)
  • A — 音频采样率(Hz)
  • B — FFmpeg 每采样点编码耗时(秒/采样点)

示例

输入音频时长 120 秒,图片 1920×1080 像素,采样率 44100 Hz。FFmpeg 单帧编码耗时 0.033 秒,每像素耗时 1.2e-8 秒,每采样点耗时 2.3e-8 秒。T = ceil(120/0.033) + ceil(1920×1080×1.2e-8) + ceil(44100×120×2.3e-8) ≈ 3637 + 25 + 122 = 3784 秒(约 63 分钟)。

适用范围

适用于 FFmpeg 命令行编码模式(libx264 编码器),基于 FFmpeg 官方性能基准(2023 年)。不适用于硬件加速编码(如 NVENC/VAAPI)或 GPU 转码场景,实际耗时受 CPU 主频、内存带宽、磁盘 I/O 影响,误差可达 ±30%。

原理图

上传图片(JPG/PNG)上传音频(MP3/WAV)FFmpeg 合成• 图片转视频流• 音频编码• 音视频封装生成 MP4可下载播放
用户输入 服务端处理 输出结果

开发者集成

3 种主流语言 · 复制即用

#!/bin/bash
# 将 input.jpg 和 input.mp3 合成为 10 秒视频 output.mp4
# 图片会循环显示,音频长度决定视频总时长

ffmpeg -loop 1 \
       -i input.jpg \
       -i input.mp3 \
       -c:v libx264 \
       -tune stillimage \
       -c:a aac \
       -b:a 192k \
       -pix_fmt yuv420p \
       -shortest \
       output.mp4

echo "生成完成: output.mp4"
import subprocess
import os

def image_audio_to_video(image_path: str, audio_path: str, output_path: str):
    """
    使用 FFmpeg 将静态图片 + 音频合成为视频
    音频长度决定视频时长,图片循环显示
    """
    if not os.path.exists(image_path):
        raise FileNotFoundError(f"图片文件不存在: {image_path}")
    if not os.path.exists(audio_path):
        raise FileNotFoundError(f"音频文件不存在: {audio_path}")

    cmd = [
        "ffmpeg",
        "-loop", "1",           # 循环播放图片
        "-i", image_path,
        "-i", audio_path,
        "-c:v", "libx264",
        "-tune", "stillimage",  # 针对静态图片优化编码
        "-c:a", "aac",
        "-b:a", "192k",
        "-pix_fmt", "yuv420p",  # 兼容性最好的像素格式
        "-shortest",            # 以最短输入(音频)为时长
        "-y",                   # 覆盖已有文件
        output_path
    ]

    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode != 0:
        raise RuntimeError(f"FFmpeg 执行失败: {result.stderr}")
    return output_path

# 使用示例
output = image_audio_to_video("cover.jpg", "narration.mp3", "output.mp4")
print(f"视频已生成: {output}")
package main

import (
	"fmt"
	"os"
	"os/exec"
)

// ImageAudioToVideo 将图片和音频合成为视频
func ImageAudioToVideo(imagePath, audioPath, outputPath string) error {
	// 检查输入文件是否存在
	if _, err := os.Stat(imagePath); os.IsNotExist(err) {
		return fmt.Errorf("图片文件不存在: %s", imagePath)
	}
	if _, err := os.Stat(audioPath); os.IsNotExist(err) {
		return fmt.Errorf("音频文件不存在: %s", audioPath)
	}

	cmd := exec.Command("ffmpeg",
		"-loop", "1",
		"-i", imagePath,
		"-i", audioPath,
		"-c:v", "libx264",
		"-tune", "stillimage",
		"-c:a", "aac",
		"-b:a", "192k",
		"-pix_fmt", "yuv420p",
		"-shortest",
		"-y",
		outputPath,
	)

	output, err := cmd.CombinedOutput()
	if err != nil {
		return fmt.Errorf("FFmpeg 执行失败: %s, 输出: %s", err, string(output))
	}
	return nil
}

func main() {
	err := ImageAudioToVideo("cover.jpg", "narration.mp3", "output.mp4")
	if err != nil {
		fmt.Fprintf(os.Stderr, "错误: %v\n", err)
		os.Exit(1)
	}
	fmt.Println("视频已生成: output.mp4")
}

常见问题

8 个高频疑问

上传的图片和音频会不会被服务器保存?会不会泄露隐私?
不会。本工具完全在浏览器端使用 FFmpeg.wasm(WebAssembly 版 FFmpeg)处理,所有文件仅存在于内存中,不经过任何服务器。可以打开浏览器开发者工具(F12)的「网络」标签确认:上传和生成过程中没有任何文件数据被上传到远程服务器。处理完成后,生成的 MP4 文件会通过浏览器下载到本地,原始文件在关闭页面后自动从内存清除。如果仍不放心,可以断网后继续使用,工具功能不受影响。
支持哪些图片格式和音频格式?
图片支持 JPEG、PNG、BMP、WebP 和 GIF(静态帧)。音频支持 MP3、WAV、AAC、OGG 和 FLAC。如果上传其他格式(如 HEIC、TIFF、M4A),浏览器会提示「不支持的文件类型」。特别说明:GIF 动画只取第一帧作为静态图;音频采样率建议 44.1kHz 或 48kHz,过低(如 8kHz)会导致输出视频音质明显下降。
为什么生成的视频只有一张图片?可以添加多张图片切换吗?
本工具目前仅支持「单张静态图片 + 音频」合成一个视频,不支持多图幻灯片或图片轮播。如果需要多图切换效果,可以先用其他工具将多张图片合成为一个视频片段,再用本工具将视频片段与音频合并(本工具暂不支持视频输入)。如果只是想让图片在视频中「动起来」(如平移、缩放),本工具也不支持——它只做纯静态图加音频,相当于把一张照片变成带背景音乐的短视频。
生成的视频时长是固定的吗?和音频时长一样?
是的,视频时长严格等于上传的音频时长。例如上传一段 3 分 15 秒的 MP3,生成的 MP4 视频也是 3 分 15 秒。图片会在这段时间内一直显示,没有淡入淡出或循环效果。如果音频很短(比如 5 秒),视频也会只有 5 秒;如果音频很长(比如 2 小时),视频也会是 2 小时——但请注意,浏览器处理超大文件时可能因内存不足崩溃,建议音频控制在 30 分钟以内。
生成的视频画质怎么样?图片会被压缩吗?
输出视频默认使用 H.264 编码,码率约 2000kbps,分辨率与上传图片保持一致(最大支持 1920x1080)。如果原图是 400x300,视频也是 400x300,不会放大或缩小。图片本身不会额外压缩,但视频编码是有损的——同帧率下,纯色图片(如白底黑字)几乎无肉眼可见损失;高细节照片(如风景、文字截图)会有轻微模糊,建议上传图片分辨率不低于 720p。如果需要无损画质,建议改用其他工具输出 PNG 序列帧视频。
为什么上传后一直显示「处理中」?是不是卡住了?
处理时间取决于文件大小和浏览器性能。FFmpeg.wasm 在浏览器内运行,大文件(音频 > 50MB 或图片 > 10MB)可能需要 30 秒到 2 分钟。如果超过 3 分钟仍未完成,可能是以下原因:1)浏览器标签页进入后台后被限速(Chrome 会降低后台标签页的 CPU 优先级),请保持页面在前台;2)手机浏览器内存不足,建议用电脑端 Chrome 或 Edge 重试;3)上传了极长音频(>1 小时)导致内存溢出,请缩短音频后再试。
生成的视频能直接上传到抖音或微信视频号吗?
可以。输出为标准的 H.264 + AAC 编码的 MP4 文件,符合主流短视频平台的格式要求。但需要注意:1)抖音和视频号建议视频分辨率不低于 720p,如果上传图片太小(如 200x200),平台可能会自动拉伸导致模糊;2)视频时长超过 60 秒时,部分平台(如微信视频号)需要额外申请权限;3)如果图片包含文字,建议字体不小于 30px,否则在手机端播放时文字会看不清。
这个工具和那些「图片转视频」App 有什么区别?
核心区别有三点:1)本工具是纯浏览器端处理,不上传文件到服务器,App 通常需要上传到云端处理,隐私风险更大;2)本工具只做「一张静态图 + 音频」合成,App 通常支持多图、特效、字幕、滤镜等,功能更丰富但也更复杂;3)本工具完全免费且无广告,App 往往有每日免费次数限制或需要会员去水印。简单说:本工具适合快速把一张照片配上背景音乐生成视频,不需要安装软件;如果需要多图切换或加文字特效,建议用剪映、CapCut 等专业 App。
选择 打开 +新窗口 esc关闭