คำตอบ:
เพียงติดตั้งกับชง:
brew install libav
ก่อนคว้าห้องสมุด:
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
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` ข้างต้นผ่านไปอย่างน่าอัศจรรย์!
brew install libav
ให้ทำงานได้
สำหรับผู้ที่ไม่มี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
เท่านั้น
สำหรับวิดีโอที่โฮสต์บน https (หลายวันนี้) ตรวจสอบให้แน่ใจว่าคุณได้สร้าง avconv ด้วยการสนับสนุน OpenSSL:
brew install libav --with-openssl
brew install libav
Homebrew: