macOS編譯ffmpeg中的播放器ffplay

之前寫過一篇關(guān)于編譯ffmpeg的文章,地址: linux安裝ffmpeg
本文在那篇基礎(chǔ)上,講怎么編譯ffmpeg的播放器ffplay。

本次實(shí)驗(yàn)環(huán)境:

  • macOS Catalina 10.15.1
  • FFmpeg 3.4

在ffmpeg目錄下執(zhí)行./configure(攜帶好需要的參數(shù)),輸出的信息包含了會(huì)編譯哪些可執(zhí)行程序:

Programs:
ffmpeg            ffprobe           ffserver

可以看到,并不包含ffplay。這是由于ffplay依賴sdl庫(kù),我本地環(huán)境沒有,所以需要先安裝sdl庫(kù)。

在ffmpeg目錄下執(zhí)行./configure -h,輸出的信息可以看到這么一行:

--disable-sdl2           disable sdl2 [autodetect]

說明使用的是sdl2,并且如果當(dāng)前環(huán)境有sdl2的話,會(huì)自動(dòng)檢測(cè)并使用。

這里我們選擇源碼安裝sdl2:

$wget https://www.libsdl.org/release/SDL2-2.0.12.tar.gz
$cd SDL2-2.0.12/
$./configure
$make && make install

再次回到ffmpeg目錄下執(zhí)行./configure(攜帶好需要的參數(shù)),顯示如下信息:

Programs:
ffmpeg            ffplay            ffprobe           ffserver

說明會(huì)包含ffplay了,執(zhí)行make編譯:

$make -j8

編譯完就可以看到生成好的ffplay等可執(zhí)行文件了。嘗試使用ffplay播放一個(gè)文件,一切正常。


最后,再貼一個(gè)macOS編譯SDL1.2的方法,盡管我本次編譯ffplay使用的SDL2,不需要SDL1.2,但是我在編譯SDL1.2時(shí)也遇到了一些問題,把相關(guān)內(nèi)容貼在這,留給需要的人。

實(shí)驗(yàn)環(huán)境: macOS Catalina 10.15.1

https://www.libsdl.org/download-1.2.php 這個(gè)網(wǎng)站找到源碼下載地址。

下載SDL1.2.15,編譯,安裝:

$wget https://www.libsdl.org/release/SDL-1.2.15.tar.gz
$cd SDL-1.2.15/
$./configure
$make && make install

編譯報(bào)錯(cuò):

./include/SDL_syswm.h:58:10: fatal error: 'X11/Xlib.h' file not found
#include <X11/Xlib.h>
         ^~~~~~~~~~~~
1 error generated.

缺少X11,直接下載dmg安裝包文件,安裝XQuertz,下載地址: https://dl.bintray.com/xquartz/downloads/XQuartz-2.7.11.dmg

再次嘗試編譯SDL,輸出如下信息:

./src/video/quartz/SDL_QuartzVideo.h:94:5: error: unknown type name 'CGDirectPaletteRef'
    CGDirectPaletteRef palette;            /* palette of an 8-bit display */

解決方法是把報(bào)錯(cuò)的那行代碼注釋掉。

再次嘗試編譯SDL,輸出如下信息:

./src/video/x11/SDL_x11sym.h:168:17: error: conflicting types for '_XData32'
SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)

我們修改報(bào)錯(cuò)的代碼,在register后面增加_Xconst,修改后如下:

SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)

再次嘗試編譯SDL,編譯通過。

本文完,作者yoko,尊重勞動(dòng)人民成果,轉(zhuǎn)載請(qǐng)注明原文出處: https://pengrl.com/p/20043/

本篇文章由一文多發(fā)平臺(tái)ArtiPub自動(dòng)發(fā)布

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容