編譯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數據取出來播放或其他用途。