年会视频合并
公司年会上,摄影师用三台机器分别拍了领导致辞、节目表演和抽奖环节,三个片段各自独立。行政需要在当天晚宴结束前剪出一条完整回顾视频投屏播放。用本工具将三段 MP4 按致辞→表演→抽奖的顺序直接拼接,不转码、不渲染,30 秒内输出一条完整文件,赶在散场前投屏。
>0 时相邻两段在段尾叠化过渡(globalAlpha 渐变);0 为硬切。
诚实标注:本工具纯前端运行,采用「按顺序逐段播放视频 → canvas 连续
drawImage 统一到目标画幅 → captureStream 取视频轨 + 各段原声依次切入
(MediaElementSource → GainNode → MediaStreamDestination)→ MediaRecorder
一次连续录制」,因此输出为 webm 视频(画面重新编码)。
总时长 = 各段时长之和(转场叠化不额外加时)。如需 无损拼接
(同编码同参数,零重编码)或 MP4,请用 FFmpeg
(ffmpeg -f concat -i list.txt -c copy out.mp4)。
导出需保持本页面前台播放至全部段结束。
剪辑师花半小时拼完三段采访,导出时发现中间黑了一帧——这种返工最耗神。输入视频片段,工具按顺序无缝拼接,不重编码,只做容器层合并,保留原始画质与帧率。拼接在浏览器内完成,视频不上传服务器,适合处理未定稿的粗剪素材或本地敏感内容。
公司年会上,摄影师用三台机器分别拍了领导致辞、节目表演和抽奖环节,三个片段各自独立。行政需要在当天晚宴结束前剪出一条完整回顾视频投屏播放。用本工具将三段 MP4 按致辞→表演→抽奖的顺序直接拼接,不转码、不渲染,30 秒内输出一条完整文件,赶在散场前投屏。
老师录制了 45 分钟的直播课,但学校网盘单文件限制 100MB。只能将视频切成 5 段分别上传,学生下载后需要手动拼接才能连贯观看。把 5 个片段拖入工具按顺序合并,输出一个完整文件,学生一次下载即可,不用来回切换播放器。
自驾游 7 天,行车记录仪每 3 分钟自动生成一个片段,存储卡里攒了 300 多个文件。想挑出沿途风景好的几段拼成一条旅行视频发朋友圈,但逐个文件预览太耗时。用工具把日期相近的片段批量选中、排序后合并,只保留一条完整路线视频,方便剪辑软件二次处理。
店铺门口监控拍到凌晨有人撬锁,但录像被系统自动分割成每 15 分钟一段。报案时需要提供从嫌疑人出现到离开的完整连续画面。用本工具把涉及时段的那几段视频按时间戳顺序拼接,输出一条无间断的完整录像,直接刻盘提交警方,避免因文件碎片导致证据链断裂。
婚礼当天,伴郎用手机拍了接亲、外景、仪式三段竖屏视频,想发到亲友群但不想发三个链接。用本工具将三段视频按时间顺序合并成一条,输出后直接分享到微信群,亲友点开就能从头看到尾,不用在聊天记录里翻找不同文件。
| 输入 | 输出 | 说明 |
|---|---|---|
| 输入视频1.mp4(3秒)、视频2.mp4(5秒)、视频3.mp4(2秒) | 输出合并视频.mp4(10秒,按顺序拼接) | 常规:三段不同时长视频顺序拼接,验证基本拼接时长累加正确 |
| 输入视频A.mp4(10秒)、视频B.mp4(10秒) | 输出合并视频.mp4(20秒,A在前B在后) | 常规:两段等长视频,验证拼接顺序与时长累加 |
| 输入视频1.mp4(0秒,空视频或损坏文件) | 报错:输入文件无效或时长为零,请检查文件 | 边界:空/损坏视频文件,工具应拒绝处理并给出明确错误提示 |
| 输入视频1.mp4(300秒,5分钟)、视频2.mp4(600秒,10分钟) | 输出合并视频.mp4(900秒,15分钟) | 边界:长视频拼接,验证大文件处理与时长累加无误 |
| 输入视频1.mp4(3秒,分辨率1920×1080)、视频2.mp4(5秒,分辨率1280×720) | 输出合并视频.mp4(8秒,分辨率以第一个视频为准,即1920×1080,视频2被缩放填充) | 易错:不同分辨率视频拼接,工具默认以第一个视频参数为准,用户需提前统一分辨率 |
| 输入视频1.mp4(3秒,帧率30fps)、视频2.mp4(5秒,帧率60fps) | 输出合并视频.mp4(8秒,帧率以第一个视频为准,即30fps,视频2被抽帧处理) | 易错:不同帧率视频拼接,工具默认以第一个视频帧率为准,可能导致视频2播放卡顿 |
| 输入视频1.mp4(3秒,竖屏1080×1920)、视频2.mp4(5秒,横屏1920×1080) | 输出合并视频.mp4(8秒,方向以第一个视频为准,即竖屏,视频2被旋转并缩放) | 易错:不同方向视频拼接,工具默认以第一个视频方向为准,用户需手动旋转 |
1.视频分辨率不一致导致黑边或拉伸
直接拼接 1920×1080 的横屏视频与 1080×1920 的竖屏视频先统一分辨率:ffmpeg -i input1.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" tmp1.mp4不同分辨率的视频直接拼接时,FFmpeg 默认以第一个视频的尺寸为准,后续视频会被拉伸或缩放,导致黑边或画面变形。
2.编码参数不一致导致重新编码耗时
拼接 H.264 与 H.265 编码的视频,用 concat 协议直接合并先统一编码格式:ffmpeg -i input2.mp4 -c:v libx264 -preset fast -crf 23 tmp2.mp4concat 协议要求所有输入视频的编码格式、分辨率、帧率、采样率完全一致,否则会报错或静默失败。
3.音频采样率不同造成音画不同步
拼接 44100Hz 与 48000Hz 的音频流,不处理直接合并ffmpeg -i input3.mp4 -af "aresample=48000" -c:v copy tmp3.mp4音频采样率不一致时,FFmpeg 不会自动重采样,播放器可能无法正确解析时间戳,导致音频逐渐偏移。
4.使用 concat 协议时文件名含特殊字符
file 'C:\Users\test\video [1].mp4' 在 filelist.txt 中file 'C:\Users\test\video [1].mp4' 改为 file 'C:/Users/test/video [1].mp4' 或转义空格concat 协议读取的文本文件要求路径用单引号包裹,且 Windows 路径中的反斜杠和空格需转义,否则解析失败。
5.关键帧不对齐导致拼接处花屏
用 -c copy 直接拼接两个 GOP 长度不同的视频ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1" -c:a aac output.mp4流复制模式(-c copy)要求输入视频的关键帧位置对齐,否则拼接点会出现解码错误,表现为几帧花屏或黑屏。
6.元数据未重置导致总时长异常
拼接后直接输出,不处理原始文件的 duration 元数据ffmpeg -f concat -i filelist.txt -map_metadata -1 -movflags +faststart output.mp4原始视频的 duration 元数据会残留到输出文件,播放器可能提前结束或显示错误时长,需用 -map_metadata -1 丢弃。
7.帧率不匹配造成播放卡顿
拼接 30fps 与 60fps 的视频,期望流畅过渡ffmpeg -i input4.mp4 -filter:v "setpts=PTS/2" -r 60 tmp4.mp4 # 将30fps拉至60fps帧率不同时,concat 过滤器会以第一个视频的帧率为准,60fps 的视频会被丢弃一半帧,导致动作不连贯。
T = Σᵢ₌₁ⁿ tᵢ
T拼接后总时长,单位秒tᵢ第 i 段视频时长,单位秒n参与拼接的视频段数三段视频时长分别为 15.3 秒、22.8 秒、9.6 秒:T = 15.3 + 22.8 + 9.6 = 47.7 秒,拼接后总时长为 47.7 秒。
可以。本工具后端用 FFmpeg 处理,FFmpeg 会自动尝试重新编码或流复制来适配。但如果两个视频的分辨率、帧率或编码差异太大(比如一个 4K H.265 一个 720p H.264),拼接后可能播放卡顿或音画不同步。建议先统一参数:把两个视频都转成相同分辨率(如 1920×1080)和相同编码(如 H.264),再上传拼接,成功率最高。
因为 FFmpeg 在拼接时会重新编码视频流,默认码率可能比原视频高,导致文件变大。如果原视频码率已经很高(比如 50 Mbps),拼接后可能翻倍。解决办法:在输出设置里手动指定码率,比如选「与原视频一致」或输入一个固定值(如 10 Mbps)。本工具当前没有码率自定义选项,但可以通过后期用其他压缩工具再处理。
最常见原因是两个视频的音频采样率或声道数不一致。比如一个视频是 44100 Hz 立体声,另一个是 48000 Hz 单声道,FFmpeg 拼接时可能没自动对齐。解决方法:在上传前用音频编辑软件把两个视频的音频统一成相同参数(采样率 48000 Hz、立体声)。如果已经拼接完,可以用本工具的「音频提取」功能单独处理后再重新拼接。
本工具目前单次最多支持 10 个视频拼接,但如果你上传的文件顺序混乱或格式不兼容,FFmpeg 可能会忽略部分文件。请检查上传列表的顺序是否正确(按你想要的播放顺序排列),并确保所有视频都是 FFmpeg 支持的格式(mp4、mov、avi、mkv 等)。如果某个文件损坏或编码异常,FFmpeg 会跳过它,不会报错。建议先单独测试每个视频能否正常播放。
黑屏通常是因为两个视频之间有时间戳间隙。FFmpeg 拼接时如果前一个视频的结束时间戳和后一个的开始时间戳不连续,就会插入黑屏。解决方法:在上传前用剪辑工具把每个视频的结尾多余黑屏裁掉,或者用 FFmpeg 命令行手动设置 `-vsync drop` 参数。本工具没有黑屏检测功能,建议上传前先自己检查一遍视频。
是的,所有视频会上传到后端服务器用 FFmpeg 处理,处理完成后服务器会立即删除原始文件和拼接结果(一般 30 分钟内自动清理)。但上传过程走 HTTPS 加密,传输中是安全的。如果视频包含敏感内容(如人脸、身份证、商业机密),建议先在本地用离线工具(如 FFmpeg 命令行或本地软件)处理,不要上传。本工具不存储任何文件,也不用于训练模型。
微信朋友圈视频限制 15 秒以内,且文件大小通常不超过 20 MB。如果你拼接后的视频超过这些限制,需要先压缩或裁剪。本工具没有自动裁剪到 15 秒的功能,但可以用其他工具(如剪映、微信自带的编辑)截取片段后再拼接。如果只是文件太大,可以用压缩工具降低码率到 2-3 Mbps 左右,一般就能通过微信发送。
这通常是因为某个视频的旋转元数据(rotation tag)没有被 FFmpeg 正确处理。比如手机竖屏拍摄的视频会带一个 90° 旋转标签,FFmpeg 拼接时可能丢失这个标签,导致画面横过来。解决方法:在上传前用其他工具(如 FFmpeg 命令行 `-metadata:s:v rotate=0`)先清除所有视频的旋转信息,或者用本工具的「旋转」功能(如果有的话)手动调整。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。