方法二确实可行 方法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 | 猴头客相关推荐

  1. 两个音轨合并_webm格式视频文件合并+weba音频文件无损合并

    WebM 格式,其实是以 Matroska(就是我们熟知的 MKV)容器格式为基础开发的新容器格式,里面包括了 VP8 视频和 Ogg Vorbis 音轨.简单点说webm格式文件可以是视频,也可以是 ...

  2. php视频转音频文件怎么打开,视频怎么转音频格式 MP4格式怎样转MP3格式

    现在绝大多数人都会遇到歌曲或电影太大或者是格式不支持,而需要进行格式转换,有的也叫音频转换或视频转换.为实现将喜欢的视频放在不同的场合播放,我们常常需要进行视频转换.但是纵览诸多的视频转换器,要不就是 ...

  3. FFmpeg合并多个音频并解决声音变小的方法

    向一个MP4中第4秒加入第一个MP3第6秒加入第二个MP3,请问FFmpeg 可以实现吗,知道s是开始时间, t 是时长,但是多个文件我就不知道怎么弄了. 通常的解决方法是这样的,也是你们各种百度看到 ...

  4. python 分类 投票_LightGBM——提升机器算法(图解+理论+安装方法+python代码)

    前言 LightGBM是个快速的,分布式的,高性能的基于决策树算法的梯度提升框架.可用于排序,分类,回归以及很多其他的机器学习任务中. 在竞赛题中,我们知道XGBoost算法非常热门,它是一种优秀的拉 ...

  5. python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...

    XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...

  6. python写一个类方法_重写python脚本,在脚本的每个类中注入一个方法 - python

    假设我有一个python模块foo.py,其中包含: class Foo(object): def __init__(self): pass 接下来,我想解析此脚本,并在每个类中注入一个方法,然后将其 ...

  7. 【Python】【Flask】Flask 后台发送html页面多种方法

    1.使用模板: @app.route('/') def home():return render_template("homepage.html")#homepage.html在t ...

  8. pmta linux视频,PowerMTA (PMTA) 的安装和设置方法 – 黄忠 – 博客

    本文信息本文由方法SEO顾问发表于2016-12-0316:04:40,共 1870 字,转载请注明:PowerMTA (PMTA) 的安装和设置方法 – 黄忠 – 博客_[方法SEO顾问],如果我网 ...

  9. python合并视频和音频_Python做图像处理及视频音频文件分离和合成功能

    一.简介 Imageio是一个Python库,提供了一个简单的界面来读取和写入各种图像数据,包括动画图像,视频,体积数据和科学格式.它是跨平台的,运行在Python 2.7和3.4+上,易于安装. 作 ...

最新文章

  1. 别让自己变为一个废掉的程序猿
  2. Postgresql在Windows下的解压安装
  3. 一次简单的Java服务性能优化,实现压测 QPS 翻倍
  4. java实现linkstring,【JAVA SE基础篇】32.String类入门
  5. [SQL]批量修改存储过程视图
  6. java 负数异常_java基础之异常
  7. js实现跟浏览器 ctrl+f 一样的效果
  8. PGP实现邮件加密和签名
  9. R语言使用rnorm函数生成正太分布数据、使用stem函数可视化茎叶图、茎叶图很直观的表现出数据的分布情况
  10. vscode管理员身份运行powershell
  11. 中国武术职业联赛(WMA)
  12. 【房间墙上凿个洞,看你在干嘛~】安全攻防内网渗透-绕过防火墙和安全检测,搭建DNS隐蔽隧道
  13. java-静态对象:
  14. 智能机器人无法智能对话_关于智能语音机器人使用中可能出现的问题
  15. 吃一堑长一智!java开发实战经典答案百度云
  16. 新手小白入门必看!如何批量注册Twitter账号?
  17. 干货!公平意识在在线元学习的研究
  18. 新手如何入门新塘N76E003单片机
  19. javas文档对象模型(DOM)
  20. mysql取消mvvc机制_MySQL之MVVC简介

热门文章

  1. week9 B-东东学打牌
  2. 基于STM32三路超声波避障小车
  3. sap委外退料流程图_委外退料单
  4. bzoj2144 [2011集训队出题] 跳跳棋 倍增 lca
  5. java把汉字转换成拼音的2种方式
  6. linux jenkins部署脚本,使用Jenkins 自动部署发布
  7. java根据开始日期和结束日期计算天数
  8. 一些常用的java算法练习
  9. Ubuntu16.04如何安装google chrome浏览器
  10. HTCVIVE物体跟随手柄移动手柄叩击