众所周知,从某些视频网站下载的视频是分段的。比如新浪视频每隔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合并音频与视频_FFMpeg无损合并视频的多种方法相关推荐

  1. python中使用ffmpeg合并音频与视频_ffmpeg 在windows 下的安装和使用(python, 合并音频和视频)...

    参考: windows下ffmpeg的安装与python调用   https://blog.csdn.net/chunjiekid/article/details/88205824 1. 下载 ffm ...

  2. 【DIY】FFmpeg Joiner – 多段视频「无损合并」小工具 [Windows]

    http://subscribe.mail.10086.cn/subscribe/readAll.do?columnId=280&itemId=6082779 FFmpeg Joiner – ...

  3. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  4. python合并视频和音频_FFMpeg无损合并视频的多种方法 python | 猴头客

    方法二确实可行 方法1 我试着不行 需要的话自己试试把 python 的调用cmd命令是这么写的 res=os.system("ifconfig"); 众所周知,从某些视频网站下载 ...

  5. ffmpeg 在线音频上传合成mp4格式视频,可以在网络中直接播放。

    Java环境: 注意:以下转码兼容所有Android,iOS.网络上找的关于ffmpeg转mp4,只能兼容部分Android,iOS根本播放不了. 我这里有三个ffmpeg.exe文件版本.网络找下下 ...

  6. python中使用ffmpeg进行视频指定时长截断(解决剪切后音视频不同步的问题)

    1. 获取视频时长 有两种方式获取视频总时长: python-ffmpeg( 获取的是视频总秒数 ) video_time = float(ffmpeg.probe(video)['format'][ ...

  7. python librosa 或 ffmpeg 改变音频采样率

    文章目录 librosa 改变音频采样率 查看 old.wav的采样率 将old.wav转换为16000采样率的音频序列 保存写入新音频 new.wav 查看 new.wav 的采样率 ffmpeg ...

  8. python中matplotlib关于直方图AttributeError: ‘Rectangle‘ object has no property ‘normed‘的解决方法

    文章目录 遇到的问题 解决方法 参考 3秒版本: 改成如下形式即可,去掉normed,改成density(布尔值),意思是开启概率分布(直方图面积为1). plt.hist(hist_r, bins ...

  9. Python中json.loads()无法解析单引号字符串问题的两种解决方法

    问题描述: 数据传输过程中数据存入数据库是将json文件默认转为字符串,所以导致从数据库中取出数据是字符串,需要用loads进行转化,但是转化的时候报错: json.decoder.JSONDecod ...

  10. python中提取几列_自己录制的公开课视频中提取字幕(python+opencv+Tesseract-OCR)

    最近在mooc上看了一个公开课:职场英语,用来学习在找工作时或者工作中用到的英语交流技巧,非常不错.由于自己听力不是很好,有的字幕中的单词不认识,并且想记下来便于以后学习.所以想把公开课中的字幕都记录 ...

最新文章

  1. LNMP架构详解(2)——Mysql、PHP、Nginx源码编译过程
  2. IntelliJ IDEA 快捷键快速实用篇
  3. linux命令之less命令
  4. 在mysql-workbench的存储过程中使用循环while,repeat,loop
  5. 好玩的网页小游戏源码《星球防御战射击》
  6. 从BIOS自检报警声判断电脑故障
  7. mysql aa ap_商务移动首选 华硕便携式2in1无线AP
  8. 又开火了!马斯克炮轰贝佐斯:建议分拆亚马逊!
  9. 看了一下lua的实现
  10. 309. 最佳买卖股票时机含冷冻期
  11. vc12对应的php版本,vc和vs的区别
  12. python实现BP神经网络
  13. 计算机表格平均分用函数怎么算,总结:如何使用公式计算Excel2013表中合并单元格的平均值...
  14. 协议解析-串口协议解析
  15. php文字超出省略号,文字超过规定行数时自动生成省略号
  16. Mac系统升级Git
  17. windows系统下ink!canvas-node安装
  18. python1到100奇数相加_如何使用while语句求1到100的奇数和
  19. 设备价格暴涨让苹果公司在俄罗斯的最大授权经销商被迫关门谢客
  20. 易语言 图片插入超级列表框_新手教程!如何在PDF文件中插入图像

热门文章

  1. Pandas数据分析实战(1)——探索Chipotle快餐数据
  2. 泛零售数据中台建设之灵魂问答 | 奇点云CEO行在直播回顾
  3. 使用 Visio 绘制卷积示意图
  4. CTF Just Click
  5. mailx配置TSL发送邮件
  6. color-thief-php提取图片色值分布及百分占比
  7. python 怕网页_如何像玩游戏一样学Python?
  8. python爬虫实战:爬取我的博客文章并将文章写入至我的Mysql数据库
  9. php分界符,c# – 如何使用openxml添加分节符下一页?
  10. coldfusion_ColdFusion 9的发布…