OSXにはコマンドラインビデオ変換ユーティリティ avconvert が付属していますが、このツールは avconvlibav が提供する機能と比較して機能が制限されています。
OS Xにavconvをインストールするにはどうすればよいですか?
最初にライブラリを取得します。
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
Brewでインストールするだけです。
brew install libav
brew
がない場合-そして、macportsがlibav
のポートを表示するまで、OSX 10.8.5にsource(libavバージョン_12_dev0
_、githubから)。
私が直面した主な問題は、libavがmacosで定義されていないsem_timedwait()
(Linuxではsemaphore.h)を使用することでした。
この投稿 https://stackoverflow.com/a/1516376 は、オーストラリアの天文台のソフトウェアグループのキースショートリッジ(ありがとう)が、ここにあるmacosの上記の関数の実装を書いたと述べています- https://github.com/attie/libxbee3/tree/master/xsys_darwin
2つのファイルを_${LIBAVDIR}/libavdevice
_にダウンロードし、ヘッダーファイル_sem_timedwait.h
_に次の行を追加します。
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
次に、_${LIBAVDIR}/libavdevice
_のMakefileを編集し、OBJS
変数の最後に_sem_timedwait.o
_を追加します
すべてを構成して作成する
準備できた。
記録として、次の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ライブラリにリンクするシステムの他の部分!!!!後者の場合は、libav
のコピーおよびキースの実装のすべての場所でsem_timedwait()
の名前を変更することをお勧めします。また、他のシンボルがsem_timedwait.oからエクスポートされているかどうかを確認し、それらの名前も変更します。
以下は、Keith Shortridgeによるsem_timedwait()
の実装からの名前が変更された新しいシンボルです。
_sem_timedwait_keith, timeoutThreadMain_keith, triggerSignal_keith, ignoreSignal_keith, timeoutThreadCleanup_keith
_
(__keith
_を削除して元の名前を取得してください)。 libav
内のsem_timedwait()
への唯一の参照(上記のバージョンの場合)は_jack.c
_内にあります。
Httpsでホストされている動画の場合(最近の多く)、OpenSSLをサポートするavconvを構築してください:
brew install libav --with-openssl