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

ffmpeg-将多个视频去掉音频 然后切片组合成一个视频,再将新视频配置上新的音频

需求分解
1、去除原视频的音频轨道。
2、对去掉音频的视频进行切片。
3、将多个视频切片合并为一个新视频。
4、给新的视频添加新的音频轨道。

  1. 去除视频音频
    要去除视频中的音频,只需使用以下命令
ffmpeg -i input1.mp4 -an -c:v copy output1_no_audio.mp4

解释:
-i input1.mp4:输入原始视频。
-an:移除音频轨道。
-c:v copy:保持源视频的编码格式,无需重新编码。
output1_no_audio.mp4:输出无音频的视频。
对多个视频执行这一操作:

ffmpeg -i input1.mp4 -an -c:v copy output1_no_audio.mp4
ffmpeg -i input2.mp4 -an -c:v copy output2_no_audio.mp4
ffmpeg -i input3.mp4 -an -c:v copy output3_no_audio.mp4

结果:output1_no_audio.mp4 等视频文件将保留视频画面,但没有音频。

  1. 切片视频
    假设需要从无音频的视频中截取特定片段,可以用以下命令完成视频切片:
ffmpeg -i output1_no_audio.mp4 -ss 00:00:10 -t 00:00:05 -c copy slice1.mp4
ffmpeg -i output2_no_audio.mp4 -ss 00:00:00 -t 00:00:08 -c copy slice2.mp4
ffmpeg -i output3_no_audio.mp4 -ss 00:00:15 -t 00:00:04 -c copy slice3.mp4

解释:
-ss 00:00:10:表示从第 10 秒开始切片。
-t 00:00:05:表示切片长度为 5 秒。
切片会分别保存为 slice1.mp4、slice2.mp4、slice3.mp4。

  1. 合并多个切片视频
    合并切片前,需要创建一个包含切片文件列表的文本文件,例如 file_list.txt:
file 'slice1.mp4'
file 'slice2.mp4'
file 'slice3.mp4'

然后,运行以下命令合并切片:

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

解释:
-f concat:指定文件拼接操作。
-safe 0:解决文件名路径问题。
-i file_list.txt:输入文件列表。
-c copy:直接拼接而不重新编码。
结果:combined_video.mp4 是一个合并后的无音频视频。

  1. 为新视频添加新的音频
    假设你的新音频文件是 new_audio.mp3,现在添加该音频到 combined_video.mp4:
ffmpeg -i combined_video.mp4 -i new_audio.mp3 -c:v copy -c:a aac -strict experimental final_video_with_audio.mp4

解释:
-i combined_video.mp4:输入合并后的无音频视频。
-i new_audio.mp3:输入新的音频文件。
-c:v copy:保持视频轨道不重新编码。
-c:a aac:将音频编码为 AAC 格式。
final_video_with_audio.mp4:输出带新音频的视频。
如果需要精确对齐新音频与视频的时长,可以通过调整音频长度或循环音频:

ffmpeg -stream_loop -1 -i new_audio.mp3 -i combined_video.mp4 -c:v copy -shortest -c:a aac final_video_with_audio.mp4

解释:
-stream_loop -1:将音频循环,确保音频长度可以覆盖整个视频。
-shortest:确保输出视频与较短的输入(视频或音频)对齐。

  1. 处理不同的音频采样率或码率
    如果音频需要重新调整采样率或码率,可以添加参数:
ffmpeg -i combined_video.mp4 -i new_audio.mp3 -c:v copy -c:a aac -b:a 192k final_video_with_audio.mp4

解释:
-b:a 192k:将新音频的码率设置为 192 kbps。

完整脚本示例

#!/bin/bash# 去除音频轨道
ffmpeg -i input1.mp4 -an -c:v copy output1_no_audio.mp4
ffmpeg -i input2.mp4 -an -c:v copy output2_no_audio.mp4
ffmpeg -i input3.mp4 -an -c:v copy output3_no_audio.mp4# 视频切片
ffmpeg -i output1_no_audio.mp4 -ss 00:00:10 -t 00:00:05 -c copy slice1.mp4
ffmpeg -i output2_no_audio.mp4 -ss 00:00:00 -t 00:00:08 -c copy slice2.mp4
ffmpeg -i output3_no_audio.mp4 -ss 00:00:15 -t 00:00:04 -c copy slice3.mp4# 创建文件列表
echo "file 'slice1.mp4'" > file_list.txt
echo "file 'slice2.mp4'" >> file_list.txt
echo "file 'slice3.mp4'" >> file_list.txt# 合并视频切片
ffmpeg -f concat -safe 0 -i file_list.txt -c copy combined_video.mp4# 添加新音频
ffmpeg -i combined_video.mp4 -i new_audio.mp3 -c:v copy -c:a aac -shortest final_video_with_audio.mp4echo "处理完成!最终视频文件:final_video_with_audio.mp4"

保存该脚本ffmpeg.sh 然后执行

bash ffmpeg.sh

注意事项
1、视频与音频时长匹配:
如果音频比视频短,使用 -stream_loop 让音频循环。
如果音频比视频长,使用 -shortest 截取音频。

2、音频编码兼容性:
建议使用 aac 或者 mp3 编码作为最终输出格式,以保证兼容性。

3、无损处理 vs 重新编码:
使用 -c copy 时,避免不必要的画质损失,但要求输入输出的编码格式一致。
如果需要适配格式差异,可以重新编码。

相关文章:

  • 【Altium】AD-生成PDF文件图纸包含太多的空白怎么解决
  • 分库分表,分库策略是什么?
  • MJ PDF汉化版:功能强大,阅读无忧
  • 软件设计师2009-2022历年真题与答案解析(附pdf下载)
  • 【教程】Ubuntu修改ulimit -l为unlimited
  • 从 Spring Boot 到 Django —— 后端开发技术类比学习
  • spring-ai-alibaba使用Agent实现智能机票助手
  • opencv 形态学变换
  • SpringBoot整合POI实现Excel文件的导出与导入
  • npm ERR! vue-admin-beautiful@1.0.0 dev: `vue-cli-service serve` 问题解决
  • GEO优化中的关键底座:知识图谱如何提升生成式AI的准确性与实时性?
  • blender 超逼真角色daz 纹理材质 humanpro插件
  • Linux中信号的保存
  • 项目后期发现重大漏洞,如何紧急修复
  • 代码提错分支处理方法
  • 【软考-架构】13.3、架构复用-DSSA-ABSD
  • 1. k8s的简介
  • LeNet神经网络
  • 玩机进阶教程----MTK芯片设备刷机导致的死砖修复实例解析 连电脑毫无反应 非硬件问题
  • 数模小白变大神的日记2025.4.15日
  • 中国词学研究会原会长、华东师大教授马兴荣逝世,享年101岁
  • 蔡达峰:推动食品安全法全面有效实施,为维护人民群众身体健康提供有力法治保障
  • 印巴战火LIVE丨印巴互相发动无人机袭击,巴官员称两国已在国安层面接触
  • 上海将发布新一版不予行政处罚清单、首份减轻行政处罚清单
  • 万里云端遇见上博--搭乘“上博号”主题飞机体验记
  • 个人住房公积金贷款利率下调,100万元30年期贷款总利息将减少近5万元