广告
返回顶部
首页 > 资讯 > 精选 >怎么利用FFmpeg合并音频和视频
  • 804
分享到

怎么利用FFmpeg合并音频和视频

2023-07-05 04:07:42 804人浏览 薄情痞子
摘要

这篇文章主要介绍了怎么利用FFmpeg合并音频和视频的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用FFmpeg合并音频和视频文章都会有所收获,下面我们一起来看看吧。一、FFmpeg 多个音频合并的2种方

这篇文章主要介绍了怎么利用FFmpeg合并音频和视频的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用FFmpeg合并音频和视频文章都会有所收获,下面我们一起来看看吧。

一、FFmpeg 多个音频合并的2种方法

多个mp3文件合并成一个mp3文件

一种方法是连接到一起

ffmpeg64.exe -i "concat:123.mp3|124.mp3" -acodec copy output.mp3

解释:-i代表输入参数

               contact:123.mp3|124.mp3代表着需要连接到一起的音频文件

                 -acodec copy  output.mp3 重新编码并复制到新文件中

另一种方法是混合到一起

ffmpeg64.exe -i 124.mp3 -i 123.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 remix.mp3

解释: -i代表输入参数

           -filter_complex  

                 amix是混合多个音频到单个音频输出

                 inputs=2代表是2个音频文件,如果更多则代表对应数字

                 duration 确定最终输出文件的长度

               longest(最长)|shortest(最短)|first(第一个文件)

                  dropout_transition

The transition time, in seconds, for volume renORMalization when an input stream ends. The default value is 2 seconds.

                  -f mp3   输出文件格式

音频文件截取指定时间部分

ffmpeg64.exe -i 124.mp3 -vn -acodec copy -ss 00:00:00 -t 00:01:32 output.mp3

解释: -i代表输入参数

          -acodec copy output.mp3 重新编码并复制到新文件中

           -ss 开始截取的时间点

           -t 截取音频时间长度           

音频文件格式转换

ffmpeg64.exe -i null.ape -ar 44100 -ac 2 -ab 16k -vol 50 -f mp3 null.mp3

解释: -i代表输入参数

           -acodec aac(音频编码用AAC) 

          -ar 设置音频采样频率

          -ac  设置音频通道数

          -ab 设定声音比特率

                 -vol  <百分比> 设定音量

二、FFmpeg合并视频文件的4种方法

1.使用concat协议进行视频文件的合并

这种方式的适用场景是:视频容器是MPEG-1, MPEG-2 PS或DV等可以直接进行合并的。换句话说,其实可以直接用cat或者copy之类的命令来对视频直接进行合并。很多文章介绍了这种方法,但适用性却没有提及。这并不是一个通用的方法。典型的命令示例如下:

使用concat demuxer进行视频文件的合并

这种合并方式的适用场景是:当容器格式不支持文件层次的合并,而又不想(不需要)进行再编码的操作的时候。这种方式对源视频同样有同格式同性质的要求。典型的命令示例如下:

其中,Cam01.txt 为包含了输入文件的描述文件。

2.使用concat滤镜(filter)进行视频文件的合并:

当需要进行任意程度的重新编解码时,官方推荐使用的方法即是用concat滤镜来进行视频文件的合并处理。典型命令示例如下:

这段命令目的是将三段双语格式的视频合并至最终的一段视频(output.mkv)。参数n=3说明待合成的视频有三段,v=1说明视频流为一,a=2说明音频流为二。 -map参数的详细说明可以从Filtergraph文档中找到。

众所周知,从某些视频网站下载的视频是分段的。比如新浪视频每隔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 h364_mp4toannexb -f mpegts input1.ts

ffmpeg -i input2.flv -c copy -bsf:v h364_mp4toannexb -f mpegts input2.ts

ffmpeg -i input3.flv -c copy -bsf:v h364_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

关于“怎么利用FFmpeg合并音频和视频”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么利用FFmpeg合并音频和视频”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么利用FFmpeg合并音频和视频

本文链接: https://www.lsjlt.com/news/349446.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么利用FFmpeg合并音频和视频
    这篇文章主要介绍了怎么利用FFmpeg合并音频和视频的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么利用FFmpeg合并音频和视频文章都会有所收获,下面我们一起来看看吧。一、FFmpeg 多个音频合并的2种方...
    99+
    2023-07-05
  • 如何利用FFmpeg合并音频和视频(多种方式)
    目录一、FFmpeg 多个音频合并的2种方法一种方法是连接到一起另一种方法是混合到一起音频文件截取指定时间部分音频文件格式转换二、FFmpeg合并视频文件的4种方法1.使用conca...
    99+
    2023-02-20
    FFmpeg合并音频和视频 FFmpeg合并音频 FFmpeg合并视频
  • Qt利用ffmpeg实现音视频同步
    目录一、前言二、效果图三、体验地址四、相关代码五、功能特点5.1 基础功能5.2 特色功能5.3 视频控件5.4 内核ffmpeg一、前言 用ffmpeg来做音视频同步,个人认为这个...
    99+
    2023-01-04
    Qt ffmpeg音视频同步 Qt 音视频同步 Qt ffmpeg
  • Python使用ffmpeg合成视频、音频的实现方法
    最近有在使用屏幕录制软件录制桌面,在用的过程中突发奇想,使用python能不能做屏幕录制工具,也锻炼下自己的动手能力。接下准备写使用python如何做屏幕录制工具的系列文章: 录制屏...
    99+
    2022-11-10
  • 怎么配合ffmpeg接口获取视频音频媒体信息
    今天小编给大家分享一下怎么配合ffmpeg接口获取视频音频媒体信息的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言做音...
    99+
    2023-07-05
  • Android中怎么利用MediaPlay播放音频和视频
    Android中怎么利用MediaPlay播放音频和视频,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。实现MediaPlay的基本步骤是创建MediaPlay对象调用setDa...
    99+
    2023-06-04
  • 怎么利用Ffmpeg获得flv视频缩略图和视频长度时间
    这篇文章主要讲解了“怎么利用Ffmpeg获得flv视频缩略图和视频长度时间”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用Ffmpeg获得flv视频缩略图和视频长度时间”吧!FFmpe...
    99+
    2023-06-20
  • Qt音视频开发之怎么实现ffmpeg视频旋转显示
    这篇文章主要介绍了Qt音视频开发之怎么实现ffmpeg视频旋转显示的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Qt音视频开发之怎么实现ffmpeg视频旋转显示文章都会有所收获,下面我们一起来看看吧。一、前言用...
    99+
    2023-07-05
  • Python怎么利用ffmpeg处理视频素材
    这篇文章主要介绍“Python怎么利用ffmpeg处理视频素材”,在日常操作中,相信很多人在Python怎么利用ffmpeg处理视频素材问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么利用ffm...
    99+
    2023-06-21
  • Python批量下载ts视频文件,并用ffmpeg合并
    目录 一、ts文件的由来 二、下载ts文件 1.下载index.m3u8,并做相应处理 2.下载ts文件 三、ffmpeg合并ts文件 一、ts文件的由来 ts文件,ts即"Transport Stream"的缩写,特点就是要求从视频流...
    99+
    2023-09-06
    python
  • Golang与FFmpeg: 如何实现音频格式转换和合并
    要使用Golang和FFmpeg来实现音频格式转换和合并,你需要安装FFmpeg并确保它可以在命令行中正常运行。然后,你可以使用Go...
    99+
    2023-10-20
    Golang
  • 音视频处理工具FFmpeg与Java结合的简单使用
    一、什么是FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavco...
    99+
    2023-09-03
    ffmpeg 音视频
  • Golang与FFmpeg: 利用命令行工具进行音视频处理
    Golang是一种编程语言,而FFmpeg是一个开源的音视频处理工具。在Golang中,我们可以利用命令行工具来调用FFmpeg进行...
    99+
    2023-10-08
    Golang
  • 怎么用Ffmpeg从视频中截图
    本篇内容主要讲解“怎么用Ffmpeg从视频中截图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Ffmpeg从视频中截图”吧!概述之前做了个项目,涉及到上传...
    99+
    2022-10-19
  • 利用Golang和FFmpeg实现音频降噪的技巧
    要利用Golang和FFmpeg实现音频降噪,可以按照以下步骤进行:1. 安装Golang和FFmpeg:首先,确保已经在计算机上安...
    99+
    2023-10-08
    Golang
  • 怎么在HTML5中嵌入音频和视频
    这篇文章给大家介绍怎么在HTML5中嵌入音频和视频,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。HTML5支持的音频格式:视频视频格式:由上可知,HTML5貌似支持的格式有点少哈,所以当你发现用HTML5放置音频和视频...
    99+
    2023-06-09
  • 利用Golang和FFmpeg实现视频水印的添加
    下面是一个使用Golang和FFmpeg实现视频水印添加的示例代码:```gopackage mainimport ("fmt""l...
    99+
    2023-10-08
    Golang
  • 利用Golang和FFmpeg实现视频拼接的实践
    实现视频拼接的实践可以分为以下几个步骤:1. 安装FFmpeg:首先需要在计算机上安装FFmpeg,可以从官方网站(https://...
    99+
    2023-10-08
    Golang
  • 利用Golang和FFmpeg实现视频水印的去除
    要使用Golang和FFmpeg实现视频水印的去除,可以按照以下步骤进行操作:1. 安装FFmpeg:首先需要安装FFmpeg,可以...
    99+
    2023-10-08
    Golang
  • H5新属性audio音频和video视频怎么用
    这篇文章将为大家详细讲解有关H5新属性audio音频和video视频怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 1.音频(audio)<audio&nbs...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作