[转载]用 FFMPEG 合并 MP4 视频

因为 ffmpeg 是支持切分 mp4 视频的,所以我就理所当然的以为 ffmpeg 是支持视频合并。直到今天同事找我问方法,才发现一直以为的方法是错误的, mp4 不支持直接 concate(丢人了。。。),赶紧补了一下能量,从网上抓来了多种实现。

注: 这里的 mp4 指的是网上最多见的 h264+aac mpeg4 容器的方式

1). ffmpeg + mpeg

这种是网上最常见的,基本思路是将 mp4 先转码为 mpeg 文件,mpeg是支持简单拼接的,然后再转回 mp4。

  ffmpeg -i 1.mp4 -sameq 1.mpg
  ffmpeg -i 2.mp4 -sameq 2.mpg
  cat 1.mpg 2.mpg | ffmpeg -f mpeg -i - -sameq -vcodec mpeg4 output.mp4

这种方式弊端很明显,需要转码。而抛开转码本身会造成的质量损失,这个效率真心无法忍受。

2). MP4Box

这个是 gpac 搞的专门处理 mp4 的工具,由于它会自己内部处理连接部分的数据,所以可以简单的使用类似 concate 的语法:

MP4Box -cat 1.mp4 -cat 2.mp4 output.mp4

问题是,还要引入一个新的工具,而不能统一用 ffmpeg。这个也不爽。更不用说在 centos 下,你需要装一堆库,然后源码编译。有兴趣的朋友可以参考:

http://howto-heaven.blogspot.jp/2011/01/how-to-install-mp4box-on-centos.html

3). ffmpeg + ts 蹦蹦蹦蹦~~,重磅推出终极解决方案。这个的思路是先将 mp4 转化为同样编码形式的 ts 流,因为 ts流是可以 concate 的,先把 mp4 封装成 ts ,然后 concate ts 流, 最后再把 ts 流转化为 mp4。

ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
ffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts
ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4

转自:http://yonsm.net/mp4merge/

时间: 2024-10-14 09:44:41

[转载]用 FFMPEG 合并 MP4 视频的相关文章

使用ffmpeg合并视频文件的三种方法

ffmpeg合并视频的方法有三种.国内大多数仅介绍了其中之一.于是觉得有必要翻译一下.其实在ffmpeg的 FAQ文档中有比较详细的说明. 使用concat协议进行视频文件的合并 这种方式的适用场景是:视频容器是MPEG-1, MPEG-2 PS或DV等可以直接进行合并的.换句话说,其实可以直接用cat或者copy之类的命令来对视频直接进行合并.很多文章介绍了这种方法,但适用性却没有提及.这并不是一个通用的方法.典型的命令示例如下: ffmpeg -i concat:"intermediate1

(转载)[FFmpeg]使用ffmpeg从各种视频文件中直接截取视频图片

你曾想过从一个视频文件中提取图片吗?在Linux下就可以,在这个教程中我将使用ffmpeg来从视频中获取图片. 什么是ffmpeg?What is ffmpeg? ffmpeg是一个非常有用的命令行程序,它可以用来转码媒体文件.它是领先的多媒体框架FFmpeg的一部分,其有很多功能,比如解码.编码.转码.混流.分离.转化为流.过滤以及播放几乎所有的由人和机器创建的媒体文件. 在这个框架中包含有各种工具,每一个用于完成特定的功能.例如,ffserver能够将多媒体文件转化为用于实时广播的流,ffp

基于FFmpeg的教学资源库的非MP4视频转换为MP4流程

基于FFmpeg的教学资源库的非MP4视频转换为MP4流程 运行环境: Win2003(或者Win2008  64bit,优先此步).SQL Server 2005(或者SQL Server2008) 执行方式: 批处理方式执行,已转换视频列表.写入数据库:错误日志写入本机的执行程序下面. 1.转换步骤描述 1.非MP4视频列表 连接教学资源库数据库,查找本机的非MP4视频资源,得到非MP4视频列表. 2.生成原视频的MD5码 将所有的原视频生成MD5码. 3.判断该视频是否已经转换 比对新旧两

嵌入式Linux下MP4视频录制库MP4V2移植和简介

*************************************************************************************************************************** 作者:EasyWave                                                                             时间:2014.10.31 类别:Linux应用-MP4视频录制库MP4V2

atitit.mp4 视频文件多媒体格式结构详解

atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个“box”组成的,2 4. 典型简化mp43 5. Fragments5 6. ref6 7. 具体列表6 8. Ref29 MP4文件格式详解(ISO-14496-12/14) Author:Pirate Leo Email:[email protected] 1. 一.基本概念 1. 文件,由许多Box和FullBox组成. 2. Box,每个Box由Header和Data组

cocos2d-x 3.0 播放MP4视频

猴子原创,欢迎转载. 转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢. 原文地址: http://www.cocos2dev.com/?p=545 非常久曾经写的一个2dx播放MP4视频的教材.有网友反映已经不能用了,今天晚上写了个简单的2dx播放视频类.使用的是cocos2dx 3.0. 类说明:LHVideoPlayerImplCpp.h/mm // cocos2dx中使用的播放MP4接口LHVideoPlayerImpl.h/m // videoPlayer的o

嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍

*************************************************************************************************************************** 作者:EasyWave                                                                             时间:2014.10.31 类别:Linux应用-MP4视频录制库MP4V2

使用FFmpeg生成HLS视频

准备 1.  准备高质量音视频源文件. 2. 编译安装必要的软件 a. ffmpeg  b. nginx 3. 测试环境配置 修改nginx中的nginx.conf配置文件,当前以阿里云预装的CentOS为例: 修改命令:                vim /etc/nginx/conf.d/default.conf 直接编辑该文件,加入如下配置: #音频路径                location /audios{                    alias /share/w

利用 FFmpeg 将 MP4 转成 FLV

最近做一个小项目,要在线播放录制的 MP4 视频,想开源的 flash player 或 html 5 可以播放.可,虽然 MP4 是 H.264 编码,但就是播放不了.可能是封装方式(PS 方式)不一样吧.由于录制用的第三方设备,不能修改参数,只能自己使用工具转码了. FFmpeg 网上一搜索,就找到了大名鼎鼎的 FFmpeg ,好像 google 的 youtube 后台也是用的这个转码,国内的很多视频播放器核心也是这个.有了这个实现起来就非常简单了.FFmpeg 转码时占用 CPU 很高,