2012年03月15日

FFmpeg rev.38811 ダウンロード

FFmpeg最新版(2012/03/15現在)、rev.38811(a04a97b)のWindows用バイナリを置いておきます。

内蔵AACエンコーダは、まだ実験段階のため、以前使用していたlibfaacや、neroAacEncに比べると音質は良くないです。
まともに動作するようになるまでは、neroAacEncを使用した音声AAC動画の作成方法を、こちらの記事に書きましたので、参考にしてください。

また、x264について、一番多く質問が寄せられるエラーの説明を記事にしましたので、思い当たる方は、ぜひご一読ください。
x264のエンコードでエラー(Error while opening encoder for output stream #0.0)

ffmpeg_bin-38811.zip
ffmpeg_bin_pentium4-38811.zip (Pentium4最適化版)
ffmpeg_bin_core2-38811.zip (Core2最適化版)
ffmpeg_bin_athlon64-38811.zip (Athlon64最適化版)
ffmpeg_bin_phenom-38811.zip (Phenom最適化版)

以下のライブラリをアップデートしました。
nasm-2.10
libcdio-0.84git-a18d385
rtmpdump-2.4-20120309 PolarSSL版
aoTuV Beta6.03 (libvorbis-1.3.3パッチ)
libvpx-v1.0.0-112-geb0c5a6
x264 rev.2184
freetype-2.4.9
fontconfig-2.9.0


オリジナルの方は、主にx264関連の「-flags2」が独立したオプションで指定するようになり、「-partitions」オプションは書式が変わりました。

・従来の設定例
-flags2 +mixed_refs+mbtree -partitions parti4x4+partp8x8+partp4x4

・変更後の設定例
-mixed-refs 1 -mbtree 1 -partitions pi4x4,pp8x8,pp4x4

その他、以下のように変わりました。
「-flags2 +dct8x8」→「-8x8dct 1」
「-flags2 +fastpskip」→「-fast-pskip 1」

すべて確認したわけではありませんので、他にも変わっているかもしれません。

とりあえず今回は、従来のオプションも使えるようにしています。


バイナリはどれを使っても大丈夫だと思いますが、SSE2に対応していないCPU(Duron、Sempronの一部、Pentium3など)をお使いの方は、最適化無し版を使ってみてください。

最適化無し版でもエラーが出る場合は、サポート外とします。

zipファイルを解凍すると、ffmpeg.exeが出てきますので、携帯動画変換君のcoresフォルダに置くなり、単体で使うなりしてください。

携帯動画変換君のffmpeg.exeとは、オプションの互換性がありませんので、上書きする際はご注意ください。

FFmpegのコンパイルは、以下の記事を参考にしてください。
FFmpegのコンパイル (2011/07/31) w32threads
コンパイル環境:MinGW gcc-4.6.3
binutils-2.22
mingwrt-3.20
w32api-3.17

各ライブラリのバージョンは、以下の通りです。
nasm-2.10
yasm-1.2.0
zlib-1.2.6
bzip2-1.0.6
libcdio-0.84git-a18d385
gsm-1.0.13
libmodplug-0.8.8.4
lame-3.99.5
opencore-amr-0.1.3
vo-aacenc-0.1.2
vo-amrwbenc-0.1.2
polarssl-1.1.1
rtmpdump-2.4-20120309 PolarSSL版
libogg-1.3.0
aoTuV Beta6.03 (libvorbis-1.3.3パッチ)
libtheora-1.1.1
speex-1.2rc1
libvpx-v1.0.0-112-geb0c5a6
x264 rev.2184 (make fprofiled)
xvidcore-1.3.2
libiconv-1.13.1
freetype-2.4.9
expat-2.0.1
fontconfig-2.9.0
fribidi-0.19.2
libass-0.10.0

最適化オプションは、以下のようにしています。

最適化無し版
--extra-cflags="-march=i686 -mtune=generic"

Pentium4最適化版
--extra-cflags="-mtune=pentium4 -mfpmath=sse -msse" --cpu=pentium4

Core2最適化版
--extra-cflags="-mtune=core2 -mfpmath=sse -msse" --cpu=i686

Athlon64最適化版
--extra-cflags="-mtune=athlon64 -mfpmath=sse -msse" --cpu=i686

Phenom最適化版
--extra-cflags="-mtune=amdfam10 -mfpmath=sse -msse" --cpu=i686

configureオプションは以下の通りです。
$ ./configure --enable-gpl --enable-version3 --enable-avisynth --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libcdio --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-librtmp --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libx264 --enable-libxvid --disable-ffplay --disable-ffprobe --disable-ffserver --enable-w32threads --extra-ldflags=-static --extra-cflags="-mtune=athlon64 -mfpmath=sse -msse" --cpu=i686 --optflags="-O2 -finline-functions"

※--extra-cflagsは、最適化の種類により異なります。
posted by あべちん at 21:48 | Comment(43) | TrackBack(0) | FFmpegダウンロード
この記事へのコメント
いつもお世話になっております。
WMP11(win7、ffdshow等無)とウォークマンで再生できません。(変換自体は出来てGOMPlayerでは再生可)
neroaac経由でも結果は同じでした。
遡っていった所、rev.31420までは正常です。何か付け足すオプション等ありましたらご提示ください。
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vcodec libx264 -flags bitexact -s 320x240 -aspect 16:9 -r 12.5 -crf 30 -g 150 -qcomp 0.7 -qmin 10 -qmax 51 -qdiff 4 -subq 6 -

me_range 16 -i_qfactor 0.714286 -acodec aac -ac 2 -ar 44100 -ab 128k -strict experimental -threads 0 -f mp4 "<%OutputFile%>.mp4""
Posted by 名無し at 2012年03月26日 18:24
名無しさん、こんにちは。管理人です。

rev.31420とは、またずいぶん前ですね。
もはや何が変わっているか分かりませんので、bitexactの前に「+」をつけて、
-flags +bitexact
としてみてください。

それでもダメなら、libx264のオプションに
-coder vlc
を追加してみてください。

あと、
-s 320x240 なら -aspect 4:3
-aspect 16:9 なら -s 320x180
ですが、間違いではないのでしょうか。
Posted by あべちん at 2012年03月26日 21:22
成功しました!
>間違いではないのでしょうか。
320x180ですね。orz

素早く且つ的確な返事ありがとうございます。
これからもよろしくお願いします。
Posted by 名無し at 2012年03月27日 00:34
名無さん、こんにちは。管理人です。

解決して良かったです。
一発で解決することもありますが、そうでない場合も多いので、あんまり期待しないでくださいね(笑

今後ともよろしくお願いします。
Posted by あべちん at 2012年03月30日 19:22
こんにちは。最近内蔵AACエンコーダに興味深い変更がなされたようで、テストしたいのでコンパイルして頂けないですか?
Posted by kamedo2 at 2012年04月08日 18:23
kamedo2さん、こんにちは。管理人です。

試しに、2012/04/09現在のrev.39645(c311afc)をコンパイルして、rev.38811と、内蔵AACのエンコード結果を比較してみたのですが、同じになりました。

バイナリで比較して、libavcodecのリビジョンの違いだけでした。

どのような変更か確認してみたいのですが、情報元などご存じでしたら、教えていただけませんでしょうか。
Posted by あべちん at 2012年04月09日 14:59
http://git.videolan.org/?p=ffmpeg.git
の検索窓にaacencって入れて、変更履歴を確認できますよ。単なるお化粧(cosmetics)や、めずらしい環境・状況でも安全にエンコードできるような改良や、FFmpegの内部的な変更に伴って整合性をとったりなど出てきます。

ともかく新しい版でテストしてみたいのですが、アップロードお願いできますか?
Posted by kamedo2 at 2012年04月09日 18:19
はじめまして。
携帯動画変換君で動画を変換したいと思い、
自分でコマンドを書いてみたのですが、
上手く行きません。
なにかおかしな所があれば、
修正お願いします。
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vcodec libx264 -s 640x360 -crf 20 -profile Baseline -acodec copy -f mp4 "<%OutputFile%>.MP4""
Posted by at 2012年04月09日 18:56
> kamedo2さん

そうですね。
そのうち時間がある時にアップします。

内蔵AACを試すのが目的でしたら、X5-452さんの方がマメに更新されていますよ。

X5-452's Blog
http://sadamaru.atgj.net/

こちらにもバイナリがありますので、お試しください。
FFmpeg at Zeranoe.com
http://ffmpeg.zeranoe.com/builds/
Posted by あべちん at 2012年04月09日 19:15
はじめまして
最近ffmpegのコンパイルをやり始めました。
とりあえず外部ライブラリはx264だけです。

Debian linuxでは割とすんなりいきましたが
MinGWでは何度やってもconfigureで
libx264 not found
と出て数日間悩みました。

色々なサイトを参考にして
--extra-cflags=-I/home/usr/include --extra-ldflags=-L/home/usr/lib
というようにライブラリの位置を明示して
やるとようやくconfigureが通るように
なりました。

類似のエラーは検索すると結構報告されてる
みたいなのですが管理人さんのところでは
どうでしょうか。
Posted by nuts at 2012年04月18日 23:33
DirectShow読み込みについて

こんにちはロべルトです。あべちんさんとsadamaruさんのおかげで無事にffmpegをビルドできるようになりましたが、
もう一つ問題がありました。あべちんさんとsadamaruさんが配布されているffmpegはDirectShowが読み込めなくて、
zeranoeさんが配布されているffmpegはDirectShowが読み込めるのです。
調べてみるとDirectShowはmingw-w64だと使えるとか、latest mingw32 on Windows7ならおkとか、
dshow.cのエラーがなくなればDirectShowが使えるとかよくわかりませんでした。
DirectShow読み込みができるようにビルドする方法について何かわかりますでしょうか。

ffmpeg Documentation
http://ffmpeg.org/ffmpeg.html#dshow
DirectShow support is enabled when FFmpeg is built with the mingw-w64 project.

Zeranoe FFmpeg Forum - View topic - ffmpeg on windows mingw can't find IBaseFilter
http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=5&t=183
With latest mingw32 on Windows7, ffmpeg with dshow compiles fine. Thanks for your help and for updates to the code.

Zeranoe FFmpeg Forum - View topic - DirectShow Capture support
http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=3&t=27&start=10
When you configure FFMPEG dshow should be enabled by default.However the config.log file shows lots of error regarding "dshow.c" file. Once those errors are solved i think it should be okay.

GCC for both x64 & x86 Windows! - MinGW-w64
http://mingw-w64.sourceforge.net/

Cross Win32 and Win64 compiler ? mingw-w64
http://sourceforge.net/apps/trac/mingw-w64/wiki/Cross%20Win32%20and%20Win64%20compiler
Posted by ロベルト at 2012年04月21日 12:25
ロベルトさん

mingw32でビルドするとconfigureの時に"Enabled indevs:dshow"と出ないので非対応なんじゃないかな。
mingw-w64及びCross環境のx86_64でビルドすると、"--disable-indev=dshow"としない限り"Enabled indevs:dshow"となり有効になってるとおもいます。

Libavはどちらの環境でもdshowは非対応です。commitされてないから。
Posted by X5-452 at 2012年04月21日 15:24
名無しさん、はじめまして。管理人です。

もうだいぶ前なので解決済みかもしれませんが…。

> 携帯動画変換君で動画を変換したいと思い、
> 自分でコマンドを書いてみたのですが、
> 上手く行きません。

とのことですが、まずは、すでに上手く行っている実例があるはずですので、名無しさんの目的に近いものを見つけたら、なにも変えずに変換してみてください。

それで変換できたら、オプションを少しずつ修正すれば、たいていの場合は上手くと思います。
Posted by あべちん at 2012年04月22日 02:23
nutsさん、はじめまして。管理人です。

システムを何人かで共有していると、勝手にいろんなものをインストールできない場合もあるかもしれませんが、MinGWは自分のPCでしか使いませんので、ffmpegに必要なライブラリは、全部 /mingw 以下にインストールしています。

デフォルトのサーチパス以外のディレクトリにインストールしても、サーチパスを追加すれば、毎回指定しなくても良いと思います。

export C_INCLUDE_PATH="$C_INCLUDE_PATH:/home/usr/include"
export LIBRARY_PATH="$LIBRARY_PATH:/home/usr/lib"


私の場合は、どのライブラリのconfigureでも
--prefix=/mingw
を付けると決めて、/mingw 以下に全部インストールしています。

その方が、余計なことを考えなくて済むので、楽なような気がします。

参考になれば幸いです。
Posted by あべちん at 2012年04月22日 03:11
ロベルトさん、X5-452さん、こんにちは。管理人です。

DirectShowが使えるとは、初耳でした。

面白そうなので試してみたところ、オリジナルのmingwrtとw32apiの代わりに、mingw-w64を使って、DirectShowでキャプチャできるようになりました。

環境は、WindowsXP SP3と、mingw32です。


http://mingw-w64.sourceforge.net/
ここの、左メニュー
WIN32 downloads から、
http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/

Personal Builds

sezero_4.5_20111101
と、たどって、
sezero_20111101-w32-update-rev.4917.zip
をダウンロードします。

解凍したら、i686-w64-mingw32ディレクトリ以下の、
include
lib
libsrc
を、ディレクトリごと、C:\MinGW\ に上書きします。

あとは、今まで通りffmpegのconfigureを実行すれば、dshowが有効になります。

configureで、勝手にdxva2がenableになってしまうので、不要な場合は、
--disable-dxva2
を追加した方が良いかもしれません。


とりあえず、手元にあったUSBマイクロスコープと、適当なマイクをPCにつないで、

ffmpeg -y -f dshow -i video="PAC7302 VGA SoC PC-Camera":audio="NVIDIA(R) nForce(TM) Audio" -vcodec libx264 -s 320x240 -vb 300k -r 29.97 -vprofile baseline -preset ultrafast -tune zerolatency -acodec aac -strict experimental -ab 128k -ac 2 -ar 44100 -threads 0 -f flv test.flv

という設定で、映像と音をflvでキャプチャできました。
設定値は適当です。


-i video="PAC7302 VGA SoC PC-Camera":audio="NVIDIA(R) nForce(TM) Audio"

この設定は、WindowXPの場合、コントーロールパネルから、
videoは「スキャナとカメラ」
audioは「サウンドとオーディオデバイス」→「オーディオ」タブの「録音」
で、確認できます。


次にffmpegをアップする時は、dshowを有効にしようか、どうしようか迷います…。
Posted by あべちん at 2012年04月22日 03:55
DirectShowについて
あべちんさん、お疲れ様です。

sezero_20111101-w32...こんなアイテムがあるんですねぇ。
CrossCompiler環境では、H:\msys\mingw\i686-pc-mingw32\に上書きすることでdshowが有効なffmpeg(win32)をビルドすることができました。
いつも有難う御座います。

Libav/FFmpeg
configureの"--disable-dxva2" が無くなり "--enable-dxva2"になったので無オプションでdxva2がdisableになると思います。
小さな事ですが...w
Posted by X5-452 at 2012年04月22日 15:16
追記
H:\msys\mingw\i686-pc-mingw32\includeの"win****.h"等がsezero_20111101のものに書き換わったの為、libcdioのビルドでerrorなりましたw
バックアップしてから試したので問題ないのですがw

有名なCDリッパーは多数存在するのでlibcdio無しdshowありにしようかと思いましたが、今後、他のlibraryビルドでerrorになると怖いのでwin32版ffmpegのdshowは諦めることにしました。
Posted by X5-452 at 2012年04月22日 22:57
あべちんさん、X5-452さん、はじめまして。
私もロベルトさんと同様に、FFmpegの自前ビルドに挑戦していて、dshowを有効にするには、mingw-w64環境が必要だというところまでは調べていた状態でした。
ただ、64bit版としてビルドした場合、いくつかの使いたい映像デバイスや音声デバイスが使えないため、32bit版でビルドする必要がありました。昨日まではここのサイトにも情報がなかったので、ここから先は自分で試行錯誤するしかないかなと思い、方針を考えていた矢先に、ロベルトさんの質問に素早く回答が出ていたので、試しにそれでやってみました。
上記の方法で、dshow利用での生放送に成功しましたので、感謝の意を込めて報告しておきます。
Posted by 少佐 at 2012年04月22日 23:17
X5-452さんの追記の件について、
libcdioについては、今回のdshow対応の前に、手順の途中でうまくいかない部分があり、私は特になくても困らない感じだったので、FFmpegのビルドオプションには含めていませんでした。そのおかげでか、上のエラーには遭遇しませんでした。
Posted by 少佐 at 2012年04月22日 23:27
sezero_4.5_20111101を入れてビルドできないものはlibcdioのみでした。
以下は正常にビルドできたlibraryです。

x264, lame, libogg, libvorbis-aotuv
libtheora, speex, celt, libjpeg-turbo, jpeg
libpng, tiff, lcms2, openjpeg_v1_4_sources_r697
opencore-amr, libaacplus, faac, vo-amrwbenc
polarssl, rtmpdump, orc, schroedinger, xvidcore
gsm, libiconv, freetype, libvpx,libmodplug, dirac
openssl, xavs, expat, fontconfig, fribidi, libass

何かのお役に立てれば...。


libcdioの必要性が自分的に低いのでdshow対応の方へ移行します。
さらばcdio...
Posted by X5-452 at 2012年04月23日 17:37
少佐さん、X5-452さん、こんにちは。管理人です。

動作報告、ありがとうございました。
dshowを有効にすると、いろいろと使い道はありそうですね。

"--disable-dxva2"はいつの間にか無くなっていたんですね。
気が付きませんでした。


問題はlibcdioだけ、ということで、試行錯誤してみたところ、以下の方法でコンパイルできました。

sezero_20111101-w32-update-rev.4917.zip
を解凍すると、
ddk_headers.zip
というファイルがあります。

ddk_headers.zip
を解凍すると、「ddk_test」というディレクトリがあります。
その下に「include」ディレクトリがありますので、「include」ディレクトリごと「C:\MinGW\」に上書きコピーします。

libcdioは、
libcdio/lib/driver/MSWindows/win32_ioctl.c
の34行目あたり、ヘッダファイルを選択している所で失敗しているようなので、autogen.shを実行したあと、

make CC="gcc -D__MINGW64__"

と、「__MINGW64__」を付けたらコンパイルできました。

この方法が正しいのかどうか分かりませんが、参考になれば幸いです。
Posted by あべちん at 2012年04月23日 19:01
またまた有難う御座います。
上記の方法で無事ビルドできました。

sezero_20111101を上書きした環境でのopensslについて...
openssl-1.0.1-mingw.diffの
openssl-1.0.1/engines/e_capi.cでerrorがでますので、openssl-1.0.1/Configureだけで良いみたいです。
※ openssl-1.0.1a(現在最新)でビルドテストしました。
Posted by X5-452 at 2012年04月23日 22:21
X5-452さん、こんにちは。管理人です。

opensslのコンパイルでエラーが出てると思ったら、パッチのせいだったんですね。
ご指摘ありがとうございました。

Configureのパッチは、-march=i486 を -march=i686 に変えているだけですので、無くても大差ないと思います。
Posted by あべちん at 2012年04月25日 14:14
あべちんさん、X5-452さん、こんにちわ。
FFmpegとx264のビルドに関する質問です。
zeranoeのビルドと、X5-452さんのビルドでは、-vprofile high と、-x264opts でhighプロファイルに関係するパラメータを指定すれば、highプロファイルが適用されるのですが、自前のビルドでは同じ指定を行っても、Mainプロファイルになってしまっています。
コンパイル時のオプションとかで何か必要なものがあるのでしょうか?この差異の原因が不明な状態です。
手順は基本的にあべちんさんのを参考にしています。
ソースをL-SMASHのものに変えてみたりしましたが、
うまくいかず、少しお知恵を拝借したいところです。
Posted by 少佐 at 2012年04月28日 09:14
はじまめして、こんにちは
あべちんさんのffmpegにはいつもお世話になっています。

さっそくですが質問させて下さい。

FFmpeg rev.38811(というより最新のverのffmpeg)のlibmp3lameを使用して音声変換をかけた際に、使用したエンコーダーの名称がLavf〜〜というものになるのですが、これは何故なのでしょうか?

同じ設定でも、昔の20000代くらいのffmpegではlameのエンコーダーがここに入っていたはずだと思うんですが……実行時にはきちんとlibmp3lameが使用されているようですし、ちょっと調べてみても訳がわからなくて困っています

ffmpeg.exe -y -i 目的のファイル -vn -acodec libmp3lame -ac 2 -ab 320k -f mp3 変換後のファイル.mp3

というような設定で変換をかけているのですが、どこかに問題があればご指摘下さい

以上、宜しくお願い致します
Posted by ねこみー at 2012年04月28日 11:47
上の私の質問の件、なんとか自己解決しました。
今日公開されたX5-452さんの、Easy-Build-Libpack-for-ffmpeg-2012-04-28の中に、libx264.aが含まれていたので、試しにそれに置き換えてFFmpegをビルドしてみてもhighオプションが反映しなかったので、x264のライブラリの問題ではなさそうと判断しました。
そこで、秘儀箇所と思われるFFmpegのビルド手順の見直しを行いました。
ffmpeg-20120425.diffのパッチは当てないとエラーがでるので適用し、「-flags2」用のffmpeg-global_opts-20120422.diffのパッチは適用せず、改行コードのパッチも適用せずの状態でビルドしたところ、highオプションが反映されるものが出来ました。
(FFmpegのソースも念のため、4/26の最新版に変更)
以上、報告しておきます。
Posted by 少佐 at 2012年04月28日 17:39
ねこみーさん、こんにちは。管理人です。
ご訪問ありがとうございます。

たしかに、いつからか、表示されるエンコーダーがLavfのバージョンになってますね。

ffmpegの仕様は、知らないうちに変わっていることが時々ありますので、設定の問題ではないと思います。

エンコード後のファイルに不具合がなければ、あまり気になさらなくて良いのではないでしょうか。
Posted by あべちん at 2012年04月29日 18:02
少佐さん、こんにちは。管理人です。
調べていただいて、ありがとうございました。

「-flags2」の設定が変わってしまった時に、「-x264opts」までは確認していませんでした。

「-flags2」用のパッチを適用したffmpegでも、
-8x8dct 1
または、
-flags2 +dct8x8
という設定を追加すると、-vprofileを設定しなくてもHigh Profileになります。

「-flags2」用のパッチを適用すると、
-x264opts 8x8dct=1
の他、「-flags2」で設定できるものが効かなくなるようです。

それ以外にも、
-x264opts weightp=2
-x264opts bframes=3
など、基本のパッチで初期値を変更しているオプションは、「-x264opts」が効かないようです。

「-x264opts」が効かないものでも、独立したオプションを使えば良いのですが、なんとなく気持ち悪いので、「-flags2」と「-x264opts」と独立したオプションのどれでも設定できるようにならないか、調査中です。
Posted by あべちん at 2012年04月29日 18:31
あべちんさん、返信ありがとうございます

試しにlame-3.99.5を本家からDLして変換をかけてみても、今件のような妙な結果にはならないので頭を悩ませていたんですが、仕様ということはやはりオプション等で回避することは難しいということですよね……

エンコーダー名が違うこと以外にも、-abによりCBRとしてビットレートを指定しているのに、タグ情報ではVBRになっていたりと挙動が何かおかしいので、ちょっと自分は改善されるまでは使用を控えるようにしたいと思います。また何かわからないことがあった時には相談させて下さい

どうもありがとうございましたm(__)m
Posted by ねこみー at 2012年04月29日 22:22
ありがとうございました。
--prefix=/mingwとしてライブラリを
コンパイルするとすんなりffmpegのビルドまで
いきました。

それまではconfigureのデフォルトのインストールパスである/usr/localに入れていたの
ですがその場合は--prefix=/usr/localと指定しただけではダメで--extra-ldflagsなどでさらにパスを指定しないとエラーになってました。
ところでwindowsのエクスプローラで見ていて
気づきましたが/usrというのは実在のフォルダではないのですね。
Posted by nuts at 2012年04月29日 23:43
あべちんさん、いつもお世話になります。
-x264opts で、weightp=2, bframes=3 を指定しても、
実際には、weightp=0, bframes=0 になってる状態は、
こちらでも確認していました。
上手く指定&反映できるようになると助かりますね。
とりあえず、現状では、「-fpre」 のオプションで、
外部のプリセットファイルのパスを指定してやれば、
weightp=2, bfames=3 など指定と反映は出来るので、
そちらで回避して使う予定でいます。
「-fpre」オプションだとパラメータの指定文字列が、
「-x264opts」オプションと異なるものはありますが、
そこさえ注意すれば大丈夫かと思います。
Posted by 少佐 at 2012年05月01日 00:32
ねこみーさん、こんにちは。管理人です。

ffmpegのソースを見てみたのですが、どうやら、
「-ab」はビットレート指定のVBR
「-aq」は、0〜9のクォリティ指定のVBR
にしかならないようです。

なんとも期待はずれでしたが、タグ情報は間違っていないようです。

今のところ、ffmpeg経由のlameで、CBRやABRにするオプションは無さそうなので、仕方ないですね。
Posted by あべちん at 2012年05月02日 19:57
nutsさん、こんにちは。管理人です。

ご報告ありがとうございました。
ビルド成功してよかったです。

理由はわかりませんが、MinGWは、/usr は実体が無くて、/usr/local と /local が同じになってますね。
Posted by あべちん at 2012年05月02日 20:07
少佐さん、こんにちは。管理人です。
いろいろとありがとうございます。

初期値をweightp=0, bframes=0にしておかないと、困る方がけっこういらっしゃるようなので、その辺りをいじったら、-x264opts が効かなくなったようです。

2012/05/02版のメインのパッチで修正してみましたので、お時間のあるときにでもお試しください。
Posted by あべちん at 2012年05月02日 21:15
あべちんさん、返信ありがとうございます。

最近のffmpegは-abでVBRを指定するようになったんです
か! すみません、よく調べもせずに滅多なことを口走りました。

しかし18607辺りのverだとCBRで変換しているのに、何故わざわざそんな部分に変更を……
Posted by ねこみー at 2012年05月03日 01:38
> ねこみーさん

私も、以前はCBRもあったように記憶していますが、いつから変わったんでしょうかね???

ffmpegの開発者のどなたかが、CBRよりもVBRの方がいいということで、変えちゃったんでしょうか。

真相は謎です。
Posted by あべちん at 2012年05月03日 03:09
あべちんさん、返信ありがとうございます。

音声に関してはCBRが好きなのでちょっと残念です。

ずっと引っかかっていた疑問が晴れました。どうもありがとうございます。
Posted by ねこみー at 2012年05月03日 13:50
> ねこみーさん

すみません。

いろいろ試してみたら、ねこみーさんのおっしゃるとおり、タグ情報が間違いで、デフォルトではCBRでエンコードされているようです。

「-ab」はビットレート指定のCBR、
「-flags +qscale -aq」で、0〜9のクォリティ指定のVBRになるようです。(/ω\)ハズカシー

mp3音声のみだと、タグ情報がVariableにしかならなくて、mp4などの動画と一緒だと、CBRの時はConstantになりますね。

んー謎だ。

前のコメントを読んで、間違った情報を信じてしまった方が他にもいらっしゃったら、すみません。
Posted by あべちん at 2012年05月04日 17:38
追加です。

lame単体でエンコードしたmp3は、VBRの時はXingヘッダというのが付き、CBRの時はInfoヘッダというのが付いています。

ffmpegでエンコードしたmp3だと、CBRでもVBRでもXingヘッダが付けられていました。

その辺りがあやしいというのは分かったので、バグとして報告してみようかと思います。
Posted by あべちん at 2012年05月05日 07:14
お、おおおー(汗)

ねこみーです。どうもお世話になっております。

自分としても原因が気になるところなので、報告の結果を心待ちにさせていただきます。

まさかここまで親身になって調べていただけるとは思っていませんでした。どうもありがとうございます!
Posted by ねこみー at 2012年05月07日 00:32
ねこみーさん、こんにちは。管理人です。

mp3のヘッダがおかしい件ですが、英語が苦手なので、どうやってバグ報告しようかと考えているうちに、5/8付で修正されました。

タイミングが良すぎるので、もしかして開発者の方もコメントを読んでいるんでしょうか?
キョロ キョロ (・_・ ) ( ・_・) キョロ キョロ

次の更新では直っていますので、しばらくお待ち下さいませ。
Posted by あべちん at 2012年05月09日 19:43
管理人さんへ、ねこみーです。どうもお世話になっております。

ひょっとしたら自分のコメントがバグフィックスの手助けになれたかもしれないってのはロマンがあって気持ち良いですねー

次回の修正版の更新を心待ちにしております。どうもありがとうございました!

P.S.
しかし、それはそれとして随分放置されたバグなんじゃないかと思います。今の今まで誰も指摘しなかったんでしょうかね?
Posted by ねこみー at 2012年05月10日 23:11
> ねこみーさん

動画変換がメインで、mp3単体で使う人が少ないのか、あるいは、そういうもんだと思って、疑う人がいなかったのかもしれません。

開発者のどなたかが見たのか、人づてか分かりませんが、影響はありそうな気がしますね。

いろいろとありがとうございました。
Posted by あべちん at 2012年05月12日 03:55
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/54457856
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック