我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

这篇文章主要介绍了怎么利用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合并音频和视频”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

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

如何利用FFmpeg合并音频和视频(多种方式)

这篇文章主要介绍了如何利用FFmpeg合并音频和视频,详细介绍了FFmpeg多个音频合并的2种方法,通过场景分享介绍了FFmpeg合并视频文件的4种方法,需要的朋友可以参考下
2023-02-20

Qt利用ffmpeg实现音视频同步

这篇文章主要为大家详细介绍了Qt如何利用ffmpeg实现音视频同步的功能,文中的示例代码讲解详细,对大家深入了解Qt有一定的帮助,需要的可以参考一下
2023-01-04

PHP利用ffmpeg获取音频、视频的详细信息

本文介绍了如何利用PHP通过FFMpeg库获取音频和视频文件的详细信息,包括音频比特率、采样率、视频编解码器、分辨率和帧率。此外,还可以获取文件格式、时长和字幕信息。建议仅获取所需的详细信息并使用异步处理和缓存技术以提高性能。FFMpeg为媒体处理提供了丰富的功能,用于文件管理、转码和元数据提取。
PHP利用ffmpeg获取音频、视频的详细信息
2024-04-02

怎么配合ffmpeg接口获取视频音频媒体信息

今天小编给大家分享一下怎么配合ffmpeg接口获取视频音频媒体信息的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言做音
2023-07-05

Android中怎么利用MediaPlay播放音频和视频

Android中怎么利用MediaPlay播放音频和视频,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。实现MediaPlay的基本步骤是创建MediaPlay对象调用setDa
2023-06-04

怎么利用Ffmpeg获得flv视频缩略图和视频长度时间

这篇文章主要讲解了“怎么利用Ffmpeg获得flv视频缩略图和视频长度时间”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用Ffmpeg获得flv视频缩略图和视频长度时间”吧!FFmpe
2023-06-20

Qt音视频开发之怎么实现ffmpeg视频旋转显示

这篇文章主要介绍了Qt音视频开发之怎么实现ffmpeg视频旋转显示的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Qt音视频开发之怎么实现ffmpeg视频旋转显示文章都会有所收获,下面我们一起来看看吧。一、前言用
2023-07-05

Python怎么利用ffmpeg处理视频素材

这篇文章主要介绍“Python怎么利用ffmpeg处理视频素材”,在日常操作中,相信很多人在Python怎么利用ffmpeg处理视频素材问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么利用ffm
2023-06-21

Golang与FFmpeg: 如何实现音频格式转换和合并

要使用Golang和FFmpeg来实现音频格式转换和合并,你需要安装FFmpeg并确保它可以在命令行中正常运行。然后,你可以使用Golang的os/exec包来执行FFmpeg命令。下面是一个示例代码,演示了如何使用Golang和FFmpe
2023-10-20

怎么在HTML5中嵌入音频和视频

这篇文章给大家介绍怎么在HTML5中嵌入音频和视频,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。HTML5支持的音频格式:视频视频格式:由上可知,HTML5貌似支持的格式有点少哈,所以当你发现用HTML5放置音频和视频
2023-06-09

利用Golang和FFmpeg实现音频降噪的技巧

要利用Golang和FFmpeg实现音频降噪,可以按照以下步骤进行:1. 安装Golang和FFmpeg:首先,确保已经在计算机上安装了Golang和FFmpeg。可以在官方网站上下载并安装它们。2. 导入所需的Golang模块:在Go代码
2023-10-08

利用Golang和FFmpeg实现视频水印的去除

要使用Golang和FFmpeg实现视频水印的去除,可以按照以下步骤进行操作:1. 安装FFmpeg:首先需要安装FFmpeg,可以从官方网站(https://ffmpeg.org/)下载适合您操作系统的版本,并按照官方文档进行安装。2.
2023-10-08

Golang与FFmpeg: 利用命令行工具进行音视频处理

Golang是一种编程语言,而FFmpeg是一个开源的音视频处理工具。在Golang中,我们可以利用命令行工具来调用FFmpeg进行音视频处理。首先,你需要在你的机器上安装FFmpeg。你可以在FFmpeg的官方网站(https://www
2023-10-08

利用Golang和FFmpeg实现视频拼接的实践

实现视频拼接的实践可以分为以下几个步骤:1. 安装FFmpeg:首先需要在计算机上安装FFmpeg,可以从官方网站(https://ffmpeg.org/)下载对应的二进制文件并进行安装。安装完成后,确保在命令行中可以使用ffmpeg命令。
2023-10-08

利用Golang和FFmpeg实现视频水印的添加

下面是一个使用Golang和FFmpeg实现视频水印添加的示例代码:```gopackage mainimport ("fmt""log""os""os/exec")func main() {// 输入视频文件路径inputFile :=
2023-10-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录