ffmpeg拼接视频方法concat

摘要:
方法1。使用concat协议合并视频文件。1.对于MPEG格式的视频,“1。mpg|2。mpg|3。mpg“-copyoutput.mp4。2.对于非MPEG格式容器,MPEG2-TS格式要求视频流的任何片段都可以独立解码。vh264_ mp4toanex-fmpegts3.ts ffmpeg-i“连接:

ffmpeg合并视频的方法有三种。

方法一.使用concat协议进行视频文件的合并

    1.对于 MPEG 格式的视频,可以直接连接:

    //视频尺寸要一致

    ffmpeg -i concat:"1.mpg|2.mpg|3.mpg" -c copy output.mp4

    2.对于非 MPEG 格式容器,但是是 MPEG 编码器(H.264、DivX、XviD、MPEG4、MPEG2、AAC、MP2、MP3 等),可以包装进 TS 格式的容器再合并。在新浪视频,有很多视频使用 H.264 编码器,可以采用这个方法(视频尺寸可以不一致)

    ts全称为MPEG2-TS。ts即"Transport Stream"的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。

    ffmpeg -i 1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 1.ts

    ffmpeg -i 2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 2.ts

    ffmpeg -i 3.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 3.ts

    ffmpeg -i "concat:1.ts|2.ts|3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart ts.mp

    保存 QuickTime/MP4 格式容器的时候,建议加上 -movflags +faststart。这样分享文件给别人的时候可以边下边看。

方法二:FFmpeg concat 分离器

    这种方法成功率很高,也是最好的,但是需要 FFmpeg 1.1 以上版本。先创建一个文本文件filelist.txt:

    file 'input1.mkv'

    file 'input2.mkv'

    file 'input3.mkv'

    然后:

    ffmpeg -f concat -i filelist.txt -c copy output.mkv

    注意:使用 FFmpeg concat 分离器时,如果文件名有奇怪的字符,要在 filelist.txt 中转义

    测试了一下,不同尺寸的视频可以正常合成,但是不同格式的合成有问题

方式三:使用concat滤镜(filter)进行视频文件的合并:

    ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex '[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] concat=n=3:v=1:a=1 [v] [a]' -map '[v]' -map '[a]’  output.mp4

    上面的命令合并了三种不同格式的文件,FFmpeg concat 过滤器会重新编码它们。注意这是有损压缩。

    [0:0] [0:1] [1:0] [1:1] [2:0] [2:1] 分别表示第一个输入文件的视频、音频、第二个输入文件的视频、音频、第三个输入文件的视频、音频。concat=n=3:v=1:a=1 表示有三个输入文件,输出一条视频流和一条音频流。[v] [a] 就是得到的视频流和音频流的名字,注意在 bash 等 shell 中需要用引号,防止通配符扩展。

    测试了一下,不同格式正常,不同尺寸会报错。

参考http://trac.ffmpeg.org/wiki/Concatenate
————————————————
版权声明:本文为CSDN博主「_sleeping」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_14826983/article/details/82597272

免责声明:文章转载自《ffmpeg拼接视频方法concat》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java8学习之Stream源码分析JAXB的介绍(转载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WordPress 开启多站点多域名

为什么开启多站点(网络管理)?当我们只有一台服务器,但又想要搭建多个不同的博客(官网)时,一个站点已经满足不了我们的需求,因此我们需要开启WordPress的多站点功能。WordPress多站点功能为WordPress 3.0后的新特性,请注意版本问题。 开启后有什么效果?启动WordPress的多站点功能后,您可以:     1、可搭建多个独立的站点。各...

Linux文档的压缩和打包

摘自:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=7660&extra=page%3D1%26filter%3Dtypeid%26typeid%3D36 1. gzip工具语法: gzip [-d#] filename 其中#为1-9的数字,默认压缩级别为6,只能压缩文件...

C#使用log4net记录日志

一、Nuget安装log4net --> Install-Package log4net 二、在AssemblyInfo.cs文件中添加log4net.dll的参数。 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension...

openstack之Glance介绍

什么是Glance glance即image service(镜像服务),是为虚拟机的创建提供镜像服务 为什么要有Glance 我们基于openstack是构建基本的Iaas平台对外提供虚机,而虚机在创建的时候必须为其选择操作系统,glance服务器就是为该选择提供不同的系统镜像 Glance的功能 glance服务使用户能够发现,注册,检索虚拟机的镜像,...

Ubuntu 如何更换阿里源

#进入源地址 cd /etc/apt #备份源文件 sudo cp sources.list sources.list.bak #编辑 sudo vim /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse...

Linux 内核编译步骤及配置详解

linux 系统体系结构: linux kernel体系结构:arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RING0级别最高,这样linux用户代码运行在RING3下,内核运行在RING0,这样系统本身就得到了充分的保护 用户空间(用户模式)转到内核空间(系统模式)方法:·系统调用·硬件中断 linux kernel 体系结构...