python合并视频和音频_FFMpeg无损合并视频的多种方法 python | 猴头客
方法二确实可行 方法1 我试着不行 需要的话自己试试把
python 的调用cmd命令是这么写的
res=os.system("ifconfig");
众所周知,从某些视频网站下载的视频是分段的。比如新浪视频每隔6分钟分段,俗称“6分钟诅咒”。
现在的任务是将这些视频片段合并起来,并且尽量无损。
方法一:FFmpeg concat 协议
对于 MPEG 格式的视频,可以直接连接:
ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg
对于非 MPEG 格式容器,但是是 MPEG 编码器(H.264、DivX、XviD、MPEG4、MPEG2、AAC、MP2、MP3 等),可以包装进 TS 格式的容器再合并。在新浪视频,有很多视频使用 H.264 编码器,可以采用这个方法
ffmpeg -i input1.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i input2.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i input3.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4
保存 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 中转义。
方法三:Mencoder 连接文件并重建索引
这种方法只对很少的视频格式生效。幸运的是,新浪视频使用的 FLV 格式是可以这样连接的。对于没有使用 MPEG 编码器的视频(如 FLV1 编码器),可以尝试这种方法,或许能够成功。
mencoder -forceidx -of lavf -oac copy -ovc copy -o output.flv input1.flv input2.flv input3.flv
方法四:使用 FFmpeg concat 过滤器重新编码(有损)
语法有点复杂,但是其实不难。这个方法可以合并不同编码器的视频片段,也可以作为其他方法失效的后备措施。
ffmpeg -i input1.mp4 -i input2.webm -i input3.avi -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.mkv
如你所见,上面的命令合并了三种不同格式的文件,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 中需要用引号,防止通配符扩展。
提示
以上三种方法,在可能的情况下,最好使用第二种。第一种次之,第三种更次。第四种是后备方案,尽量避免。
规格不同的视频合并后可能会有无法预测的结果。
有些媒体需要先分离视频和音频,合并完成后再封装回去。
对于 Packed B-Frames 的视频,如果封装成 MKV 格式的时候提示 Can't write packet with unknown timestamp,尝试在 FFmpeg 命令的 ffmpeg 后面加上 -fflags +genpts
python合并视频和音频_FFMpeg无损合并视频的多种方法 python | 猴头客相关推荐
- 两个音轨合并_webm格式视频文件合并+weba音频文件无损合并
WebM 格式,其实是以 Matroska(就是我们熟知的 MKV)容器格式为基础开发的新容器格式,里面包括了 VP8 视频和 Ogg Vorbis 音轨.简单点说webm格式文件可以是视频,也可以是 ...
- php视频转音频文件怎么打开,视频怎么转音频格式 MP4格式怎样转MP3格式
现在绝大多数人都会遇到歌曲或电影太大或者是格式不支持,而需要进行格式转换,有的也叫音频转换或视频转换.为实现将喜欢的视频放在不同的场合播放,我们常常需要进行视频转换.但是纵览诸多的视频转换器,要不就是 ...
- FFmpeg合并多个音频并解决声音变小的方法
向一个MP4中第4秒加入第一个MP3第6秒加入第二个MP3,请问FFmpeg 可以实现吗,知道s是开始时间, t 是时长,但是多个文件我就不知道怎么弄了. 通常的解决方法是这样的,也是你们各种百度看到 ...
- python 分类 投票_LightGBM——提升机器算法(图解+理论+安装方法+python代码)
前言 LightGBM是个快速的,分布式的,高性能的基于决策树算法的梯度提升框架.可用于排序,分类,回归以及很多其他的机器学习任务中. 在竞赛题中,我们知道XGBoost算法非常热门,它是一种优秀的拉 ...
- python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...
XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...
- python写一个类方法_重写python脚本,在脚本的每个类中注入一个方法 - python
假设我有一个python模块foo.py,其中包含: class Foo(object): def __init__(self): pass 接下来,我想解析此脚本,并在每个类中注入一个方法,然后将其 ...
- 【Python】【Flask】Flask 后台发送html页面多种方法
1.使用模板: @app.route('/') def home():return render_template("homepage.html")#homepage.html在t ...
- pmta linux视频,PowerMTA (PMTA) 的安装和设置方法 – 黄忠 – 博客
本文信息本文由方法SEO顾问发表于2016-12-0316:04:40,共 1870 字,转载请注明:PowerMTA (PMTA) 的安装和设置方法 – 黄忠 – 博客_[方法SEO顾问],如果我网 ...
- python合并视频和音频_Python做图像处理及视频音频文件分离和合成功能
一.简介 Imageio是一个Python库,提供了一个简单的界面来读取和写入各种图像数据,包括动画图像,视频,体积数据和科学格式.它是跨平台的,运行在Python 2.7和3.4+上,易于安装. 作 ...
最新文章
- 别让自己变为一个废掉的程序猿
- Postgresql在Windows下的解压安装
- 一次简单的Java服务性能优化,实现压测 QPS 翻倍
- java实现linkstring,【JAVA SE基础篇】32.String类入门
- [SQL]批量修改存储过程视图
- java 负数异常_java基础之异常
- js实现跟浏览器 ctrl+f 一样的效果
- PGP实现邮件加密和签名
- R语言使用rnorm函数生成正太分布数据、使用stem函数可视化茎叶图、茎叶图很直观的表现出数据的分布情况
- vscode管理员身份运行powershell
- 中国武术职业联赛(WMA)
- 【房间墙上凿个洞,看你在干嘛~】安全攻防内网渗透-绕过防火墙和安全检测,搭建DNS隐蔽隧道
- java-静态对象:
- 智能机器人无法智能对话_关于智能语音机器人使用中可能出现的问题
- 吃一堑长一智!java开发实战经典答案百度云
- 新手小白入门必看!如何批量注册Twitter账号?
- 干货!公平意识在在线元学习的研究
- 新手如何入门新塘N76E003单片机
- javas文档对象模型(DOM)
- mysql取消mvvc机制_MySQL之MVVC简介