Câu trả lời:
Chỉ cần cài đặt nó với brew:
brew install libav
Đầu tiên lấy thư viện:
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
Thiết lập các phụ thuộc với MacPorts (hoặc các trình quản lý gói khác như Homebrew ):
sudo port install yasm zlib bzip2 faac lame speex libogg libvorbis libtheora libvpx x264 XviD openjpeg15 opencore-amr freetype
Xây dựng 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
Sau đó, bạn có thể chạy avconv
:
avconv -i input.avi -c:v libx264 -preset slow -crf 18 output.mp4
x264 +asm
dường như được yêu cầu để làm việc cpu-capabilities
, vì vậy nếu bạn không chạy chúng (tức là [libx264 @ 0x7fe66101a800] using cpu capabilities: none!
) .nâng cấp cổng sudo - biến thể lực x264 + asm
Bạn sẽ nhận được sth như: [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
./configure , options:
--extra-CFLAGS = -I / opt / local / include --extra-ldflags = -L / opt / local / lib . Then the whole
. / configure` ở trên vượt qua một cách kỳ diệu!
brew install libav
làm.
Đối với những người không có brew
- và cho đến khi macports đưa ra một cổng cho libav
, đây là những lưu ý của tôi để cài đặt libav trên OSX 10.8.5 từ nguồn (phiên bản libav 12_dev0
, từ github).
Vấn đề chính tôi gặp phải là libav sử dụng sem_timedwait()
(semaphore.h trong linux) không được xác định trong macos.
Bài đăng này https://stackoverflow.com/a/15163760 đề cập rằng Keith Shortridge thuộc nhóm phần mềm của Đài quan sát thiên văn Úc (cảm ơn) đã viết một triển khai chức năng nói cho macos có thể tìm thấy ở đây https://github.com/attie / libxbee3 / cây / chủ / xsys_darwin
Tải xuống hai tệp vào ${LIBAVDIR}/libavdevice
và sau đó thêm dòng sau vào tệp tiêu đề sem_timedwait.h
:
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
Sau đó chỉnh sửa Makefile trong ${LIBAVDIR}/libavdevice
và thêm sem_timedwait.o
vào cuối OBJS
biến
cấu hình và làm cho tất cả
bạn tốt để đi
Đối với bản ghi, tôi đã sử dụng lệnh configure sau:
./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
CẢNH BÁO: Tôi không thể nói hoặc đảm bảo việc triển khai nói trên sem_timedwait()
có đúng hay không và sẽ không có tác dụng phụ đối với hoạt động của libav
hoặc thực sự là bất kỳ phần nào khác của hệ thống liên kết đến các thư viện libav hiện đang sem_timedwait()
triển khai trong đó !!!! Để sau này tôi có thể đề nghị đổi tên sem_timedwait()
ở mọi nơi trong bản sao của bạn libav
và triển khai của Keith. Đồng thời kiểm tra xem có bất kỳ biểu tượng nào khác được xuất từ sem_timedwait.o và đổi tên chúng không.
Dưới đây là các biểu tượng mới, được đổi tên từ triển khai của Keith Shortridge về sem_timedwait()
:
sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith
(loại bỏ _keith
để có được tên gốc). Tham chiếu duy nhất sem_timedwait()
trong libav
(cho phiên bản đã nói) là trong jack.c
.
brew install libav
.