忍者ブログ
MASTER →  ADMIN / NEW ENTRY / COMMENT
現代魔法(nearly equal 情報技術)を勉強中な人のメモ(チラシの裏)
/ 2024/11/21 (Thu) / 編集
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

/ 2009/10/17 (Sat) / 編集
なんだかんだで動画変換が必要な今日この頃、Macbookにffmpeg入れてみた。
一口にffmpegといっても、実はストリーミングとか動画編集とかいろいろできて付加するライブラリの種類なんかで出来ることは結構変ってくる。今回の目標はconfigureで対応している「External library support:」なコーディックを一通り入れるて、いろんな形式の動画を変換できるようにすること。
External library support:
  --enable-avisynth        enable reading of AVISynth script files [no]
  --enable-bzlib           enable bzlib [autodetect]
  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
                           and libraw1394 [no]
  --enable-libdirac        enable Dirac support via libdirac [no]
  --enable-libfaac         enable FAAC support via libfaac [no]
  --enable-libfaad         enable FAAD support via libfaad [no]
  --enable-libfaadbin      open libfaad.so.0 at runtime [no]
  --enable-libgsm          enable GSM support via libgsm [no]
  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
  --enable-libnut          enable NUT (de)muxing via libnut,
                           native (de)muxer exists [no]
  --enable-libopenjpeg     enable JPEG 2000 decoding via OpenJPEG [no]
  --enable-libschroedinger enable Dirac support via libschroedinger [no]
  --enable-libspeex        enable Speex decoding via libspeex [no]
  --enable-libtheora       enable Theora encoding via libtheora [no]
  --enable-libvorbis       enable Vorbis encoding via libvorbis,
                           native implementation exists [no]
  --enable-libx264         enable H.264 encoding via x264 [no]
  --enable-libxvid         enable Xvid encoding via xvidcore,
                           native MPEG-4/Xvid encoder exists [no]
  --enable-mlib            enable Sun medialib [no]
  --enable-zlib            enable zlib [autodetect]
なので、「--enable-avisynth(動画編集スクリプト言語)」と「--enable-libdc1394(カメラからの取り込み)」「--enable-libschroedinger(diracサポート、--enable-libdiracがあるし、、、)」「--enable-mlib(C言語で動画処理な関数群)」はなしの方向で。別に対応コーディックが増える訳でもなし、、、



事前準備

以下のコマンドを使えるように準備しておく。
aclocal,autoheader,libtoolize,automake,autoconf,pkg-config,git

pkg-config用の設定も忘れずに!pkg-configの設定ファイル(*.pc)があるディレクトリ(私の場合は「/usr/local/lib/pkgconfig」)にパスを通しておかないとldエラーがでることがあるよ。以下はtcshの場合。
setenv PKG_CONFIG_PATH /usr/local/lib/pkgconfig


各種ライブラリのインストール

使用ライブラリ、すべて最新版をインストールするとなおよし。 横に並んでるのは依存関係のあるものなので、左から順番に、、、 緑字は面倒だったので最新版にしなかったもの、()内はバージョンもしくはリビジョン番号
ffmpeg (20261)

zlib(1.2.3)
pthread
nasm(0.98.40),yasm(0.7.0.2066),x264(2245) : H.264形式用
faad2 (2.7),faac(1.28) : aac形式用
gsm(1.0.13)
lame (398-2) : mp3形式用
libnut(664)
libogg(1.1.4),libvorbis(1.2.3) : ogg形式用
libtheora(1.1.1)
xvidcore (1.2.2) : Xvid形式用
a52dec(0.7.4)
opencore-amr(0.1.2):3gp形式用
dirac (1.0.2):.avi .mkv .ogvとからしい
speex (1.2rc1) : speex用(VoIPアプリケーションやポッドキャスト)
openjpeg (v1_3)

コンパイル方法
  1. ./autogen もしくは ./autogen.sh もしくは ./bootstrap
  2. ./configure
  3. make
  4. sudo make install
上の方法でできない特殊なものは以下参照

nut

ソースファイルを一部修正、「libnut/demuxer.cの16行目、ftelloをftellに変更」

gsm

install先の指定のためにMakefileを自分で修正しないといけないという仕様
INSTALL_ROOT = /usr/local
ヘッダファイルの保存先(デフォルトではinc)も変更が必要。
GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/include

libvorbis

bashを使って「OGG_LIBS="-logg" ./configure」、exitも忘れずに
%bash
$OGG_LIBS="-logg" ./configure
$make
$sudo make install
$exit

xvidcore

パッチを当てます。

xvidcore-1.2.1-pthreads.diff
diff -urN xvidcore.orig/build/generic/configure.in xvidcore/build/generic/configure.in
--- xvidcore.orig/build/generic/configure.in	Tue Dec  2 01:35:47 2008
+++ xvidcore/build/generic/configure.in	Wed Feb 11 14:00:06 2009
@@ -562,13 +562,13 @@
 AC_CHECK_HEADER(
 	pthread.h,
 	AC_CHECK_LIB(
-		pthread,
+		pthread -lwsock32,
 		pthread_create,
 		AC_CHECK_LIB(
-			pthread,
+			pthread -lwsock32,
 			pthread_join,
-			SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_PTHREAD"
-			SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS -lpthread",
+			SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_PTHREAD -DPTW32_STATIC_LIB"
+			SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS -lpthread -lwsock32",
 			AC_MSG_WARN(Pthread not supported. No SMP support)),
 		AC_MSG_WARN(Pthread not supported. No SMP support)),
 	AC_MSG_WARN(Pthread not supported. No SMP support))
diff -urN xvidcore.orig/src/encoder.c xvidcore/src/encoder.c
--- xvidcore.orig/src/encoder.c	Thu Feb  8 22:10:24 2007
+++ xvidcore/src/encoder.c	Wed Feb 11 14:01:49 2009
@@ -134,11 +134,26 @@
 }
 
 
+#ifdef PTW32_STATIC_LIB
+static void
+detach_ptw32(void)
+{
+	pthread_win32_thread_detach_np();
+	pthread_win32_process_detach_np();
+}
+#endif
+
 int
 enc_create(xvid_enc_create_t * create)
 {
 	Encoder *pEnc;
 	int n;
+
+#ifdef PTW32_STATIC_LIB
+	pthread_win32_process_attach_np();
+	pthread_win32_thread_attach_np();
+	atexit(detach_ptw32);
+#endif
 
 	if (XVID_VERSION_MAJOR(create->version) != 1) /* v1.x.x */
 		return XVID_ERR_VERSION;
diff -urN xvidcore.orig/src/motion/motion_smp.h xvidcore/src/motion/motion_smp.h
--- xvidcore.orig/src/motion/motion_smp.h	Wed Nov 26 10:04:34 2008
+++ xvidcore/src/motion/motion_smp.h	Wed Feb 11 14:03:29 2009
@@ -32,11 +32,15 @@
 #ifdef WIN32
 
 # include 
-# define pthread_t				HANDLE
-# define pthread_create(t,u,f,d) *(t)=CreateThread(NULL,0,f,d,0,NULL)
-# define pthread_join(t,s)		{ WaitForSingleObject(t,INFINITE); \
+
+# ifdef HAVE_PTHREAD
+#  include 
+# else
+#  define pthread_t				HANDLE
+#  define pthread_create(t,u,f,d) *(t)=CreateThread(NULL,0,f,d,0,NULL)
+#  define pthread_join(t,s)		{ WaitForSingleObject(t,INFINITE); \
 									CloseHandle(t); } 
-# define sched_yield()			Sleep(0);
+#  define sched_yield()			Sleep(0);
 static __inline int pthread_num_processors_np() 
 {
 	DWORD p_aff, s_aff, r = 0;
@@ -44,6 +48,7 @@
 	for(; p_aff != 0; p_aff>>=1) r += p_aff&1;
 	return r;
 }
+#endif
 
 #elif defined(SYS_BEOS)
 
diff -urN xvidcore.orig/src/utils/x86_asm/cpuid.asm xvidcore/src/utils/x86_asm/cpuid.asm
--- xvidcore.orig/src/utils/x86_asm/cpuid.asm	Tue Dec  2 23:00:09 2008
+++ xvidcore/src/utils/x86_asm/cpuid.asm	Wed Feb 11 14:03:55 2009
@@ -61,6 +61,7 @@
 
 vendorAMD:
 		db "AuthenticAMD"
+ALIGN 16
 
 ;=============================================================================
 ; Macros
引用[お気に入りの動画を携帯で見よう]Xvidのコンパイル&インストール (1.2.1以降)

f1718874b.txt
--- /c/Documents and Settings/Jason/Desktop/plugin_lumimasking.c	2006-05-05 21:37:15.000000000 -0700
+++ ../src/plugins/plugin_lumimasking.c	2008-02-22 10:11:53.310000000 -0800
@@ -2,11 +2,11 @@
  *
  *  XVID MPEG-4 VIDEO CODEC
  *  - XviD plugin: performs a lumimasking algorithm on encoded frame  -
  *
  *  Copyright(C) 2002-2003 Peter Ross 
- *               2002      Christoph Lampert 
+ *			   2002	  Christoph Lampert 
  *
  *  This program is free software ; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation ; either version 2 of the License, or
  *  (at your option) any later version.
@@ -23,10 +23,11 @@
  * $Id: plugin_lumimasking.c,v 1.6 2006/05/06 04:37:15 syskin Exp $
  *
  ****************************************************************************/
 
 #include 
+#include 
 
 #include "../xvid.h"
 #include "../global.h"
 #include "../portab.h"
 #include "../utils/emms.h"
@@ -155,31 +156,31 @@
 									 int *out,
 									 int num,
 									 int min_quant,
 									 int max_quant);
 
-static int
-lumi_plg_frame(lumi_data_t *handle, xvid_plg_data_t *data)
+static int lumi_plg_frame(lumi_data_t *handle, xvid_plg_data_t *data)
 {
-	int i, j;
-
-	float global = 0.0f;
+	//Don't apply variance-masking to B-frames.
+	if (data->type == XVID_TYPE_BVOP) return 0;
 
-	const float DarkAmpl = 14 / 4;
-	const float BrightAmpl = 10 / 3;
-	float DarkThres = 90;
-	float BrightThres = 200;
+	int i, j;
 
-	const float GlobalDarkThres = 60;
-	const float GlobalBrightThres = 170;
+	/* Arbitrary centerpoint for variance-based AQ.  Roughly the same as used in x264. */
+	float center = 14000;
 
-	if (data->type == XVID_TYPE_BVOP) return 0;
+	/* Arbitrary strength for variance-based AQ. */
+	float strength = 0.2;
 
 	/* Do this for all macroblocks individually  */
-	for (j = 0; j < data->mb_height; j++) {
-		for (i = 0; i < data->mb_width; i++) {
-			int k, l, sum = 0;
+	for (j = 0; j < data->mb_height; j++)
+	{
+		for (i = 0; i < data->mb_width; i++)
+		{
+			int k, l;
+            unsigned int sum = 0;
+            unsigned int sum_of_squares = 0;
 			unsigned char *ptr;
 
 			/* Initialize the current quant value to the frame quant */
 			handle->quant[j*data->mb_width + i] = (float)data->quant;
 
@@ -187,41 +188,34 @@
 
 			/* Get the MB address */
 			ptr  = data->current.plane[0];
 			ptr += 16*j*data->current.stride[0] + 16*i;
 
-			/* Accumulate luminance */
+			/* Accumulate sum and sum of squares over the MB */
 			for (k = 0; k < 16; k++)
 				for (l = 0; l < 16; l++)
-					 sum += ptr[k*data->current.stride[0] + l];
+				{
+					int val = ptr[k*data->current.stride[0] + l];
+					sum += val;
+					sum_of_squares += val * val;
+				}
+					 
+			/* Variance = SSD - SAD^2 / (numpixels) */
+			int variance = sum_of_squares - sum * sum / 256;
 			
-			handle->val[j*data->mb_width + i] = (float)sum/256.0f;
-
-			/* Accumulate the global frame luminance */
-			global += (float)sum/256.0f;
+			handle->val[j*data->mb_width + i] = variance;
 		}
 	}
-
-	/* Normalize the global luminance accumulator */
-	global /= data->mb_width*data->mb_height;
-
-	DarkThres = DarkThres*global/127.0f;
-	BrightThres = BrightThres*global/127.0f;
-
-
-	/* Apply luminance masking only to frames where the global luminance is
-	 * higher than DarkThreshold and lower than Bright Threshold */
-	 if ((global < GlobalBrightThres) && (global > GlobalDarkThres)) {
-
-		/* Apply the luminance masking formulas to all MBs */
-		for (i = 0; i < data->mb_height; i++) {
-			for (j = 0; j < data->mb_width; j++) {
-				if (handle->val[i*data->mb_width + j] < DarkThres)
-					handle->quant[i*data->mb_width + j] *= 1 + DarkAmpl * (DarkThres - handle->val[i*data->mb_width + j]) / DarkThres;
-				else if (handle->val[i*data->mb_width + j] > BrightThres)
-					handle->quant[i*data->mb_width + j] *= 1 + BrightAmpl * (handle->val[i*data->mb_width + j] - BrightThres) / (255 - BrightThres);
-			}
+    
+	/* Apply the variance masking formula to all MBs */
+	for (i = 0; i < data->mb_height; i++)
+	{
+		for (j = 0; j < data->mb_width; j++)
+		{
+			float value = handle->val[i*data->mb_width + j];
+			float qscale_diff = strength * logf(value / center);
+			handle->quant[i*data->mb_width + j] *= (1.0 + qscale_diff);
 		}
 	}
 
 	 /* Normalize the quantizer field */
 	 data->quant = normalize_quantizer_field(handle->quant,
@@ -246,11 +240,11 @@
 
 /*****************************************************************************
  * Helper functions
  ****************************************************************************/
 
-#define RDIFF(a, b)    ((int)(a+0.5)-(int)(b+0.5))
+#define RDIFF(a, b)	((int)(a+0.5)-(int)(b+0.5))
 
 static int
 normalize_quantizer_field(float *in,
 						  int *out,
 						  int num,

引用[Doom9's forum]VAQ: Making Xvid's Adaptive Quantization Not Suck
%patch -p1 < xvidcore-1.2.1-pthreads.diff
%patch -p1 < f1718874b.txt
本体は「build/generic」にあるので移動してからコンパイルすること

dirac

make installで「cp -dR」を実行しようとして「そんなオプションないよ」と言われたら、「doc/Makefile」内の「cp -dR」を「cp -R」に変更しませう

openjpeg

%make osx
%sudo make osxinstall


ffmpeg本体

mp3lame用パッチ

そのままだとlibmp3lameを利用したmp3への変換時にエラーが出る(lame: output buffer too small)のでファイル(libavcodec/libmp3lame.c)にパッチを当てませう。

ffmpeg-libmp3lame.patch(patch)
 
Index: libavcodec/libmp3lame.c
===================================================================
--- libavcodec/libmp3lame.c     (リビジョン 16716)
+++ libavcodec/libmp3lame.c     (作業コピー)
@@ -34,6 +34,7 @@
     int stereo;
     uint8_t buffer[BUFFER_SIZE];
     int buffer_index;
+    int buffer_flushed;
 } Mp3AudioContext;

 static av_cold int MP3lame_encode_init(AVCodecContext *avctx)
@@ -73,6 +74,8 @@
     avctx->coded_frame= avcodec_alloc_frame();
     avctx->coded_frame->key_frame= 1;

+    s->buffer_flushed = 0;
+
     return 0;

 err_close:
@@ -166,13 +169,15 @@
                 BUFFER_SIZE - s->buffer_index
                 );
         }
-    }else{
+    }else if(data == NULL && s->buffer_flushed == 0){
         lame_result= lame_encode_flush(
                 s->gfp,
                 s->buffer + s->buffer_index,
                 BUFFER_SIZE - s->buffer_index
                 );
-    }
+        s->buffer_flushed = 1;
+    }else
+        lame_result = 0;

     if(lame_result < 0){
         if(lame_result==-1) {
引用[Craving Explorer Wiki]同梱ffmpegのlameエンコードの不具合
 
%patch -p0 < ffmpeg-libmp3lame.patch


openjpeg用ソースコード修正

コンパイル中に「libavcodec/libopenjpeg.c」で「Undefined symbols: "_opj_decode_with_info"」とか言われるエラー発生。libopenjpegヘッダファイルの「/usr/include/openjpeg.h」をみても opj_decode_with_info なんて関数はない。
なので「libavcodec/libopenjpeg.c」をみてみると
image = opj_decode_with_info(dec, stream, NULL);
ここでiamgeがopj_image_t*型、decがopj_dinfo_t*型、streamがopj_cio_t*型だったので、「/usr/include/openjpeg.h」にあった
opj_image_t* OPJ_CALLCONV opj_decode(opj_dinfo_t *dinfo, opj_cio_t *cio);
と置き換えてみる。

「libavcodec/libopenjpeg.c」の103行目付近
// Decode the codestream
//image = opj_decode_with_info(dec, stream, NULL);//そんなのない
image = opj_decode(dec, stream);

いまんとこ問題なし。


コンパイルオプション

赤字の連続はセットでつけないといけないもの、緑字は環境依存なもの(いらない人もいる)
./configure --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib/" --enable-shared --enable-gpl --enable-postproc --enable-avfilter --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libspeex --enable-libdirac --enable-libopenjpeg --enable-libfaac --enable-nonfree --enable-libfaad --disable-decoder=aac --enable-libmp3lame --enable-libnut --enable-libtheora --enable-libvorbis --enable-libgsm --enable-libx264 --enable-pthreads --enable-libxvid --enable-encoder=libogg --enable-decoder=liba52

対応フォーマットと対応コーディック

上のやり方で作ったときの対応フォーマット
File formats:
 D. = Demuxing supported
 .E = Muxing supported
 --
  E 3g2             3GP2 format
  E 3gp             3GP format
 D  4xm             4X Technologies format
 D  IFF             IFF format
 D  ISS             Funcom ISS format
 D  MTV             MTV format
 DE RoQ             raw id RoQ format
 D  aac             raw ADTS AAC
 DE ac3             raw AC-3
  E adts            ADTS AAC
 D  aea             MD STUDIO audio
 DE aiff            Audio IFF
 DE alaw            PCM A-law format
 DE amr             3GPP AMR file format
 D  apc             CRYO APC format
 D  ape             Monkey's Audio
 DE asf             ASF format
  E asf_stream      ASF format
 DE ass             SSA/ASS format
 DE au              SUN AU format
 DE avi             AVI format
  E avm2            Flash 9 (AVM2) format
 D  avs             AVS format
 D  bethsoftvid     Bethesda Softworks VID format
 D  bfi             Brute Force & Ignorance
 D  c93             Interplay C93
 D  caf             Apple Core Audio Format
 D  cavsvideo       raw Chinese AVS video
  E crc             CRC testing format
 DE daud            D-Cinema audio format
 DE dirac           raw Dirac
 DE dnxhd           raw DNxHD (SMPTE VC-3)
 D  dsicin          Delphine Software International CIN format
 DE dts             raw DTS
 DE dv              DV video format
  E dvd             MPEG-2 PS format (DVD VOB)
 D  dxa             DXA
 D  ea              Electronic Arts Multimedia Format
 D  ea_cdata        Electronic Arts cdata
 DE eac3            raw E-AC-3
 DE f32be           PCM 32 bit floating-point big-endian format
 DE f32le           PCM 32 bit floating-point little-endian format
 DE f64be           PCM 64 bit floating-point big-endian format
 DE f64le           PCM 64 bit floating-point little-endian format
 DE ffm             FFM (FFserver live feed) format
 D  film_cpk        Sega FILM/CPK format
 DE flac            raw FLAC
 D  flic            FLI/FLC/FLX animation format
 DE flv             FLV format
  E framecrc        framecrc testing format
  E gif             GIF Animation
 D  gsm             raw GSM
 DE gxf             GXF format
 DE h261            raw H.261
 DE h263            raw H.263
 DE h264            raw H.264 video format
 D  idcin           id Cinematic format
 DE image2          image2 sequence
 DE image2pipe      piped image2 sequence
 D  ingenient       raw Ingenient MJPEG
 D  ipmovie         Interplay MVE format
  E ipod            iPod H.264 MP4 format
 DE libnut          nut format
 D  lmlm4           lmlm4 raw format
 DE m4v             raw MPEG-4 video format
 DE matroska        Matroska file format
 DE mjpeg           raw MJPEG video
 DE mlp             raw MLP
 D  mm              American Laser Games MM format
 DE mmf             Yamaha SMAF
  E mov             MOV format
 D  mov,mp4,m4a,3gp,3g2,mj2 QuickTime/MPEG-4/Motion JPEG 2000 format
  E mp2             MPEG audio layer 2
 DE mp3             MPEG audio layer 3
  E mp4             MP4 format
 D  mpc             Musepack
 D  mpc8            Musepack SV8
 DE mpeg            MPEG-1 System format
  E mpeg1video      raw MPEG-1 video
  E mpeg2video      raw MPEG-2 video
 DE mpegts          MPEG-2 transport stream format
 D  mpegtsraw       MPEG-2 raw transport stream format
 D  mpegvideo       raw MPEG video
  E mpjpeg          MIME multipart JPEG format
 D  msnwctcp        MSN TCP Webcam stream
 DE mulaw           PCM mu-law format
 D  mvi             Motion Pixels MVI format
 DE mxf             Material eXchange Format
  E mxf_d10         Material eXchange Format, D-10 Mapping
 D  nc              NC camera feed format
 D  nsv             Nullsoft Streaming Video
  E null            raw null video format
 DE nut             NUT format
 D  nuv             NuppelVideo format
 DE ogg             Ogg
 D  oma             Sony OpenMG audio
  E psp             PSP MP4 format
 D  psxstr          Sony Playstation STR format
 D  pva             TechnoTrend PVA file and stream format
 D  qcp             QCP format
 D  r3d             REDCODE R3D format
 DE rawvideo        raw video format
  E rcv             VC-1 test bitstream
 D  redir           Redirector format
 D  rl2             RL2 format
 DE rm              RealMedia format
 D  rpl             RPL/ARMovie format
  E rtp             RTP output format
 D  rtsp            RTSP input format
 DE s16be           PCM signed 16 bit big-endian format
 DE s16le           PCM signed 16 bit little-endian format
 DE s24be           PCM signed 24 bit big-endian format
 DE s24le           PCM signed 24 bit little-endian format
 DE s32be           PCM signed 32 bit big-endian format
 DE s32le           PCM signed 32 bit little-endian format
 DE s8              PCM signed 8 bit format
 D  sdp             SDP
 D  shn             raw Shorten
 D  siff            Beam Software SIFF
 D  smk             Smacker video
 D  sol             Sierra SOL format
 DE sox             SoX native format
  E spdif           IEC958 - S/PDIF (IEC-61937)
  E svcd            MPEG-2 PS format (VOB)
 DE swf             Flash format
 D  thp             THP
 D  tiertexseq      Tiertex Limited SEQ format
 D  tmv             8088flex TMV
 DE truehd          raw TrueHD
 D  tta             True Audio
 D  txd             Renderware TeXture Dictionary
 DE u16be           PCM unsigned 16 bit big-endian format
 DE u16le           PCM unsigned 16 bit little-endian format
 DE u24be           PCM unsigned 24 bit big-endian format
 DE u24le           PCM unsigned 24 bit little-endian format
 DE u32be           PCM unsigned 32 bit big-endian format
 DE u32le           PCM unsigned 32 bit little-endian format
 DE u8              PCM unsigned 8 bit format
 D  vc1             raw VC-1
 D  vc1test         VC-1 test bitstream format
  E vcd             MPEG-1 System format (VCD)
 D  vmd             Sierra VMD format
  E vob             MPEG-2 PS format (VOB)
 DE voc             Creative Voice file format
 D  vqf             Nippon Telegraph and Telephone Corporation (NTT) TwinVQ
 D  w64             Sony Wave64 format
 DE wav             WAV format
 D  wc3movie        Wing Commander III movie format
 D  wsaud           Westwood Studios audio format
 D  wsvqa           Westwood Studios VQA format
 D  wv              WavPack
 D  xa              Maxis XA File Format
 DE yuv4mpegpipe    YUV4MPEG pipe format
上のやり方で作ったときの対応コーディック
Codecs:
 D..... = Decoding supported
 .E.... = Encoding supported
 ..V... = Video codec
 ..A... = Audio codec
 ..S... = Subtitle codec
 ...S.. = Supports draw_horiz_band
 ....D. = Supports direct rendering method 1
 .....T = Supports weird frame truncation
 ------
 D V D  4xm             4X Movie
 D V D  8bps            QuickTime 8BPS video
 D A    8svx_exp        8SVX exponential
 D A    8svx_fib        8SVX fibonacci
 D V D  FRWU            Forward Uncompressed
  EA    aac             Advanced Audio Coding
 D V D  aasc            Autodesk RLE
 DEA    ac3             ATSC A/52A (AC-3)
 D A    adpcm_4xm       ADPCM 4X Movie
 DEA    adpcm_adx       SEGA CRI ADX ADPCM
 D A    adpcm_ct        ADPCM Creative Technology
 D A    adpcm_ea        ADPCM Electronic Arts
 D A    adpcm_ea_maxis_xa ADPCM Electronic Arts Maxis CDROM XA
 D A    adpcm_ea_r1     ADPCM Electronic Arts R1
 D A    adpcm_ea_r2     ADPCM Electronic Arts R2
 D A    adpcm_ea_r3     ADPCM Electronic Arts R3
 D A    adpcm_ea_xas    ADPCM Electronic Arts XAS
 D A    adpcm_ima_amv   ADPCM IMA AMV
 D A    adpcm_ima_dk3   ADPCM IMA Duck DK3
 D A    adpcm_ima_dk4   ADPCM IMA Duck DK4
 D A    adpcm_ima_ea_eacs ADPCM IMA Electronic Arts EACS
 D A    adpcm_ima_ea_sead ADPCM IMA Electronic Arts SEAD
 D A    adpcm_ima_iss   ADPCM IMA Funcom ISS
 DEA    adpcm_ima_qt    ADPCM IMA QuickTime
 D A    adpcm_ima_smjpeg ADPCM IMA Loki SDL MJPEG
 DEA    adpcm_ima_wav   ADPCM IMA WAV
 D A    adpcm_ima_ws    ADPCM IMA Westwood
 DEA    adpcm_ms        ADPCM Microsoft
 D A    adpcm_sbpro_2   ADPCM Sound Blaster Pro 2-bit
 D A    adpcm_sbpro_3   ADPCM Sound Blaster Pro 2.6-bit
 D A    adpcm_sbpro_4   ADPCM Sound Blaster Pro 4-bit
 DEA    adpcm_swf       ADPCM Shockwave Flash
 D A    adpcm_thp       ADPCM Nintendo Gamecube THP
 D A    adpcm_xa        ADPCM CDROM XA
 DEA    adpcm_yamaha    ADPCM Yamaha
 DEA    alac            ALAC (Apple Lossless Audio Codec)
 D V D  amv             AMV Video
 D A    ape             Monkey's Audio
 DEV D  asv1            ASUS V1
 DEV D  asv2            ASUS V2
 D A    atrac1          Atrac 1 (Adaptive TRansform Acoustic Coding)
 D A    atrac3          Atrac 3 (Adaptive TRansform Acoustic Coding 3)
 D V D  avs             AVS (Audio Video Standard) video
 D V D  bethsoftvid     Bethesda VID video
 D V D  bfi             Brute Force & Ignorance
 DEV D  bmp             BMP image
 D V D  c93             Interplay C93
 D V D  camstudio       CamStudio
 D V D  camtasia        TechSmith Screen Capture Codec
 D V D  cavs            Chinese AVS video (AVS1-P2, JiZhun profile)
 D V D  cinepak         Cinepak
 D V D  cljr            Cirrus Logic AccuPak
 D A    cook            COOK
 D V D  cyuv            Creative YUV (CYUV)
 D A    dca             DCA (DTS Coherent Acoustics)
 DEV D  dnxhd           VC3/DNxHD
 D V    dpx             DPX image
 D A    dsicinaudio     Delphine Software International CIN audio
 D V D  dsicinvideo     Delphine Software International CIN video
 DES    dvbsub          DVB subtitles
 DES    dvdsub          DVD subtitles
 DEV D  dvvideo         DV (Digital Video)
 D V D  dxa             Feeble Files/ScummVM DXA
 D A    eac3            ATSC A/52B (AC-3, E-AC-3)
 D V D  eacmv           Electronic Arts CMV video
 D V D  eamad           Electronic Arts Madcow Video
 D V D  eatgq           Electronic Arts TGQ video
 D V    eatgv           Electronic Arts TGV video
 D V D  eatqi           Electronic Arts TQI Video
 D V D  escape124       Escape 124
 DEV D  ffv1            FFmpeg video codec #1
 DEVSD  ffvhuff         Huffyuv FFmpeg variant
 DEA    flac            FLAC (Free Lossless Audio Codec)
 DEV D  flashsv         Flash Screen Video
 D V D  flic            Autodesk Animator Flic video
 DEVSD  flv             Flash Video (FLV)
 D V D  fraps           Fraps
 DEA    g726            G.726 ADPCM
 DEV D  gif             GIF (Graphics Interchange Format)
 DEV D  h261            H.261
 DEVSDT h263            H.263 / H.263-1996
 D VSD  h263i           Intel H.263
  EV    h263p           H.263+ / H.263-1998 / H.263 version 2
 D V D  h264            H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
 DEVSD  huffyuv         Huffyuv / HuffYUV
 D V D  idcinvideo      id Quake II CIN video
 D A    imc             IMC (Intel Music Coder)
 D V D  indeo2          Intel Indeo 2
 D V D  indeo3          Intel Indeo 3
 D A    interplay_dpcm  DPCM Interplay
 D V D  interplayvideo  Interplay MVE video
 DEV D  jpegls          JPEG-LS
 D V D  kmvc            Karl Morton's video codec
 DEV    libdirac        libdirac Dirac 2.2
  EA    libfaac         libfaac AAC (Advanced Audio Codec)
 D A    libfaad         libfaad AAC (Advanced Audio Codec)
 DEA    libgsm          libgsm GSM
 DEA    libgsm_ms       libgsm GSM Microsoft variant
  EA    libmp3lame      libmp3lame MP3 (MPEG audio layer 3)
 DEA    libopencore_amrnb OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band
 D A    libopencore_amrwb OpenCORE Adaptive Multi-Rate (AMR) Wide-Band
 D V D  libopenjpeg     OpenJPEG based JPEG 2000 decoder
 D A    libspeex        libspeex Speex
  EV    libtheora       libtheora Theora
  EA    libvorbis       libvorbis Vorbis
  EV    libx264         libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
  EV    libxvid         libxvidcore MPEG-4 part 2
  EV    ljpeg           Lossless JPEG
 D V D  loco            LOCO
 D A    mace3           MACE (Macintosh Audio Compression/Expansion) 3:1
 D A    mace6           MACE (Macintosh Audio Compression/Expansion) 6:1
 D V D  mdec            Sony PlayStation MDEC (Motion DECoder)
 D V D  mimic           Mimic
 DEV D  mjpeg           MJPEG (Motion JPEG)
 D V D  mjpegb          Apple MJPEG-B
 D A    mlp             MLP (Meridian Lossless Packing)
 D V D  mmvideo         American Laser Games MM Video
 D V D  motionpixels    Motion Pixels video
 D A    mp1             MP1 (MPEG audio layer 1)
 DEA    mp2             MP2 (MPEG audio layer 2)
 D A    mp3             MP3 (MPEG audio layer 3)
 D A    mp3adu          ADU (Application Data Unit) MP3 (MPEG audio layer 3)
 D A    mp3on4          MP3onMP4
 D A    mpc7            Musepack SV7
 D A    mpc8            Musepack SV8
 DEVSDT mpeg1video      MPEG-1 video
 DEVSDT mpeg2video      MPEG-2 video
 DEVSDT mpeg4           MPEG-4 part 2
 D VSDT mpegvideo       MPEG-1 video
 D VSDT mpegvideo_xvmc  MPEG-1/2 video XvMC (X-Video Motion Compensation)
 DEVSD  msmpeg4         MPEG-4 part 2 Microsoft variant version 3
 DEVSD  msmpeg4v1       MPEG-4 part 2 Microsoft variant version 1
 DEVSD  msmpeg4v2       MPEG-4 part 2 Microsoft variant version 2
 D V D  msrle           Microsoft RLE
 D V D  msvideo1        Microsoft Video 1
 D V D  mszh            LCL (LossLess Codec Library) MSZH
 DEA    nellymoser      Nellymoser Asao
 D V D  nuv             NuppelVideo/RTJPEG
 DEV D  pam             PAM (Portable AnyMap) image
 DEV D  pbm             PBM (Portable BitMap) image
 DEA    pcm_alaw        PCM A-law
 D A    pcm_bluray      PCM signed 16|20|24-bit big-endian for Blu-ray media
 D A    pcm_dvd         PCM signed 20|24-bit big-endian
 DEA    pcm_f32be       PCM 32-bit floating point big-endian
 DEA    pcm_f32le       PCM 32-bit floating point little-endian
 DEA    pcm_f64be       PCM 64-bit floating point big-endian
 DEA    pcm_f64le       PCM 64-bit floating point little-endian
 DEA    pcm_mulaw       PCM mu-law
 DEA    pcm_s16be       PCM signed 16-bit big-endian
 DEA    pcm_s16le       PCM signed 16-bit little-endian
 D A    pcm_s16le_planar PCM 16-bit little-endian planar
 DEA    pcm_s24be       PCM signed 24-bit big-endian
 DEA    pcm_s24daud     PCM D-Cinema audio signed 24-bit
 DEA    pcm_s24le       PCM signed 24-bit little-endian
 DEA    pcm_s32be       PCM signed 32-bit big-endian
 DEA    pcm_s32le       PCM signed 32-bit little-endian
 DEA    pcm_s8          PCM signed 8-bit
 DEA    pcm_u16be       PCM unsigned 16-bit big-endian
 DEA    pcm_u16le       PCM unsigned 16-bit little-endian
 DEA    pcm_u24be       PCM unsigned 24-bit big-endian
 DEA    pcm_u24le       PCM unsigned 24-bit little-endian
 DEA    pcm_u32be       PCM unsigned 32-bit big-endian
 DEA    pcm_u32le       PCM unsigned 32-bit little-endian
 DEA    pcm_u8          PCM unsigned 8-bit
 DEA    pcm_zork        PCM Zork
 DEV D  pcx             PC Paintbrush PCX image
 DEV D  pgm             PGM (Portable GrayMap) image
 DEV D  pgmyuv          PGMYUV (Portable GrayMap YUV) image
 D S    pgssub          HDMV Presentation Graphic Stream subtitles
 DEV D  png             PNG image
 DEV D  ppm             PPM (Portable PixelMap) image
 D V D  ptx             V.Flash PTX image
 D A    qcelp           QCELP / PureVoice
 D A    qdm2            QDesign Music Codec 2
 D V D  qdraw           Apple QuickDraw
 D V D  qpeg            Q-team QPEG
 DEV D  qtrle           QuickTime Animation (RLE) video
 DEV    rawvideo        raw video
 D A    real_144        RealAudio 1.0 (14.4K)
 D A    real_288        RealAudio 2.0 (28.8K)
 D V D  rl2             RL2 video
 DEA    roq_dpcm        id RoQ DPCM
 DEV D  roqvideo        id RoQ video
 D V D  rpza            QuickTime video (RPZA)
 DEV D  rv10            RealVideo 1.0
 DEV D  rv20            RealVideo 2.0
 D V D  rv30            RealVideo 3.0
 D V D  rv40            RealVideo 4.0
 DEV    sgi             SGI image
 D A    shorten         Shorten
 D A    smackaud        Smacker audio
 D V D  smackvid        Smacker video
 D V D  smc             QuickTime Graphics (SMC)
 DEV D  snow            Snow
 D A    sol_dpcm        DPCM Sol
 DEA    sonic           Sonic
  EA    sonicls         Sonic lossless
 D V D  sp5x            Sunplus JPEG (SP5X)
 D V D  sunrast         Sun Rasterfile image
 DEV D  svq1            Sorenson Vector Quantizer 1
 D VSD  svq3            Sorenson Vector Quantizer 3
 DEV D  targa           Truevision Targa image
 D V D  theora          Theora
 D V D  thp             Nintendo Gamecube THP video
 D V D  tiertexseqvideo Tiertex Limited SEQ video
 DEV D  tiff            TIFF image
 D V D  tmv             8088flex TMV
 D A    truehd          TrueHD
 D V D  truemotion1     Duck TrueMotion 1.0
 D V D  truemotion2     Duck TrueMotion 2.0
 D A    truespeech      DSP Group TrueSpeech
 D A    tta             True Audio (TTA)
 D A    twinvq          VQF TwinVQ
 D V D  txd             Renderware TXD (TeXture Dictionary) image
 D V D  ultimotion      IBM UltiMotion
 DEV D  v210            Uncompressed 4:2:2 10-bit
 D V D  v210x           
 D V    vb              Beam Software VB
 D V D  vc1             SMPTE VC-1
 D V D  vcr1            ATI VCR1
 D A    vmdaudio        Sierra VMD audio
 D V D  vmdvideo        Sierra VMD video
 D V D  vmnc            VMware Screen Codec / VMware Video
 DEA    vorbis          Vorbis
 D V D  vp3             On2 VP3
 D V D  vp5             On2 VP5
 D V D  vp6             On2 VP6
 D V D  vp6a            On2 VP6 (Flash version, with alpha channel)
 D V D  vp6f            On2 VP6 (Flash version)
 D V D  vqavideo        Westwood Studios VQA (Vector Quantized Animation) video
 D A    wavpack         WavPack
 D A    wmapro          Windows Media Audio 9 Professional
 DEA    wmav1           Windows Media Audio 1
 DEA    wmav2           Windows Media Audio 2
 DEVSD  wmv1            Windows Media Video 7
 DEVSD  wmv2            Windows Media Video 8
 D V D  wmv3            Windows Media Video 9
 D V D  wnv1            Winnov WNV1
 D A    ws_snd1         Westwood Audio (SND1)
 D A    xan_dpcm        DPCM Xan
 D V D  xan_wc3         Wing Commander III / Xan
 D V D  xl              Miro VideoXL
 DES    xsub            DivX subtitles (XSUB)
 DEV D  zlib            LCL (LossLess Codec Library) ZLIB
 DEV D  zmbv            Zip Motion Blocks Video

Bitstream filters:
 text2movsub remove_extra noise mov2textsub mp3decomp mp3comp mjpegadump imxdump h264_mp4toannexb dump_extra aac_adtstoasc
Supported file protocols:
 file: gopher: http: pipe: rtmp: rtp: tcp: udp:
Frame size, frame rate abbreviations:
 ntsc pal qntsc qpal sntsc spal film ntsc-film sqcif qcif cif 4cif

Note, the names of encoders and decoders do not always match, so there are
several cases where the above table shows encoder only or decoder only entries
even though both encoding and decoding are supported. For example, the h263
decoder corresponds to the h263 and h263p encoders, for file formats it is even
worse.

参考文献

[よくわからない現代魔法][UNIX/Linux] ffmpegをコンパイル [rev 19235]
[お気に入りの動画を携帯で見よう]Xvidのコンパイル&インストール (1.2.1以降)
[Doom9's forum]VAQ: Making Xvid's Adaptive Quantization Not Suck
[Craving Explorer Wiki]同梱ffmpegのlameエンコードの不具合

拍手[1回]

PR
忍者ブログ [PR]