首页 > 其他分享 >流媒体技术学习笔记之(六)FFmpeg官方文档先进音频编码(AAC)

流媒体技术学习笔记之(六)FFmpeg官方文档先进音频编码(AAC)

时间:2023-04-05 20:43:01浏览次数:73  
标签:流媒体 FFmpeg aac 比特率 libfdk AAC ffmpeg HE


 

先进音频编码(AAC)的后继格式到MP3,和以MPEG-4部分3(ISO / IEC 14496-3)被定义。它通常用于MP4容器格式; 对于音乐,通常使用.m4a扩展名。第二最常见的用途是在MKV(Matroska)文件内,因为它比MP4更好地支持嵌入式基于文本的软字幕。本指南中的示例将使用扩展MP4和M4A。

FFmpeg的可支持两个AAC-LC编码器(AAC&libfdk_aac)和一个HE-AAC(V1 / 2)编码器(libfdk_aac)。的许可证libfdk_aac不与GPL兼容,因此GPL不允许含有不兼容的代码的二进制文件的分发时也被包含GPL许可的代码。因此,此编码器已被指定为“非自由”,您不能下载支持它的预构建的ffmpeg。这可以通过解决编译FFmpeg的自己。

libfdk_aac 

Fraunhofer FDK AAC编解码器库。这是目前使用ffmpeg的最高质量的AAC编码器。ffmpeg的要求要与配置--enable-libfdk-AAC(另外--enable-nonfree的,如果您还使用--enable-GPL)。但要注意,它默认为约14kHz的(低通滤波器的细节)。如果您想保留更高的频率,使用-cutoff 18000。只有在需要时才将数字调整到频率上限; 记住,更高的限制可能可听见地降低总体质量。

恒定比特率(CBR)模式

这些设置针对特定的比特率,样本之间的变化较小。它可以更好地控制文件大小,并且与HE-AAC配置文件兼容。作为经验法则,对于可听的透明度,对于每个通道使用64kb / s(因此对于立体声为128kb / s,对于5.1环绕声为384kb / s)。设置与比特率-b:一个选项。

在M4A(MP4)容器中将音频文件转换为AAC:



ffmpeg -i input.wav -c:a libfdk_aac -b:a 128k output.m4a



转换视频的5.1环绕声音频,只留下视频:



ffmpeg -i input.mp4 -c:v copy -c:a libfdk_aac -b:a 384k output.mp4



转换的视频与libx264,对一个700MB(= 5734400kb)CD-ROM安装一个90分钟的电影,缩混音频两个通道(Windows用户应该使用的目标NUL而不是的/ dev / null的):



ffmpeg -y -i input.mp4 -c:v libx264 -b:v 933k -preset:v veryfast -pass 1 -an / dev / null && \
ffmpeg -i input.mp4 -c:v libx264 -b:v 933k -preset:v veryfast -pass 2 \
-ac 2 -c:a libfdk_aac -b:128k output.mp4



可变比特率(VBR)模式

靶向质量,而不是一个特定的比特率。1是最低质量,5是最高质量。设置与该VBR水平-vbr标志。

VBR模式大致给出了每通道(以下比特率的详细信息):

 

VBR

kbps /信道

AOT

1

20-32

LC,HE,HEv2

2

32-40

LC,HE,HEv2

3

48-56

LC,HE,HEv2

4

64-72

LC

5

96-112

LC

 

 

 

 

 

 

HE比特率将低得多。

在M4A(MP4)容器中将音频文件转换为AAC:



ffmpeg -i input.wav -c:a libfdk_aac -vbr 3 output.m4a



仅转换视频的音频:



ffmpeg -i input.mp4 -c:v copy -c:a libfdk_aac -vbr 3 output.mp4



转换与视频libx264和音频缩混到两个渠道:



ffmpeg -i input.mp4 -c:v libx264 -crf 22 -preset:v veryfast \
-ac 2 -c:a libfdk_aac -vbr 3 output.mp4



高效率AAC 

这是针对低比特率(版本1和版本2)定制的一对AAC配置文件。HE-AAC版本1适合低于64kb / s(立体声音频)下降到约48kb / s的比特率,而HE-AAC版本2适用于低至32kb / s的比特率(同样,对于立体声)。



注意: HE-AAC版本2只处理立体声。如果您有单声道,或想要下混音为单声道,请使用HE-AAC版本1。



不幸的是,可以播放AAC-LC(默认配置文件的许多设备libfdk_aac)根本无法起到HE-AAC的任一版本,所以这是不推荐的环绕声音频,通常需要与这样的硬件播放器兼容。如果你只是打算在电脑上播放,或者你确定你的硬件播放器支持HE-AAC,你可以针对版本1的比特率为160kb / s,对于版本2的比特率为128kb / s。 ,实验看看什么对你的耳朵有用。

HE-AAC版本1 



ffmpeg -i input.wav -c:a libfdk_aac -profile:aac_he -b:64k output.m4a



HE-AAC版本2 



ffmpeg -i input.wav -c:a libfdk_aac -profile:aac_he_v2 -b:a 32k output.m4a




本地FFmpeg的AAC编码

原生FFmpeg AAC编码器。这是目前第二高质量的AAC编码器可用于FFmpeg,不需要像这里描述的其他AAC编码器的外部库。这是默认的AAC编码器。



注意: -strict实验(或-strict -2)以前需要这种编码器中,但它是不再试验和这些选项是不必要的,因为2015年12月5日。



例如使用-b:a



ffmpeg -i input.wav -c:a aac -b:a 160k output.m4a



例如使用-q:a

ffmpeg -i input.wav -c:a aac -q:a 2 output.m4a

有效范围为-q:一个是0.1-2左右。这个VBR是实验性的,并且可能获得比CBR更差的结果。


不推荐使用/取出编码器

libfaac 

免费软件高级音频编码器,该库的支持已被删除

libvo_aacenc 

视龙AAC编码库。该库的支持已被删除。使用原生FFmpeg编码器:它提供更好的质量和支持超过2个通道。

libaacplus 

AAC +编码库,支持该库已被删除。使用 libfdk_aac不是为HE-AAC:它在所有码率一贯更好。


元数据

您可以向本指南的任何示例添加元数据:



ffmpeg -i input ... -metadata author =“FFmpeg Bayou Jug Band”-metadata title =“Decode my Heart(Let's Mux)”output.mp4




渐进式下载

默认情况下,MP4 muxer在音频流('mdat'atom)之后的文件末尾写入'moov'原子。这导致用户需要在可以进行播放之前完全下载文件。将此moov原子重定位到文件的开头可以方便在客户端完全下载文件之前回放。

你可以用做-movflags +的fastStart选项:



ffmpeg -i input.wav -c:a libfdk_aac -movflags + faststart output.m4a



您也可以在现有MP4 / M4A文件上使用此选项。由于音频的仅仅是数据流复制有重新编码没有发生,只是重新混流,等于是没有质量损失:



ffmpeg -i input.m4a -c:a copy -movflags + faststart output.m4a




常见问题

哪个编码器提供最好的质量?

对于AAC-LC:libfdk_aac > Native FFmpeg AAC encoder (aac).

对于HE-AAC你有一个选择:libfdk_aac。

我应该使用AAC-LC还是HE-AAC?

如果您需要低音频比特率,例如≤32kbs /通道,那么HE-AAC将值得考虑,如果您的播放器或设备可以支持HE-AAC解码。由于较少的处理,任何较高的可能从AAC-LC获益更多。如果有疑问,使用AAC-LC。所有支持HE-AAC的玩家也支持AAC-LC。









标签:流媒体,FFmpeg,aac,比特率,libfdk,AAC,ffmpeg,HE
From: https://blog.51cto.com/tinywan/6171598

相关文章

  • PHP基础知识之————PHP Web脚本中使用FFmpeg
    简介本文将尝试指出在PHPWeb脚本中使用FFmpeg时需要了解的所有重要事项。它还将显示一些使用示例,以使事情更清楚。这个想法也可以应用到其他web脚本语言。从PHP脚本调用命令行工具选择一个模型网页设计为快速执行,以便浏览您的网站的人不必等待太多的响应。因为如果他们无聊的等待,......
  • 流媒体技术学习笔记之(四)解决问题video.js 播放m3u8格式的文件,根据官方的文档添加vide
    源码地址:https://github.com/Tinywan/PHP_Experience总结:说明:测试环境:本测试全部来自阿里云直播和OSS存储点播以及本地服务器直播和点播播放器:VideoJs直播:1、阿里云直播,需要CDN设置HTTP头2、本地直播需要设置直播访问服务器的头部信息(本地为Nginx)add_header'Access-......
  • fFFmpeg 命令、案例、测试集中营
    gitbook:https://www.gitbook.com/book/xdsnet/other-doc-cn-ffmpeg/detailsffmpeg[全局选项]{[输入文件选项]-i输入文件}...{[输出文件选项]输出文件}...ffmpeg[global_options]{[input_file_options]-iinput_file}...{[output_file_options]output_file}.........
  • FFmpeg操作视频的命令:
    FFmpeg操作视频的命令:图片加水印测试:D:\desktop\FFmpeg\bin\ffmpeg.exe-i"D:\desktop\重庆文旅摄影协会\视觉\AI设计\01.mp4"-vf"movie=D\\:/favicon.png,scale=60:30[watermark];[in][watermark]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]"......
  • FFmpeg再学习 -- FFmpeg+SDL+MFC实现图形界面视频播放器
    继续看雷霄骅的课程资料-基于FFmpeg+SDL的视频播放器的制作最后一篇,主要是想学一下MFC创建和配置。一、创建MFC工程文件->新建->项目->VisualC++->MFC应用程序应用程序类型,选择基于对话框生成效果如下:二、设置控件找到“工具箱”,就可以将相应的控件拖拽至应用程序对话框......
  • 图像和流媒体 -- Sapera 安装遇到的问题
    一、下载安装包参看:GenieNanoM1930-NIR点击软件及例程下载二、安装遇到的问题(1)Installationdirectorymustbeonalocalharddrive解决方法:clsicacls%temp%/reset/T/Q/Cpause以上文件复制到txt中将后缀名修改为bat以管理员执行即可。windows自身权限的的问题。(2)安......
  • 图像和流媒体 -- I 帧,B帧,P帧,IDR帧的区别
    参看:什么是I帧,P帧,B帧参看:H264编码原理以及I帧B帧P帧一、H246简介  H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变......
  • FFmpeg再学习 -- Windows下安装说明
    看了半晌雷霄骅的ffmpeg的视频。待续稍后总结。一、FFmpeg简介FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保......
  • ZLMediaKit + wvp-GB28181-pro 流媒体服务搭建
    目录环境备部署基础环境配置修改ZLMediaKit配置文件WVP-PRO的mysql数据库配置wvp-GB28181-pro配置wvp-pro-assist配置部署后端服务前端服务摄像头接入配置示例大华接入海康接入环境备1、服务运行环境,Linux/OSX/Windows均可,但推荐Linux2、海康、大华等符合国标28181标准......
  • LiveQing流媒体RTMP推流服务-如何获直播流地址 HLS/HTTP-FLV/WS-FLV/WebRTC/RTMP视频
    @目录1、服务说明2、如何一步一步搭建视频直播3、配置鉴权直播间3.1直播间创建3.2获取RTMP推流地址3.3播放流地址4、视频集成方式5、分享页面集成6、视频流地址集成6.1、直播流地址(页面查看获取)6.2、直播流地址(接口调用获取)6.2.1、接口服务地址说明6.2.2、获取直播列表7、RTMP......