จะติดตั้ง libav / avconv บน OSX ได้อย่างไร?


32

OSX มาพร้อมกับบรรทัดคำสั่งการแปลงวิดีโอยูทิลิตี้avconvertแต่เครื่องมือนี้ให้ฟังก์ชันการทำงานที่ จำกัด เมื่อเทียบกับavconvให้โดยlibav

ฉันจะติดตั้ง avconv บน OS X ได้อย่างไร


3
ด้วย brew install libavHomebrew:
Mathias Bynens

คำตอบ:



17

ก่อนคว้าห้องสมุด:

 wget http://libav.org/releases/libav-10.1.tar.gz
# use http://libav.org/releases/libav-snapshot.tar.bz2 for the latest snapshot
tar -xvzf libav-10.1.tar.gz 
cd libav-10.1

ตั้งค่าการขึ้นต่อกันด้วยMacPorts (หรือตัวจัดการแพ็คเกจอื่น ๆ เช่นHomebrew ):

sudo port install yasm zlib bzip2 faac lame speex libogg libvorbis libtheora libvpx x264 XviD openjpeg15 opencore-amr freetype

สร้าง libav:

./configure \
--extra-cflags=-I/opt/local/include --extra-ldflags=-L/opt/local/lib \
--enable-gpl --enable-libx264 --enable-libxvid \
--enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb \
--enable-nonfree --enable-libfaac \
--enable-libmp3lame --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvpx \
--enable-libopenjpeg --enable-libfreetype --enable-doc --enable-gnutls --enable-shared

make && sudo make install

จากนั้นคุณสามารถเรียกใช้avconv:

avconv -i input.avi -c:v libx264 -preset slow -crf 18 output.mp4

  • x264 +asmดูเหมือนว่าจะต้องได้รับการทำงานcpu-capabilitiesดังนั้นหากคุณไม่ได้รับพวกเขา (เช่น. [libx264 @ 0x7fe66101a800] using cpu capabilities: none!) ทำงาน:

อัพเกรดพอร์ต sudo - บังคับให้ใช้ x264 + asm

คุณควรได้รับเช่น: [libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX


3
บน Mac OSX ไม่พบการพึ่งพาที่ติดตั้งผ่าน MacPorts และการใช้ pkg-config จนกว่าคุณจะตั้งค่าตัวแปรสภาวะแวดล้อมexport PKG_CONFIG_PATH=/opt/local/lib/pkgconfig'. Also, for the fun of it, you may add, to . / , options: config --extra-cflags = -I / opt / local / include --extra-ldflags = -L / opt / local / lib . Then the whole . / configure` ข้างต้นผ่านไปอย่างน่าอัศจรรย์!
Alexy

5
ชงติดตั้ง libav
Steven Soroka

1
ในขั้นตอนที่สองถึงขั้นสุดท้ายให้สร้าง lib-av ข้อผิดพลาด: ไม่พบ gnutls
Chase Roberts

@ChaseRoberts สวัสดีเชสฉันยังมีปัญหาเดียวกันกับไม่พบ gnutls ฉันลองทำตามคำแนะนำgist.github.com/morgant/1753095แต่พบข้อผิดพลาดเพิ่มเติม คุณเคยมีสิ่งที่จะทำงานไหม?
John

ตกลงฉันต้องติดตั้ง homebrew อีกครั้งเพื่อbrew install libavให้ทำงานได้
John

1

สำหรับผู้ที่ไม่มีbrew- และจนกว่า macports จะมีพอร์ตสำหรับต่อlibavไปนี้เป็นบันทึกของฉันสำหรับการติดตั้ง libav บน OSX 10.8.5 จากแหล่งที่มา (เวอร์ชัน libav 12_dev0จาก github)

ปัญหาหลักที่ฉันประสบคือ libav ใช้sem_timedwait()(semaphore.h ใน linux) ซึ่งไม่ได้กำหนดไว้ใน macos

โพสต์นี้https://stackoverflow.com/a/15163760กล่าวว่า Keith Shortridge ของกลุ่มซอฟต์แวร์หอดูดาวออสเตรเลีย (ขอบคุณ) ได้เขียนการใช้งานของฟังก์ชั่นดังกล่าวสำหรับ macos ซึ่งสามารถพบได้ที่นี่https://github.com/attie / libxbee3 / ต้น / Master / xsys_darwin

ดาวน์โหลดไฟล์ทั้งสองเข้าไป${LIBAVDIR}/libavdeviceแล้วเพิ่มบรรทัดต่อไปนี้ในไฟล์ส่วนหัวsem_timedwait.h:

int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);

จากนั้นแก้ไข Makefile ใน${LIBAVDIR}/libavdeviceและเพิ่มsem_timedwait.oที่ส่วนท้ายของOBJSตัวแปร

กำหนดค่าและทำให้ทั้งหมด

คุณสบายดี

สำหรับบันทึกฉันใช้คำสั่งกำหนดค่าต่อไปนี้:

./configure --extra-cflags=-I/opt/local/include --extra-ldflags=-L/opt/local/lib --enable-gpl --enable-libx264 --enable-libxvid --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-nonfree --enable-libfaac --enable-libmp3lame --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvpx --enable-libopenjpeg --enable-libfreetype --enable-doc --enable-gnutls --prefix=/opt/local

คำเตือน: ฉันไม่สามารถพูดหรือรับประกันได้ว่าการใช้งานดังกล่าวsem_timedwait()เป็นสิ่งที่ถูกต้องและ / หรือจะไม่มีผลข้างเคียงต่อการทำงานของlibavหรือส่วนอื่น ๆ ของระบบที่เชื่อมโยงไปยังไลบรารี libav ซึ่งตอนนี้มีsem_timedwait()การนำไปใช้ !!!! สำหรับหลังฉันขอแนะนำให้เปลี่ยนชื่อsem_timedwait()ทุกแห่งในสำเนาของคุณlibavและการนำไปใช้ของ Keith ตรวจสอบด้วยว่ามีการส่งออกสัญลักษณ์อื่น ๆ จาก sem_timedwait.o หรือไม่และเปลี่ยนชื่อด้วย

นี่คือสัญลักษณ์ใหม่ที่ถูกเปลี่ยนชื่อจากการนำไปใช้ของ Keith Shortridge sem_timedwait():

sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith

(ลบ_keithเพื่อรับชื่อเดิม) มีการอ้างอิงถึงsem_timedwait()ในlibav(สำหรับเวอร์ชันที่กล่าวถึง) jack.cเท่านั้น


0

สำหรับวิดีโอที่โฮสต์บน https (หลายวันนี้) ตรวจสอบให้แน่ใจว่าคุณได้สร้าง avconv ด้วยการสนับสนุน OpenSSL:

brew install libav --with-openssl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.