ffmpeg rev.52407

ffmpeg関連。

随分前(4年位前)にコンパイルした ffmpeg rev.52407のバイナリを配布してみます。
(需要は無いかもしれませんが)

ただ、これはあくまで自分用と試験的な目的や研究目的でコンパイルしたものです。(と言っても、動画エンコしてるだけですが)

ダウンロード

注意事項 (ダウンロードする前に以下をよくお読みになり、ご理解された上でダウンロードしてください)
ffmpegの実行ファイルは、GPLv3 (GNU General Public License Version 3)の下
配布いたします。

ライセンスの詳細は、同梱してある「COPYING.GPLv3(英文)」
或いは こちらのサイト(英文)をご覧ください。

fdk-aac や libfaac はライセンス関連の問題により、GPLでの配布が不可能ですので
バイナリには含んでおりません。

ATTENTION: First of all, I recommend that you should read the following carefully before you can download the zipped binaries of ffmpeg

These binaries of ffmpeg are distributed under version 3 of the GPL, GPLv3
(GNU General Public License Version 3). For further detailed information on that License, see the full license here or COPYING.GPLv3 included along with the binary together.

fdk-aac and libfaac are not included in the ffmpeg distributed on this blog because it is not possible for both those libraries to give away under GPLv3,
due to problems related to the licenses of fdk-aac and libfaac

ffmpeg_rev52407 (7z版)

ffmpeg_rev52407 (zip版)

続きを読む

広告

ffmpeg_rev.47984の自分用コンパイルと更新ライブラリのメモ

前にコンパイルしたffmpegは、ソースが少し前に取得したものだったので
その間に、ライブラリが色々と更新されてました。
という訳で、ffmpegのライブラリを全て更新してコンパイル。

あくまで自分用なので、自分のCPUに最適化しています。

あと、「お気に入りの動画を携帯で見よう」さんのサイトによれば
x264_rev.2230には、バグがあるとのこと。

x264 rev.2230のこだまでしょうか?いいえバグです。 お気に入りの動画を携帯で見よう
ってもうコンパイルしてしまった…。
でも、エンコは正常みたいで特に分かった様子はなさそう。
またコンパイルするの面倒なので、次のリビジョンまで待ちます。
続きを読む

音楽ファイルをfdk-aacに変換

前回の記事で、fdk-aacを組み込んだffmpegをコンパイルしました。
そういう訳で今回は、そのffmpegでfdk-aacを使ってみます。

ここでは ffmpeg.exe 単体で変換しますが
携帯動画変換君などのフロントエンドを使ったり
一連の処理をバッチファイルにまとめて、ドラッグ&ドロップで変換したりしてもいいと思います。
(というか頻繁に使う場合は、そちらの方が楽)

fdk-aacに変換

まずffmpegがある場所でコマンドプロンプトを開く。
( [Shift] を押しながら右クリックすれば、右クリックメニューに「コマンドウィンドウをここで開く」あるのでそれで開く)

変換する音楽ファイルは、CDから音源で「ラデツキー行進曲」

恐らく、名前を知ってる人も多いと思いますが、知らない人でも曲を聴けば一度は
聴いた覚えがあるはず。こんな曲です↓

そんな訳でコマンドライン。256kbpsで変換。
今回は単なるテスト目的なのでデフォルトの AAC-LC を使います。
ffmpeg -y -i "ラデツキー行進曲_作品228.wav" -vn -acodec libfdk_aac -ac 2 -vol 256 -ab 256k "OutputFile21.m4a"

snapshot_fdk_001
日本語のファイル名なので思いっきり文字化けしてますが
ちゃんと変換されます。

出力されていたら、無事完了。

確認のためPSPに入れたところ、きちんと再生されました。
これで、iPodやPSP他ミュージックプレイヤーなどに入れて持ち運べますね。

あとプロファイル指定を行いたい場合は、以下のようにコマンド追加。
例えば、HE-AACなら
-profile:a aac_he

-profileオプションを指定しない場合
自動的にデフォルト値である AAC-LC になります。

FDK-AACを組み込んだffmpegをコンパイルしてみた

二ヶ月ちょっと前にx264をWindows上でコンパイルしてみましたが
記事の最後にも書いてある通り、ffmpeg もコンパイルしてみました。

折角なので高音質?と噂のFDK-AACライブラリ(AACエンコーダ)も一緒にffmpegに組み込んでいます。

もともと、ネット上で配布されているffmpegは
faacやfdk-aacなどの一部のライブラリが含まれていません。

何故ならfaacやfdk-aacはオープンソースではあるものの、「Non-Free」なライブラリであり
これらを含む実行ファイルの再配布ができないからです。

一言で言えば、ライセンス上の関係ですね。

つまり、faacやfdk-aacを利用するには
自分でソースコードから faac や fdk-aac といったライブラリを含むffmpeg をコンパイルする必要があります。

そんな訳で、fdk-aacを利用してみたいと思い、自分用にコンパイルした次第。
環境はx264をコンパイルした時と同じ MinGW / MSYS。

まず、ここからfdk-aacをダウンロード

$ tar zxvf fdk-aac-0.1.1.tar.gz
$ cd fdk-aac-0.1.1
$ ./configure
$ make
$ make install

後は、ffmpegの./configure オプションに「–enable-nonfree –enable-libfdk-aac」を追加して make してffmpegをコンパイルすればOK。

ffmpegのコンパイルについては、長くなってしまうので今回は割愛。
まとまり次第、書き留めたいけど面倒なんだよなー。

携帯動画変換君で音楽ファイルに変換する設定

携帯動画変換君&ffmpegネタ。
FLVやAVIといった動画ファイルから、各種音楽ファイルに変換する設定。

動画ファイルをMP3に変換する場合

ビットレートを変更したい場合は-ab 128k の部分を書き換え。
以下の例では 128kbps 設定

[Item0]
Title=MP3/128kbps
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -acodec libmp3lame -ac 2 -vol 256 -ar 44100 -ab 128k "<%OutputFile%>.mp3""

Ogg Vorbisに変換する場合

ビットレートを変更したい場合は-ab 128k の部分を書き換え。
以下の例では 128kbps 設定

[Item0]
Title=OGG/128kbps
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -acodec libvorbis -ac 2 -vol 256 -ar 44100 -ab 128k "<%OutputFile%>.ogg""

WAVファイル(リニアPCM)に変換する場合

無圧縮の音楽ファイルになり容量が大きいので注意。

[Item0]
Title=WAV(PCM)/stereo
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -acodec pcm_s16le -ac 2 -vol 256 -ar 48000 -f wav "<%OutputFile%>.wav""

WMAに変換する場合

ビットレートを変更したい場合は-ab 128k の部分を書き換え。
以下の例では 128kbps 設定

[Item0]
Title=WMA/128kbps
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -acodec wmav2 -ac 2 -vol 256 -ar 44100 -ab 128k -f asf "<%OutputFile%>.wma""

まぁ、デフォルトの携帯動画変換君使ってる人はあんまりいないと思う。
既に、2005年12月を最後にずっと更新されてないしね。

使ってる人は大体、私みたいに設定を書き換えたりして
エンジンである ffmpeg を新しいのに入れ替えてる人くらいだよなぁ。

ffmpegを使いこなすには色々とコマンド覚えなきゃならないから
使ってる人はある意味何か拘りがある人だと思う(画質とか)。

ちょっと設定を書き換えるだけで、利用できるって便利だと思うんだけど
PCでネットやメールを使ったり、動画や音楽を変換してデジタルメディアプレイヤーに入れたり
とか一般的な使用用途だとそこまでする意義がないんだろうね。

ネットにはもっと簡単で手軽なフリーソフトがあるし。

最新ffmpeg用に変換君設定を書き換える(後編)

分割した前回の続き。
前回の記事はこちら…最新ffmpeg用に変換君設定を書き換える(前編)

-acodec aac -ac 2 -ar 48000 -ab 96 → -an
-acodec aac 指定のままだと現在ではffmpeg内蔵AACコーデックが指定されてしまう。
ffmpeg内蔵AACは音質があまり良くない。

これは、AAC指定のオプションが -acodec libaac に変わったり
結構前(たしか2009年5月頃)に、ライセンス絡みの問題で
faac コーデックを入れてffmpeg配布できなくなったり
aac変換出来なくなって、その後に新しくffmpeg内蔵aac(試験中なので音質はあまり良くない)が登場した為。

と言う事で高音質なAACに変換できる外部AACエンコーダを使う。
まずは NeroAACエンコーダーをダウンロード。→前に書いた記事を参照
ダウンロードしたら、解凍してWin32フォルダに入っている「neroAacEnc.exe」を
変換君の「coresフォルダ」に入れる。
続きを読む

最新ffmpeg用に変換君設定を書き換える(前編)

携帯動画変換君の設定ファイルを、現在の新しいffmpeg用の設定に
書き換える為の書き換え部分をメモ。

かなり長くなってしまったので、記事を分割しています。

携帯動画変換君のffmpegを入れ替える意味

携帯動画変換君には、動画変換の内部エンジンに
ffmpegと呼ばれるエンコーダが使われている。

ffmpegが、動画変換をする本体であり、携帯動画変換君は
ファイルをドラック&ドロップするだけで
ffmpegを手軽に使えるようにしたGUIフロントエンド。

要は、携帯動画変換君に動画ファイルをドラッグ&ドロップすると
設定ファイルに記述されている設定でffmpegを動かして動画変換してるってだけ。

しかし、携帯動画変換君で使われているffmpegは少し古く
一部新しいフォーマットに対応していない。
(これは、公式が2005年12月1日の0.34をリリースしてから更新していない為)

そこで、内部エンジンであるffmpegを新しいものと入れ替えて
新しいフォーマットに対応して変換できるようにするのがffmpegを入れ替える目的。

なんだけど、一番の問題はffmpegを動かす設定の書式が変わってしまっていて
古いffmpegと全く互換性がないという事。
なので、新しいffmpegに入れ替えても、そのままの設定では動かない。
続きを読む

ffmpegのヘルプをテキストに出力する

ffmpegは、高機能な動画変換ツールなんだけど
その代わりに膨大な数のオプションがある。

使い方が分からない場合や、詳しいオプションの説明を見たい場合は
こういうコマンドラインベースのソフトを使ってる人なら、当然ヘルプを見る。

だけど、あまりに膨大な数なので、コマンドプロンプト画面に全て載り切らない。

そんな時は、テキストファイルにオプションを出力して
テキストファイルで見てみると便利。

ffmpeg でヘルプファイルにコマンドを出力するには
コマンドプロンプトから以下の様に入力する。
ffmpeg -h > commands.txt

因みに、比較的新しいffmpeg であれば、ヘルプを出力するオプションは-hだけでなく
-?-help--helpなどでも可能。

私は、毎度毎度コマンドプロンプトから入力するのも面倒なので
以下のバッチファイルにしてしまっています。
@echo off
if exist commands.txt (del commands.txt)
if exist formats.txt (del formats.txt)
if exist codecs.txt (del codecs.txt)
ffmpeg -h > commands.txt
ffmpeg -formats > formats.txt
ffmpeg -codecs > codecs.txt
exit

このバッチファイルを ffmpeg のあるフォルダで実行すれば
「commands.txt」「formats.txt」「codecs.txt」の3つのファイルが出力される。

「commands.txt」は、ffmpegで利用可能なオプションコマンド一覧。

「formats.txt」は、ffmpegが出力可能なフォーマット(動画・音声を含包するコンテナの形式)一覧。
例えば、aviとかflvとかmp4とかoggとか。

「codecs.txt」は、ffmpegが変換可能なコーデック(動画・音声形式の種類)一覧。
例えばH.264とかとかmp3とかvorbisとか。

ffmpegのヘルプを出力したファイルを見てみたら、なんと1400行以上になってた!
確か、携帯動画変換君に使われているffmpegは、200~300行程度だったから
かなり増えてるな…というか完全に多過ぎてカオスな状況。

ffmpegの一部オプションの書式が変わった

久しぶりのffmpegネタ。

「お気に入りの動画を携帯で見よう」さんのサイトによれば
ffmpegの一部オプションが変わっているみたいです。

FFmpeg rev.37798 ダウンロード お気に入りの動画を携帯で見よう
http://blog.k-tai-douga.com/article/53875334.html

ただし「従来のオプションも使えるようになっている」とのことなので
特に心配するしたり、急いでオプションを書き換えたりする必要はないと思います。

以下は「mixed_refs」「mbtree」「fast pskip」「8x8DCT」をONにする従来の設定
-flags2 +mixed_refs+mbtree+fastpskip+dct8x8

変わった後の設定
-mixed_refs 1 -mbtree 1 -fast-pskip 1 -8x8dct 1

OFFにするには、数字を「1」から「0」に変更するか、今まで通りオプションそのものを削除すればOK。

以下は「partitions」の従来の設定
-partitions +parti4x4+partp8x8+partp4x41

変わった後の設定
-partitions pi4x4,pp8x8,pp4x4

他にも今までは「-flags2 +wpred」だったのが「-weightb 1」指定可能になっていたり
-deblockalpha 0 -deblockbeta 0」でloopフィルタの強度を指定していたのが
-deblock 0:0」のような書式でも可能になったりと
よりx264のオプション指定に近い形に変更が加えられているみたい。

関連記事

ffmpeg rev.29958 から rev.31700以降 入れ替えでつまずく

今回も携帯動画変換君&ffmpeg ネタ

今日、ffmpeg を新しくしようとしたんだけど、エラーはかれた。
またかよw少し前にも同じ様な事あって記事に書いてる

事の発端は、ffmpeg rev.29958 において -i_qfactor 1.40 って指定しているにもかかわらず
なぜか無視されて、ffmpegデフォルト値の 0.71 になってしまう現象。

もしかすると、これはバグなのかな?と思い
もしバグなのであれば、少し上のリビジョンで修正されてるんじゃないか
って事で rev.29958 から rev.31700 に新しくした訳です。

が、しかしあの Error 1 が…。(エラー1はオプション指定が誤った際に出るって事はお馴染み)
とりあえず、エラーメッセージを見てみる。

…あれ?エラーメッセージが表示されてない…

オプションを変えたりして
色々試してみたけど rev.31700 では結局エラー
rev.29958 に戻すと問題なし

打つ手がなく無くなってしまった、というよりエラーメッセージが表示されないんだから、手がかりすらない。

とりあえず問題解決するため rev.35051 をダウンロードして
これで試してみる
(あ、因みに rev.35051では -wpredp オプションが -weightp オプションに変わってる)

またもやエラーだったが、今回はちゃんとエラーメッセージが表示されていた

timestamp is deprecated, set the 'creation_time' metadata tag instead.
No '=' character in metadata string .
A>Dialog : 処理実行中にエラーが発生しました [Error:1]
T>Finished.

timestamp は非推奨だから、代わりに「creation_time」っていうメタデータタグを使え!
ってことらしい。

面倒くさいので、手っ取り早く -timestamp “<%TimeStamp%>” を削除。

無事、めでたく動きました…。
因みに、冒頭の -i_qfactor 指定が無視される現象も解決。
やっぱバグだったのかな?。

冗長気味な文章で書いてきたので簡単にまとめ

rev.29958 から rev.31700 にしたら Error 1 を吐く(エラーメッセージ表示されず…)
仕方がないので rev.35051 で試してみる
またもやエラーだったが、今度はちゃんとエラーメッセージ表示される。
-timestamp "<%TimeStamp%>" を削除、もしくは
-metadata creation_time="<%TimeStamp%>" に書き換え

で解決。こういう問題は、解決するまで時間が掛かるし(と言っても数十分程度)、疲れる orz

後で調べたら、この事が以下のコメント欄でやり取りされてた…しかも2か月前に。/(^o^)\ナンテコッタイ
FFmpeg rev.32736 ダウンロード お気に入りの動画を携帯で見よう

その他の関連記事