FFmpeg 編譯支持AV1解碼器dav1d

目錄

  1. 參考
  2. 編譯dav1d
  3. 編譯FFmpeg增加dav1d解碼器支持

1. 參考

2. 編譯dav1d

2.1 下載源碼

git clone https://code.videolan.org/videolan/dav1d.git

2.2 編譯環(huán)境配置

安裝編譯工具meson(版本>=0.47), Ninja, 對于x86*的設(shè)備還要安裝nasm (版本>=2.13.02)

meson和Ninja的安裝參見mesonbuild.com/Quick-guide

2.3 編譯

  1. 執(zhí)行meson build --buildtype release
  2. 執(zhí)行ninja -C build

編譯默認(rèn)是生成動態(tài)庫

  • 生成的動態(tài)庫在build/src骂倘,如下所示,so文件就是我們需要的抵赢,@@文件夾中是一些臨時文件种吸。
root@smallest:/home/dav1d/build# ls src
25a6634@@dav1d_bitdepth_16@sta  25a6634@@dav1d@sha  libdav1d.so.1.0.1
25a6634@@dav1d_bitdepth_8@sta   libdav1d.so
25a6634@@dav1d_entrypoint@sta   libdav1d.so.1

  • 輸出頭文件目錄在build/include,但只包含version.h文件狱意,需要把include/dav1d中除了version.h.in的文件拷貝到輸出的頭文件植袍。
root@smallest:/home/dav1d/include/dav1d# ls 
common.h  data.h  dav1d.h  headers.h  meson.build  picture.h  version.h.in

3. 編譯FFmpeg增加dav1d解碼器支持

3.1 編寫dav1d.pc

FFmpeg的configure腳本會執(zhí)行一個簡單的程序來檢測dav1d庫是否存在以及版本是否滿足要求:

enabled libdav1d          && require_pkg_config libdav1d "dav1d >= 0.2.1" "dav1d/dav1d.h" dav1d_version

其中使用了pkg-config來獲取dav1d的頭文件和庫的路徑。

pkg-config是linux下用來管理庫/模塊的所有編譯相關(guān)信息的工具打颤,參考
pkg-config簡介

編寫dav1d.pc如下

# dav1d pkg-config source file

prefix=/home/FFmpeg/thirdparty/dav1d
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name:dav1d 
Description: dav1d
Version: 1.0.1
Requires:
Conflicts:
Libs: -L${libdir} -ldav1d
Libs.private: 
Cflags: -I${includedir}
  • libdir和includedir指定了dav1d的頭文件和庫的路徑
  • 把dav1d.pc放到/usr/lib/pkgconfig下暴拄,或者配置PKG_CONFIG_PATH環(huán)境變量export PKG_CONFIG_PATH=‘dav1d.pc所在的路徑’

3.2 編譯FFmpeg

./configure --prefix=../buildout --enable-shared --disable-static --enable-libdav1d
# 編譯后檢查一下config.h中DAV1D是否配置成功了,如`#define CONFIG_LIBDAV1D 1`瘸洛。
make
make install

3.3 使用dav1d解碼器

https://code.videolan.org/videolan/dav1d-test-data.git 中有一些IVF封裝格式的AV1視頻測試數(shù)據(jù)

使用ffprobe查看IVF文件的信息揍移,ffprobe 00001148.ivf的輸出信息:

[libdav1d @ 0x1992040] libdav1d 0.2.1-10-g3f2bb0d
Input #0, ivf, from '00001148.ivf':
  Duration: 00:00:00.10, start: 0.000000, bitrate: 23685 kb/s
    Stream #0:0: Video: av1 (Main) (AV01 / 0x31305641), yuv420p(tv), 3840x2160, 30 tbr, 30 tbn, 30 tbc
[libdav1d @ 0x1997280] libdav1d 0.2.1-10-g3f2bb0d

把IVF視頻文件解碼為yuv文件,ffmpeg -i 00001148.ivf -f rawvideo 00001148_yuv420p的輸出信息:

[libdav1d @ 0x10bf900] libdav1d 0.2.1-10-g3f2bb0d
Input #0, ivf, from '00001148.ivf':
  Duration: 00:00:00.10, start: 0.000000, bitrate: 23685 kb/s
    Stream #0:0: Video: av1 (Main) (AV01 / 0x31305641), yuv420p(tv), 3840x2160, 30 tbr, 30 tbn, 30 tbc
[libdav1d @ 0x10c0540] libdav1d 0.2.1-10-g3f2bb0d
Stream mapping:
  Stream #0:0 -> #0:0 (av1 (libdav1d) -> rawvideo (native))
Press [q] to stop, [?] for help
Output #0, rawvideo, to '00001148_yuv420p':
  Metadata:
    encoder         : Lavf58.26.101
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 3840x2160, q=2-31, 2985984 kb/s, 30 fps, 30 tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.47.105 rawvideo
frame=    3 fps=0.0 q=-0.0 Lsize=   36450kB time=00:00:00.10 bitrate=2985984.0kbits/s speed=0.21x    
video:36450kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末反肋,一起剝皮案震驚了整個濱河市那伐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌石蔗,老刑警劉巖罕邀,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異养距,居然都是意外死亡诉探,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門棍厌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肾胯,“玉大人,你說我怎么就攤上這事耘纱【炊牵” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵束析,是天一觀的道長艳馒。 經(jīng)常有香客問我,道長员寇,這世上最難降的妖魔是什么弄慰? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蝶锋,結(jié)果婚禮上陆爽,老公的妹妹穿的比我還像新娘。我一直安慰自己扳缕,他們只是感情好墓陈,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布恶守。 她就那樣靜靜地躺著,像睡著了一般贡必。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庸毫,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天仔拟,我揣著相機(jī)與錄音,去河邊找鬼飒赃。 笑死利花,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的载佳。 我是一名探鬼主播炒事,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔫慧!你這毒婦竟也來了挠乳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤姑躲,失蹤者是張志新(化名)和其女友劉穎睡扬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黍析,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡卖怜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阐枣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片马靠。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔼两,靈堂內(nèi)的尸體忽然破棺而出甩鳄,到底是詐尸還是另有隱情,我是刑警寧澤宪哩,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布娩贷,位于F島的核電站,受9級特大地震影響锁孟,放射性物質(zhì)發(fā)生泄漏彬祖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一品抽、第九天 我趴在偏房一處隱蔽的房頂上張望储笑。 院中可真熱鬧,春花似錦圆恤、人聲如沸突倍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羽历。三九已至焊虏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秕磷,已是汗流浹背诵闭。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留澎嚣,地道東北人疏尿。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像易桃,于是被迫代替她去往敵國和親褥琐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348