回答:
最初にライブラリを取得します。
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
次のように取得する必要があります。 [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 を設定するまで見つかりません. Then the whole
上記の/ lib。/ configure`は奇跡的にパスします!
brew install libav
仕事をするためにhomebrewを再インストールする必要がありました。
なしの場合brew
、およびmacportsがのためのポートをlibav
提供するまで、OSX 10.8.5にソース(libavバージョン12_dev0
、githubから)にlibavをインストールするためのメモを以下に示します。
私が直面した主な問題は、libav sem_timedwait()
がmacosで定義されていない(Linux ではsemaphore.h)を使用することでした。
この投稿https://stackoverflow.com/a/15163760は、オーストラリア天文台のソフトウェアグループのキース・ショートリッジ(ありがとう)が、ここにあるhttps://github.com/attieにあるmacos用の機能の実装を書いたことに言及しています/ libxbee3 / tree / master / xsys_darwin
2つのファイルをダウンロード${LIBAVDIR}/libavdevice
し、ヘッダーファイルに次の行を追加しますsem_timedwait.h
。
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
次に、Makefileを編集し、変数の最後に${LIBAVDIR}/libavdevice
追加sem_timedwait.o
しOBJS
ます
構成してすべてを作る
準備できた。
レコードには、次の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
、キースの実装のコピーのどこでも名前を変更することをお勧めします。また、他のシンボルがsem_timedwait.oからエクスポートされているかどうかを確認し、それらの名前も変更します。
以下は、キースショートリッジの実装の名前が変更された新しいシンボルですsem_timedwait()
。
sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith
(_keith
元の名前を取得するために削除)。(上記のバージョンの)sem_timedwait()
in への唯一の参照libav
はin jack.c
です。
brew install libav
。