從本篇文章開始,我將開始寫一些自己學習音視頻方面的學習筆記,記錄自己的成長程序!
我們先來了解一下ffmpeg是什么吧?最官方的解釋和介紹,當然是去ffmpeg官方看,ffmpeg官方地址:
https://www.ffmpeg.org/about.html
這里大概的說一下:
FFmpeg是領先的多媒體框架,能夠解碼,編碼, 轉碼,mux,demux,流,過濾和播放人類和機器創建的幾乎所有內容,它支持最模糊的古代格式,直至最前沿,無論它們是由某些標準委員會,社區還是公司設計的,它還具有高度的可移植性:FFmpeg可以在各種構建環境,機器體系結構和配置下,跨Linux,Mac OS X,Microsoft Windows,BSD,Solaris等編譯,運行并通過我們的測驗基礎架構 FATE,
它包含可以由應用程式使用的libavcodec,libavutil,libavformat,libavfilter,libavdevice,libswscale和libswresample,與ffmpeg,ffplay和ffprobe一樣,最終用戶也可以使用它們進行轉碼和播放,
當然如果這些還不夠你作為知識認知上來了解一個東西的話,可以再多看幾篇文章,這里我就不再造輪子了,咋們接下來開始來搭建windows和Linux開發環境,正所謂:工欲善其事 必先利其器,可能搭建環境的時候,會遇到一些坑,
一、windows環境搭建:
其實這個禮拜我當時去搭建環境的時候,去網上找了一些博客資料,但是發現之前的網站打不開了,而且現在官網變化有點大,你可能看以前別的文章資料參考,按照操作來,去官網下載安裝包,但是其實根本就不是那回事,如果沒有仔細觀察的話,現在官網下載windows包是這樣的:
1、環境搭建步驟;
(1)從官網下載安裝包:
(2)開始解壓安裝包和檔案說明:
我們把剛才下載下來的包進行解壓:
解壓后有四個檔案:bin里面是安裝的應用程式以及一些元件:
doc檔案里面是一些相關關于ffmpeg的html說明檔案:
include里面是一些相關庫的頭檔案:
lib里面是相關的庫:
(3)開始安裝:
這里我們把bin檔案下的這三個應用程式拷貝到你的c盤下的Windows目錄下:
a、
b、
c、直接粘貼到到windows目錄即可:
現在我們打開命令提示符,檢查一下ffmpeg是否安裝成功:
你會發現還缺乏一下動態鏈接,這個時候我們可以按照提示把剛才剩下的那些以“.dll”的檔案拷貝到windows目錄的SysWOW64目錄即可:
然后我們再測驗一下ffmpeg的版本是多少:
ffmpeg -version
注:估計這里可能有些人會遇到問題,還是不能查看,我這里后面還是采用了4.2.1的版本,
沒錯,如果你到了這里可以看到我上面一樣的列印,那么恭喜,你的windows環境就搭建成功了
二、linux環境搭建:
這里我沒有采用直接用命令的方式來下載ffmpeg,這里我參考了官網的原始碼安裝步驟,可能會比較慢:
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
1、首先在home目錄下創建需要的目錄(注這里最好和我一樣的操作):
txp@txp-virtual-machine:~$ mdkir ffmpeg_sources ffmpeg_build bin
2、下載所要的依賴環境配置:
在下載之前,你最好把自己的ubuntu鏡像服務器換成國內的比較好,速度會快很多(這里我用的是ubuntu16.04);同時在之前最好更新一下:
sudo apt install update
然后直接進行下面操作:
sudo apt-get update -qq && sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libgnutls28-dev \
libsdl2-dev \
libtool \
libva-dev \
libvdpau-dev \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
pkg-config \
texinfo \
wget \
yasm \
zlib1g-dev
3、原始碼安裝一些所需的庫:
可以把這里下載的庫統一放在我們剛才建立的ffmpeg目錄下,方便管理!
a、NASM
cd ~/ffmpeg_sources && \
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 && \
tar xjvf nasm-2.14.02.tar.bz2 && \
cd nasm-2.14.02 && \
./autogen.sh && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
make && \
make install
b、Yasm
cd ~/ffmpeg_sources && \
wget -O yasm-1.3.0.tar.gz https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz && \
tar xzvf yasm-1.3.0.tar.gz && \
cd yasm-1.3.0 && \
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
make && \
make install
c、libx264
cd ~/ffmpeg_sources && \
git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
cd x264 && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \
PATH="$HOME/bin:$PATH" make && \
make install
d、libx265
sudo apt-get install libnuma-dev && \
cd ~/ffmpeg_sources && \
git -C x265_git pull 2> /dev/null || git clone https://bitbucket.org/multicoreware/x265_git && \
cd x265_git/build/linux && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
PATH="$HOME/bin:$PATH" make && \
make install
e、libvpx
cd ~/ffmpeg_sources && \
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
cd libvpx && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \
PATH="$HOME/bin:$PATH" make && \
make install
f、libfdk-aac
cd ~/ffmpeg_sources && \
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
cd fdk-aac && \
autoreconf -fiv && \
./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
make && \
make install
g、libmp3lame
cd ~/ffmpeg_sources && \
wget -O lame-3.100.tar.gz https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz && \
tar xzvf lame-3.100.tar.gz && \
cd lame-3.100 && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm && \
PATH="$HOME/bin:$PATH" make && \
make install
h、libopus
cd ~/ffmpeg_sources && \
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
cd opus && \
./autogen.sh && \
./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
make && \
make install
i、libaom
cd ~/ffmpeg_sources && \
git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
mkdir -p aom_build && \
cd aom_build && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \
PATH="$HOME/bin:$PATH" make && \
make install
注:這個暫時國內下載不了,服務器在外國,,,,,
o、libsvtav1
cd ~/ffmpeg_sources && \
git -C SVT-AV1 pull 2> /dev/null || git clone https://github.com/AOMediaCodec/SVT-AV1.git && \
mkdir -p SVT-AV1/build && \
cd SVT-AV1/build && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DCMAKE_BUILD_TYPE=Release -DBUILD_DEC=OFF -DBUILD_SHARED_LIBS=OFF .. && \
PATH="$HOME/bin:$PATH" make && \
make install
最終我們可以下載ffmpeg目錄看到下載的庫檔案;
4、現在我們可以開始下載ffmpeg安裝包并解壓:
cd ~/ffmpeg_sources && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-gnutls \
--enable-libaom \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libsvtav1 \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree && \
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r
注意:這里一定是在之前的那些庫安裝之后再操作這個步驟,不然有些庫找不到,導致你編譯報錯,而且這里編譯的時間蠻久的,大概十幾分鐘左右!
這里環境就搭建完了,下面我來測驗一下環境是否搭建成功,記得我們得重新打開一個終端來操作,不然會顯示操作失敗:
所以重新打開一個終端:
最后我們來播放一個視頻看看,是否真的有效果:
ffplay rtmp://202.69.69.180:443/webcast/bshdlive-pc
效果展示:
當然你也可以播放你本地檔案里面的視頻,這里我就不演示了,很簡單!
三、總結:
上面的環境搭建可能費點時間,不過還是不建議本地安裝ffmpeg,最后,如果想進群交流的小伙伴,可以加我微信:
tu18879499804
一起加油,一起沖!以后每個禮拜我都會分享一到兩篇關于音視頻開發學習的筆記,記錄自己的學習成長記錄!
文章相關參考:
1、 https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
2、https://www.ffmpeg.org/about.html
https://ke.qq.com/webcourse/index.html#cid=468797&term_id=100561187&taid=4217103834359613&vid=5285890796072702423
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/242336.html
標籤:AI
