编译fdkaac
‘壹’ linux下编译ffmpeg时关于configure的问题.
你准备工作没做好吧!!
先编译安装Yasm。
然后编译安装H.264 (也就是x264)。
再编译安装AAC audio encoder (fdk-aac)。
编译安装libmp3lame (MP3 audio encoder)。
编译安装libopus (Opus audio decoder and encoder)。
编译安装libvpx (VP8/VP9 video encoder and decoder)。
做后编译安装ffmpeg。
其中1-6你可以选择编译安装,也可以使用源直接安装。安装后了再编译安装ffmpeg
你使用 sudo ldconfig -p |grep libx264 看看你的libx264是否正确安装.
你编译安装x264的时候可以使用2中方式都安装。
先
cd ../x264
./configure --enable-shared
make
make install
最后
cd ../x264
make distclean
./configure --enable-static
make
make install
‘贰’ ffmpeg 把avi转换flv怎么是0kb
ffmpeg版本太旧,用的7年前的版本。支持太少。换新版即可。
我自己编译的版本,为core2以上cpu优化
ffmpeg version N-57940-g1b3d3a9 Copyright (c) 2000-2013 the FFmpeg developers
built on Nov 6 2013 18:49:29 with gcc 4.7.3 (GCC)
configuration: --prefix=/mingw/i686-w64-mingw32 --enable-version3 --enable-gpl
--enable-nonfree --enable-avisynth --enable-libfaac --enable-libaacplus --enabl
e-libvo-aacenc --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable
-librtmp --enable-libvpx --enable-libvorbis --enable-libopus --disable-runtime-c
pudetect --disable-doc --disable-manpages --disable-podpages --disable-txtpages
--enable-cross-compile --target-os=mingw32 --arch=x86 --enable-w32threads --extr
a-cflags='-Ofast -mtune=core2 -fomit-frame-pointer' --extra-libs='-lrtmp -lpolar
ssl -lwinmm -lws2_32 -lgdi32'
libavutil 52. 52.100 / 52. 52.100
libavcodec 55. 41.100 / 55. 41.100
libavformat 55. 21.100 / 55. 21.100
libavdevice 55. 5.100 / 55. 5.100
libavfilter 3. 90.102 / 3. 90.102
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
‘叁’ android如何使用fdk-aac编码库来把aac转成pcm
线性PCM就是WAV。
AAC-LC是AAC的一个规格,你下载到或者转换的这些高码率的AAC都是AAC-LC的。
扩展名是.m4a。
.aac 是aac的音频数据流,m4a是aac的一个封装方式。其内容本身是一样的。
我用s754,和e453功能是一样的。m4a和wav的我都放了,没问题,只是.aac的我还没试过。
但我相信lz没有.aac的。。因为这年头你下载到的或者转换出来的都是m4a的
‘肆’ 请问AAC和AC3那个好一点,我应该用那种音频编码
纠结中..........不太敢回答你,鼓起勇气!说!错了你别怪!
AAC是一种音频压缩方式,因为CD、DVD等盘片上的音频部分是数据流形式,使用播放器或播放软件播放会有很多限制(几年前如果没有光驱根本播放不了)。为了解决这个问题,有人就开发出了音频压缩方式,最初是MP3一类的,后来,因为MP3的音质属实太差, 又开发出了 AAC 压缩方式,音质要比MP3好多了。但是,虽然有众多大品牌支持,由于其仍然属于有损压缩方式,并不被十分看好。无损压缩方式目前APE、FLAC占主流位置,其音质不是AAC可比拟的。只是,文件容量要大一些,但由于大容量存储芯片的普及,现在这个已经不是问题了。
至于AC-3则是杜比实验室推出的一种家庭影院多声道数字音频系统。AC-3提供的环绕声系统由五个全频域声道加一个超低音声道组成,所以被称作5.1个声道。五个声道包括前置的"左声道"、"中置声道"、"右声道"、后置的"左环绕声道"和"右环绕声道"。这些声道的频率范围均为全频域响应3-20000Hz。第六个声道也就是超低音声道包含了一些额外的低音信息,使得一些场景如爆炸、撞击声等的效果更好。由于这个声道的频率响应为3-120Hz,所以称".1"声道。 当然,这种5.1音频系统需要从音源的现场录制开始就要采用,播放时也需要使用专用的解码器。如果在电脑上播放,也可以使用“DTS声卡”来做解码,可以减少一些成本。毕竟一只DTS声卡 只有一千多元钱。
提醒一下:(如果你已经知道,可以无视)我们在电子或电脑市场能够买到的所谓2.1、4.1、5.1电脑音箱大多都是垃圾产品。只有少数价格较高的2.1音质还能说的过去,而5.1如果没有美国杜比认证,则都是外形仿造而已,没有解码电路的,只靠电脑输出的两个声道乱放一气而已。
不知道你是不是有什么误解的地方,或者究竟想要干什么,只好把两种都解释一遍,你自己判断吧!
AAC只是一种压缩方式,不是一种编码。AC3格式则是在抓取ac-3音轨时为了保留AC-3编码形成的文件,当然你可以通过转换软件将普通音频文件转换成AC3文件,但是,这样不只是源文件受到很大损伤,ac-3的效果也只能算扯淡!毕竟不是向杜比实验室支付了使用费,并且在音频信号录制(拍摄过程中)时就采用了ac-3编码。
‘伍’ 请教FDK aac编码器的安装
视频编码格式:hevc编码器:x26510bit版音频编码格式:aac编码器:qaac或neroaac或fdkaac封装格式:mkv或mp4
‘陆’ qaac和neroaac和fdkaac压制用哪个好
FAAC高码率时候音质好,经常在手机上听APE用FAAC转Q500 AAC,效果很好。
nero的在128-192效果比同码率faac好
‘柒’ 我想把一个6.7G的视频转换成1G以内的视频格式,请问什么格式最好,求教!
视频编码格式:hevc
编码器:x265 10bit版
音频编码格式:aac
编码器:qaac或neroaac或fdkaac
封装格式:mkv或mp4
‘捌’ 在ubuntu12.04LTS下成功编译安装带有h264和aac编码的ffmpeg的完整过程(命令行)
先下载最少yasm、ffmpeg、x264的源码,
具体步骤和这个差不多。
https://trac.ffmpeg.org/wiki/UbuntuCompilationGuide
h.264通常只用x264一种。
aac编码器有fdk,visualon,faac,aacplus,内置的等5种选择。
用fdk最好,其余任一也够。
先编译组件,通常是
./configure 具体包的设置选项
make install
编译好各个组件后,最后再设置和编译ffmpeg。
c编译器的选项CFLAGS最好一致。可以针对自己的cpu优化。比如加入
“-Ofast ”只为速度
-mtune core2 使用core2的优化。
‘玖’ 如何使 vlc 支持 fdk-aac 编码windows平台
可能是由于fdk-aac开源协议的原因,VLC默认是不支持fdk-aac编码的,fdk-aac 是非常优秀的AAC编码库,并且支持AAC-LD AAC-ELD, 对于要求低延迟的场景下很有用。
可以通过修改VLC的编译脚本,并加入fdkaac库来使用VLC支持fdkaac编码器。
我是在64位的ubuntu16.04下编译的,vlc的编译方法参考VLC官网的编译文档。
1 修改vlc/extras/package/win32/configure.sh , 加入--enable-fdkaac, 这样VLC就会编译fdkaac这个模块。
执行make,会出现编译错误
as/package/win32/../../../moles/codec/fdkaac.c:56:32: fatal error: fdk-aac/aacenc_lib.h: No such file or directory
这是因为缺少fdk-aac库相关的头文件。
2 编译fdk-aac库
下载源码https://github.com/mstorsjo/fdk-aac.git
在terminal下进入源码目录,输入
mkdir winBuild
cd winBuild
../configure --host=i686-w64-mingw32 --prefix=VLCPATH/contrib/i686-w64-mingw32
make install
VLCPATH 替换成VLC代码的路径
3 编译VLC代码
make packag-win32-zip
这时应该可以编译通过了, 在mole/codec/ 目录下会生成libfakaac_plugin.dll文件。
还需要把这个模块依赖的VLCPATH/contrib/i686-w64-mingw32/libfdk-aac-1.dll动态库复制到这个目录下。
现在VLC就可以支持fdk-aac编码了。
‘拾’ 怎样用AACLib V1.0在Android上音频编码解码
这几天在 android上的音频项目,顺便把用到的aac编解码库封装了一下,有需要的可以从上面下载。当然我是没有本事自己写编解码器的,还是用FFmpeg + FDK_aac来做。下面介绍一下其java接口的使用。java库见libaac.jar文件,把libaac.jar加到 libs目录下,把libaac.so加到 libs/armeabi目录即可使用。
AAC编码:
(1) 创建一个Encoder对象作为成员变量
aac.Encoder encoder;
(2) 初始化它
encoder = new aac.Encoder();
if(! encoder.open(11025, 1))
{
Log.d("mylog", "failed to open encoder !\n");
encoder = null;
}
这里要指定输入音频源(PCM格式)的sampe_rate和channel个数,如果为CHANNEL_OUT_MONO,则channel=1,否则为2。 sample_rate一般设置为11025,因为手机性能有限,设置太高的话也处理不过来,而且处理人声的话11025也是足够了。
(3) 编码
把接收到PCM数据交给encoder来处理即可,要求输入源为ENCODING_PCM_16BIT,即每个sample是16BIT的。这个encoder对象内有2个缓冲区:inbuf, outbuf。显然,在编码时,inbuf就是用于存储接收到的PCM数据,outbuf就是存编码后得到的数据。
int out_size = encoder.encode(in_size);
其返回值out_size,表示在outbuf里的有效数据长度。此时可以把outbuf里的aac数据通过网络发送或其他用途。
其中,用户需要知道encoder每次处理多长的数据,即一个frame的大小。对于单声道MONO来说,每次应该输入2048byte的数据。对于双声道STEREO来说,应该输入4096byte的数据。下面这一行可以根据声道数来计算输入的frame的大小:
int in_size = aac.Encoder.frameSize(1);
AAC解码:
(1) 创建一个Decoder对象作为成员变量
aac.Decoder decoder;
(2) 初始化
decoder = new aac.Decoder();
if( ! decoder.open())
{
Log.d("mylog", "failed to open decoder !\n");
decoder = null;
}
(3) 解码
Decoder对象也有inbuf和outbuf,把待解码的aac frame放到inbuf里
int pcm_size = decoder.decode(aac_size);
解得到数据在outbuf里,其有效长度为上述函数的返回值pcm_size,此时可以把outbuf里的PCM数据取出来播放或其他用途。