OSX에 libav / avconv를 설치하는 방법은 무엇입니까?


답변:



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 포트 업그레이드 --enforce-variants x264 + asm

당신은 sth를 얻습니다 : [libx264 @ 0x7fc62401b600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX


3
맥 OSX에서 MacPorts를하고 PKG-config를 사용을 통해 설치 종속성을 찾을 수 없습니다 때까지 일련의 환경 변수 export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig'. Also, for the fun of it, you may add, to ./configure를 , options: --extra - CFLAGS는 = -I / 옵션 / 지역 / --extra-LDFLAGS를 포함 = -L / 옵션 / 지역 . Then the whole 기적적으로 위의 / lib . / configure`!
Alexy

5
brew install libav
Steven Soroka

1
마지막 단계에서 lib-av를 빌드하십시오. 오류 : 그 누트를 찾을 수 없음
Chase Roberts

@ChaseRoberts 안녕 체이스, 나는 또한 gnutls를 찾을 수없는 같은 문제가 있습니다. 가이드 gist.github.com/morgant/1753095를 따르 려고 시도 했지만 더 많은 오류가 발생했습니다. 일을 할 수 있었습니까?
John

알았어요 brew install libav. 일 을하기 위해 집주인을 다시 설치해야 했어요 .
John

1

없는 사람들을 위해 brew- 그리고 MacPorts를 할 때까지를위한 포트 마련 libav, 여기에서 OSX 10.8.5에 libav를 설치하기위한 내 노트입니다 소스 (libav 버전 12_dev0GitHub의에서이).

내가 직면 한 주요 문제는 libav가 사용한다는 것입니다. sem_timedwait() 에서 정의되지 않은 (linux의 semaphore.h)를 입니다.

이 게시물 https://stackoverflow.com/a/15163760 에 따르면 호주 천문대 소프트웨어 그룹의 Keith Shortridge (감사)는 https://github.com/attie 에서 찾을 수있는 macos에 대한 해당 기능의 구현을 작성했다고 언급합니다. / libxbee3 / tree / master / xsys_darwin

두 파일을 다운로드 한 ${LIBAVDIR}/libavdevice다음 헤더 파일에 다음 줄을 추가하십시오 sem_timedwait.h.

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

그런 다음 Makefile을 편집 하고 변수 의 끝에 ${LIBAVDIR}/libavdevice추가 하십시오sem_timedwait.oOBJS

구성하고 모두 만들기

잘 가세요

기록을 위해 다음 configure 명령을 사용했습니다.

./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또는 현재 sem_timedwait()구현 이있는 libav 라이브러리에 연결된 시스템의 다른 부분의 작동에 실제로 영향을 미치지 않을지 말하거나 보장 할 수 없습니다 !!!! 후자의 경우 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 (많은 요즘)에서 호스팅되는 비디오의 경우 OpenSSL 지원으로 avconv를 빌드해야합니다.

brew install libav --with-openssl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.