音视频 fmpeg命令裁剪和合并视频

一、生成测试文件

找三个不同的视频每个视频截取10秒内容

ffmpeg -i 沙海02.mp4 -ss 00:05:00 -t 10 -codec copy 1.mp4
ffmpeg -i 复仇者联盟3.mp4 -ss 00:05:00 -t 10 -codec copy 2.mp4
ffmpeg -i 红海行动.mp4 -ss 00:05:00 -t 10 -codec copy 3.mp4

如果音视频格式不统一则强制统一为 -vcodec libx264 -acodec aac

将上述1.mp4/2.mp4/3.mp4转成ts格式

ffmpeg -i 1.mp4 -codec copy -vbsf h264_mp4toannexb 1.ts
ffmpeg -i 2.mp4 -codec copy -vbsf h264_mp4toannexb 2.ts
ffmpeg -i 3.mp4 -codec copy -vbsf h264_mp4toannexb 3.ts

转成flv格式

ffmpeg -i 1.mp4 -codec copy 1.flv
ffmpeg -i 2.mp4 -codec copy 2.flv
ffmpeg -i 3.mp4 -codec copy 3.flv

分离某些封装格式(例如MP4/FLV/MKV等)中的H.264的时候,需要首先写入SPS和PPS,否则会导致分离出来的数据没有SPS、PPS而无法播放。H.264码流的SPS和PPS信息存储在AVCodecContext结构体的extradata中。需要使用ffmpeg中名称为“h264_mp4toannexb”的bitstream filter处理

二、开始拼接文件

以MP4格式进行拼接

方法1:ffmpeg -i "concat:1.mp4|2.mp4|3.mp4" -codec copy out_mp4.mp4 
方法2:ffmpeg -f concat -i mp4list.txt -codec copy out_mp42.mp4

以TS格式进行拼接

方法1:ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out_ts.mp4 
方法2:ffmpeg -f concat -i tslist.txt -codec copy out_ts2.mp4

以FLV格式进行拼接

方法1:ffmpeg -i "concat:1.flv|2.flv|3.flv" -codec copy out_flv.mp4 
方法2:ffmpeg -f concat -i flvlist.txt -codec copy out_flv2.mp4

方法1只适用部分封装格式,比如TS
建议:
(1)使用方法2进行拼接
(2)转成TS格式再进行拼接

三、测试不同编码拼接

修改音频编码

ffmpeg -i 2.mp4 -vcodec copy -acodec ac3 -vbsf h264_mp4toannexb 2.ts
ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out1.mp4 结果第二段没有声音

修改音频采样率

ffmpeg -i 2.mp4 -vcodec copy -acodec aac -ar 96000 -vbsf h264_mp4toannexb 2.ts
ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out2.mp4 第二段播放异常

修改视频编码格式

ffmpeg -i 1.mp4 -acodec copy -vcodec libx265 1.ts
ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out3.mp4 

修改视频分辨率

ffmpeg -i 1.mp4 -acodec copy -vcodec libx264 -s 800x472 -vbsf h264_mp4toannexb 1.ts
ffmpeg -i "concat:1.ts|2.ts|3.ts" -codec copy out4.mp4

注意:
(1)把每个视频封装格式也统一为ts,拼接输出的时候再输出你需要的封装格式,比如MP4
(2)视频分辨率可以不同,但是编码格式需要统一
(3)音频编码格式需要统一,音频参数(采样率/声道等)也需要统一


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/59688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如果只发布terraform的部分功能,我们该怎么发布

如果你想在一个较大的 Terraform 配置中只发布其中的一部分功能,你可以考虑以下几种方法来实现: 使用 Workspaces: Terraform Workspaces 是一种将同一个配置文件拆分为多个环境的方式。你可以为不同的功能创建不同的 Workspace,然…

外观模式:简化复杂子系统的访问与使用

文章目录 1. 简介2. 外观模式的基本结构3. 外观模式的实现步骤4. 外观模式的应用与实例4.1 图形界面库的外观模式应用4.2 文件压缩与解压缩的外观模式应用4.3 订单处理系统的外观模式应用 5. 外观模式的优缺点5.1 优点5.2 缺点 6. 总结 1. 简介 外观模式是一种结构型设计模式&…

CentOS 7 上安装 Oracle 11g 数据库

本博客将向您介绍在 CentOS 7 操作系统上安装 Oracle 11g 数据库的步骤,以及在 Oracle 数据库中创建表空间和用户的脚本。 1. 安装必要的软件和依赖 首先,我们需要安装一些必要的软件和依赖项。在终端中执行以下命令: yum -y install xorg…

Linux服务器安装部署MongoDB数据库 – 【无公网IP远程连接】

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 前言 MongoDB是一个基于分布式文件存储的数据库。由 C 语言编写,旨在为 WEB 应用提供可扩展的高…

什么是OLAP

一、什么是OLAP OLAP(On-line Analytical Processing,联机分析处理)是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。可以比较下其与传统的OLTP(On-line Transaction Processing,联机事务处理&…

Redisson分布式锁 原理源码 分析

# 基于setnx实现的分布式锁存在的问题: # 为了解决上面的问题,可以用Redisson # Redisson入门 # Redisson可重入锁原理 获取锁的Lua脚本: 释放锁的Lua脚本: # 锁重试原理分析 tryLock()底层代码分析 tim…

什么是自动语音识别?

在人工智能发展和全球疫情的双重作用下,企业加强了与客户的线上沟通。企业越发依赖于虚拟助手、聊天机器人以及其他的语音技术,以实现与客户的高效互动。这几类人工智能,都是依赖于自动语音识别技术,简称为ASR。ASR涉及到将语音转…

Gson与FastJson详解

Gson与FastJson详解 Java与JSON 做什么? 将Java中的对象 快速的转换为 JSON格式的字符串. 将JSON格式的字符串, 转换为Java的对象. Gson 将对象转换为JSON字符串 转换JSON字符串的步骤: 引入JAR包 在需要转换JSON字符串的位置编写如下代码即可: String json new Gs…

python安装playwright问题记录

python安装playwright这个时候,有得时候会https timeout 有的时候会 not found。 我最后使用的方法三,挺好用的。 PyPI The Python Package Index 可以尝试使用的方法 1. 更换pip源:使用国内的pip源可以提高下载速度并减少超时问题。例如&#xff0c…

【PHP】PHP的面向对象编程

PHP面向对象编程是PHP编程的一个重要方向,它通过将数据和操作封装在对象中,使得代码更加模块化、可重用性和易于维护。本文将介绍PHP面向对象编程的基本概念、核心思想和常见应用,并探讨使用PHP面向对象编程时需要注意的问题。 一、概述 PH…

LLM推理部署(一):LLM七种推理服务框架总结

自从ChatGPT发布以来,国内外的开源大模型如雨后春笋般成长,但是对于很多企业和个人从头训练预训练模型不太现实,即使微调开源大模型也捉襟见肘,那么直接部署这些开源大模型服务于企业业务将会有很大的前景,本文将介绍七…

Effective C++条款16——成对使用new和delete时要采取相同形式(资源管理)

以下动作有什么错? std::string* stringArray new std::string[100]; // ... delete stringArray;每件事看起来都井然有序。使用了new,也搭配了对应的 delete。但还是有某样东西完全错误:你的程序行为不明确(未有定义)。最低限度&#xff…

PHP竞赛管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 竞赛管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 下载地址 https://download.csdn.net/download/qq_41221322/88244066 二、功能介绍 后…

Spring Boot Dubbo Zookeeper(含ZK安装脚本)

文章目录 Spring Boot Dubbo Zookeeper&#xff08;含ZK安装脚本&#xff09;简介DubboCommonProviderConsumer Zookeeper Spring Boot Dubbo Zookeeper&#xff08;含ZK安装脚本&#xff09; 简介 Dubbo Common 公共依赖 <!-- Spring Boot Starter --> <dependen…

C#_特性反射详解

特性是什么&#xff1f; 为程序元素额外添加声明信息的一种方式。 字面理解&#xff1a;相当于把额外信息写在干胶标签上&#xff0c;然后将其贴在程序集上。 反射是什么&#xff1f; 反射是一种能力&#xff0c;运行时获取程序集中的元数据。 字面理解&#xff1a;程序运行…

一键实现 Oracle 数据整库同步至 Apache Doris

在实时数据仓库建设或迁移的过程中&#xff0c;用户必须考虑如何高效便捷将关系数据库数据同步到实时数仓中来&#xff0c;Apache Doris 用户也面临这样的挑战。而对于从 Oracle 到 Doris 的数据同步&#xff0c;通常会用到以下两种常见的同步方式&#xff1a; OGG/XStream/Lo…

事务管理-事务进阶-propagation属性

目录 事务属性-传播行为 propagation 案例 需求 步骤 具体代码 小结 事务属性-传播行为 propagation 事务传播行为&#xff1a;指的就是当一个事务方法被另一个事务方法调用时&#xff0c;这个事务方法应该如何进行事务控制。即如果事务方法A中调用了事务方法B&#xff0c…

设计模式-桥接模式

核心思想 适配器模式类似&#xff0c;以后也会遇到意思接近一样的设计模式。在开发中一般多个模式混用&#xff0c;且根据不同的场景进行搭配&#xff0c;桥接模式也是结构型模式将抽象的部分和实现的部分分离&#xff0c;使它们都可以独立的变化。通俗来说&#xff0c;就是通…

探索链表:数据结构的精妙之处

前言 在计算机科学中&#xff0c;数据结构是构建和组织数据的基础&#xff0c;它们是解决复杂问题的关键。然而&#xff0c;在众多数据结构中&#xff0c;链表&#xff08;Linked List&#xff09;因其独特的特点和广泛的应用而备受关注。本文将带您深入探讨链表的概念、种类、…

Linux特殊指令

目录 1.dd命令 2.mkfs格式化 3.df命令 4.mount实现硬盘的挂载 5.unshare 1.dd命令 dd命令可以用来读取转换并输出数据。 示例一&#xff1a; if表示infile&#xff0c;of表示outfile。这里的/dev/zero是一个特殊文件&#xff0c;会不断产生空白数据。 bs表示复制一块的大…