当前位置: 首页 > article >正文

ffmpeg-将多个视频切片成一个新的视频

使用 ffmpeg 工具可以轻松完成将多个视频切片合并为一个新的视频。以下是实现这一目标的具体步骤和命令。

步骤概览
1、将多个视频切片。
2、创建文本文件列出切片的视频片段。
3、使用 ffmpeg 合并这些切片为一个新的视频。

一:安装 ffmpeg
确保你的系统中已经安装 ffmpeg。如果未安装,可以通过以下方式安装:

Windows
下载 ffmpeg官网(https://ffmpeg.org/download.html) 提供的二进制文件。
将 ffmpeg.exe 添加到系统环境变量。
Linux
使用包管理器安装:

 sudo apt update
 sudo apt install ffmpeg

Mac
使用 Homebrew 安装:

brew install ffmpeg

安装完成后,运行以下命令检查版本:

 ffmpeg -version

二:将多个视频切片
假设需要将不同视频文件切片为多个片段,可以针对每个视频执行以下截取命令:
命令示例:截取视频

ffmpeg -i input1.mp4 -ss 00:00:10 -t 00:00:05 -c copy slice1.mp4
ffmpeg -i input2.mp4 -ss 00:00:20 -t 00:00:10 -c copy slice2.mp4
ffmpeg -i input3.mp4 -ss 00:01:00 -t 00:00:08 -c copy slice3.mp4

解释:
-i inputX.mp4:指定源视频文件。
-ss 00:00:10:从视频的第 10 秒开始截取。
-t 00:00:05:截取时长为 5 秒。
-c copy:使用无损方法进行切割(避免重新编码)。
这段命令会从不同的视频源中分别获取特定片段并保存为 slice1.mp4、slice2.mp4 等切片文件。

三. 创建列举视频片段的列表文件
ffmpeg 需要一个文本文件来列举参与合并的所有视频切片。可以按如下格式创建一个文件,例如命名为 file_list.txt:

file 'slice1.mp4'
file 'slice2.mp4'
file 'slice3.mp4'

注意:
每一行使用 file 开头,后面是文件名并用单引号包裹。
文件路径支持绝对路径。如果使用相对路径,则 file_list.txt 需要与切片文件位于相同目录。

四、 使用 ffmpeg 合并切片视频
无重新编码合并
如果所有视频切片的编码格式一样(如同样为 H.264 编码)且分辨率一致,可直接合并:

ffmpeg -f concat -safe 0 -i file_list.txt -c copy output.mp4

解释:
-f concat:指定要进行“文件拼接”的操作。
-safe 0:允许对路径中带特殊字符的文件处理。
-i file_list.txt:输入文件列表。
-c copy:直接拼接而不重新编码(速度更快、无损)。
重新编码合并
若视频切片格式或分辨率不一致,可以选择重新编码合并:

ffmpeg -f concat -safe 0 -i file_list.txt -c:v libx264 -preset fast -crf 23 -c:a aac output.mp4

解释:
-c:v libx264:指定视频编码器为 H.264(使用较高兼容性)。
-crf 23:视频质量参数(可选,范围 0-51,数值越小质量越高)。
-c:a aac:设置音频编码为 AAC。
-preset fast:规定编码的速度等级(如 ultrafast, slow 等)。

五. 合并完成后测试输出视频
合并完成后,可以播放并检查生成的视频:

ffplay output.mp4

或使用系统自带的视频播放器打开 output.mp4。

六、高级功能:自动批量处理
如果需要从大量视频中截取多个片段并合并,可以使用脚本自动化这一流程。以下是一个简单的 Bash 脚本示例:

#!/bin/bash

# 要处理的视频列表
videos=("input1.mp4" "input2.mp4" "input3.mp4")

# 截取片段
for i in ${!videos[@]}; do
    ffmpeg -i "${videos[$i]}" -ss 00:00:05 -t 00:00:10 -c copy "slice$((i+1)).mp4"
done

# 创建拼接列表文件
echo > file_list.txt
for i in $(seq 1 ${#videos[@]}); do
    echo "file 'slice$i.mp4'" >> file_list.txt
done

# 合并视频片段
ffmpeg -f concat -safe 0 -i file_list.txt -c copy output.mp4

echo "合并完成,生成视频:output.mp4"

问题与注意事项
拼接失败报错:concat format is not supported
视频编码格式或分辨率不一致会导致此问题。
使用重新编码方式解决(见“重新编码合并”)。
切片视频不同步
使用 -c copy 时,只能合并具有相同时间戳格式的视频。
添加标志 -reset_timestamps 1 处理时间戳问题。
音频处理问题
如果音频部分需要统一,则建议重新编码并使用统一的音频采样率和音频编码器。


http://www.kler.cn/a/610700.html

相关文章:

  • Azure SDK 使用指南
  • 破解PDF转Word难题:如何选择高效、安全的转换工具?
  • 多版本PHP开发环境配置教程:WAMPServer下MySQL/Apache/MariaDB版本安装与切换
  • Photoshop怎样保存为ico格式
  • 【QT】QT中的中文显示乱码解决
  • 机器人的手眼标定——机器人抓取系统基础系列(五)
  • Docker 命令分类整理
  • AXIOM —— 安装
  • 无人机数据链技术详解,无人机图传数传技术,无人机数据传输技术原理
  • 网络华为HCIA+HCIP 路由
  • Day16 -实例:Web利用邮箱被动绕过CDN拿真实ip
  • Git基础理论知识学习笔记
  • Qt信号槽函数
  • uv - Getting Started 开始使用 [官方文档翻译]
  • Linux笔记---动静态库(使用篇)
  • 使用 Go 和 Gin 实现高可用负载均衡代理服务器
  • 视频网站服务器网络连接不稳定该如何解决?
  • 自然语言处理(13:RNN的实现)
  • WPF x:Static与StaticResource
  • springboot整合couchbase(集群)