web-dev-qa-db-ja.com

OSXにlibav / avconvをインストールする方法

OSXにはコマンドラインビデオ変換ユーティリティ avconvert が付属していますが、このツールは avconvlibav が提供する機能と比較して機能が制限されています。

OS Xにavconvをインストールするにはどうすればよいですか?

35
Olivier

最初にライブラリを取得します。

 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

17
Olivier

Brewでインストールするだけです。

brew install libav
63
Weston Ganger

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_内にあります。

1
bliako

Httpsでホストされている動画の場合(最近の多く)、OpenSSLをサポートするavconvを構築してください:

brew install libav --with-openssl
0
jm3