構想/資料
入力に関係なく一様な出力がほしい。
最高の画質はコピーと考え、入力の条件を可能な限り引き継ぐ。
再生に使う機器で再生できる方式のうち、画質、音質の一番良い物を自動的に選ぶ。
同じような画質になる複数の方法があるなら、どれを選択しても良いので、自動的に選択したい。
VolMax を使っているので、ほとんど入力ファイルの差異を気にしなくなっていました。
Windows 7RCでの動作確認作業で FlvMP3Gain も見直して考え込んでしまいました。行きがかりでこうなっているわけですが、性格をはっきりさせて作り直そうと思います。
1.2つの動画変換の差異
1.1.VolMax
- ffmpegの単独では、音声に問題のある場合がり回避策をとった。(音がブツブツになる)
- 動画はきれいに再生できるように作られるわけだから、デコードを DirectShow で行い、エンコードを ffmpeg で行えば、大半の問題は解決する。
- 音声トラックが複数あるときには日本語を採る。
- 私の使用目的は、テレビ、古いDVDレコーダ(アナログの世界)なので、DVD規格以下の mpeg 動画になれば問題なし。
と、考えてできています。何の設定もせず、裏で放って置くとエンコードが終わっていると言うように使っています。
1.2.現状のFlvMP3Gain
- これを作ったころには、FLVで映像がVP61、音声がMP3のものが多かった。音量測定のためのデコードが自前でデコードできる(C#でデコードできる) MP3 だけ扱える。
- 変換は ffmpeg 次第。
- 毎回入力の画像サイズを調べて出力サイズを指定し直していた。サイズ変換は、画質、変換時間の点で避けたい。DVD規格より大きいなら小さくしないと再生できないので。
1.3.これから作るFlvMP3Gain
- 基本的に ffmpeg のフロントエンドとする。
- したがって、入出力ともに ffmpeg がサポートする形式が扱える範囲。(ただし、操作性が良いように不要そうなものは除外する)
- 音量計測のためのデコードも ffmpeg で行う。
2.構想
2.1.入力ファイル
ffmpegは、入力に対しては特に指定が必要ありません。ffmpegが処理可能なら可とします。
2.2.出力ファイル
何かの機器で鑑賞するために変換するわけなので、その機器に最適な変換をします。
機器は、
- DVDプレーヤー
- ゲーム機
- PDP
- 携帯音楽端末
- 携帯電話
- (パソコン そもそも変換の必要はないはずだが)
私自身は、DVDプレーヤー以外は持っていなし、見た事もないので、要素となる項目を選択可にするだけで、確認も何もできません。
その要素となる項目は、
- コンテナ
- コーデック
- サイズ
2.3.出力ファイルのコンテナ、コーデック
見るのは自分だけですから、出力するコンテナに含むのは、映像も音声も1つの動画だけを考えます。字幕などの情報も考えません。
| コンテナ |
拡張子 |
映像 |
音声 |
備考 |
| 3gpp |
3gp |
H263
H264(MPEG-4 AVC)
|
AMR-NB
AAC-LC
|
3G携帯 |
| 3gpp2 |
3g2 |
H263
H264(MPEG-4 AVC)
|
AMR-NB
AAC-LC
|
3G携帯
(HE-AACはffmpegがエンコードしないよう) |
| AVI |
avi |
ffmpegで
可能なもの |
ffmpegで
可能なもの |
再生より、他の変換ソフトの入力に使う。 |
| FLV |
flv |
H264(MPEG-4 AVC) |
AAC-LC
|
パソコン以外はわからない。
・エンコードが必要な場合は、H.264/AAC-LC とする。
・コピーする場合は、コンテナへ格納可能な形式を可とする。*1
|
| MPEG-4 |
mp4 |
H264(MPEG-4 AVC)
|
AAC-LC
|
再生する機器はわからない。
・エンコードが必要な場合は、H.264/AAC-LC とする。
・コピーする場合は、コンテナへ格納可能な形式を可とする。
|
| MPEG-2 |
mpg |
MPEG-2 |
MP2 |
DVDプレーヤーでの再生用 |
*1 FLV のコピー可能な形式(FLVの仕様上であって、ffmpegでの可否は未確認)
| |
映像 |
音声 |
| FLV |
2: Sorenson H.263
3: Screen video
4: On2 VP6
5: On2 VP6 with alpha channel
6: Screen video version 2
7: AVC |
0 = Linear PCM, platform endian
1 = ADPCM
2 = MP3
3 = Linear PCM, little endian
4 = Nellymoser 16-kHz mono
5 = Nellymoser 8-kHz mono
6 = Nellymoser
7 = G.711 A-law logarithmic PCM
8 = G.711 mu-law logarithmic PCM
9 = reserved
10 = AAC
11 = Speex
14 = MP3 8-Khz |
*2 MP4 のコピー可能な形式(ffmpegでの可否は未確認)
| |
映像 |
音声 |
| MPEG-4 |
MPEG-1
MPEG-2
MPEG-4
H.264
|
AAC
HE-AAC
MP2
MP3
AC-3
|
2.4.出力ファイルの画像サイズ
2.4.1.固定か上限か
DVDプレーヤーの場合は、720x480 以下なら再生できます。上限が設定できれば良いと言うことです。たいていは上限を設定する方法で良いと思いますが、絶対このサイズも可能にします。
この話は、可能な限りサイズを変更しないと言う前提です。デジタルでのサイズ変更は時間が掛る上、画質も劣化します。
2.4.2.パディング
入力サイズと出力サイズを比べて、幅、または高さの一方が等しい場合は、他方の差が出力が大きいなら、パディングでサイズを変更します。
この話は、両者のピクセルアスペクト比が等しいと言う前提によります。
2.4.3.縦横比
市販のDVDの映像はたいてい16:9の画面に映して見るようになっていて、プレイヤーで 16:9 と 4:3 が切り替えられるようになっているのだと思います。旧来のDVDプレーヤー、テレビの世界では、表示面が 4:3 なので、16:9を選ぶと上下に黒帯が付き、4:3を選ぶと主人公の背が高くなると思います。
したがって、縦横比の変換は、4:3=>16:9 は、左右に帯を、16:9=>4:3 は、上下に帯を入れる処理にします。
2.4.4.サイズ変更
ffmpeg は、サイズを指定すればそのサイズになるようにデジタル的に伸長縮小します。
再生できるサイズには上限があるので、縮小はやむ負えません。
拡大は、プレーヤーで再生できるならしないほうが無難です。旧来のDVDプレーヤーはアナログ的に拡大されるのでずっとキレイだと思います。
3.ffmpegについて
3.1.ビルド
音声について、AMR を追加した ffmpeg を用意する。AACのエンコードが必要だが、標準かどうか調べてから。
3.2.ffmpeg で入力の形式を知るには
単に入力ファイルを指定して実行すれば良い。
取得する情報
- 再生時間
- ストリーム構成
- 各ストリームのコーデック、ビットレート
- 音声ストリームの名前、チャネル数、サンプリングレート
- 映像ストリームの、フレームレート、サイズ
3.3.音量の測定
-ss 30 -t 300
として、30秒目から5分間を測定してマキシマイズに使う係数を決める。
10分以下なら全部。
3.4.使えるコーデックの一覧
AVIについては、-formats で表示される内容を使う。
それ以外は、前述の表による。
3.5.MPEG-2のコンテナ
長い間、 -vcodec mpeg2video -f mpeg として、使ってきたが、ffmpeg の表示を見ると、-fmt mpeg は、MPEG-1 コンテナを意味する。MPEG-1 コンテナにMPEG-2ストリームを入れて使ってきたことになる。
MediaInfo は、このファイルのコンテナを MPEG-PS と表示する。
ffmpeg で ps と記されているのは、-fmt dvd である。
コンテナとして、mpeg、dvd、mpegts を選択肢に入れる。
3.6.音声トラックの選択
ffmpeg の表示する音声トラックの情報には、(jpn) 、(eng)のような表示になる。ただし、コンテナが限定されているようだ。DirectShowスプリッタに比べると、言語がわからないこととが多くなる。
4.変換ルール
4.1.できるだけコピー
・ffmpeg にコーデックがなくてもコピーできるのか?
・ffmpeg にコーデックがあるものはコピーもできるだろう。
4.1.1.音声コーデック
5.コンテナの制約
ffmpeg のファイル・フォーマットの一覧のうち、出力になるものを選びました。
このうち、まったく見た事がないので mov と swf は、検討から除外します。
次に、AVI と MKV ですが、これは汎用のコンテナと解釈します。
残った下表のコンテナは、再生機器や再生環境のターゲットが決まっていたり、含まれるストリームに条件が付くものです。
| コンテナ |
|
|
| 3g2 |
|
|
| 3gp |
|
|
| asf |
|
|
| dvd |
|
|
| flv |
|
|
| ipod |
|
|
| mov |
|
|
| mp4 |
|
|
| mpeg |
|
|
| mpegts |
|
|
| ogg |
|
|
| psp |
|
|
| svcd |
|
|
| vcd |
|
|
| vob |
|
|
資料
A.覚え
- MPEG-1が再生できてMPEG-2が再生できない道具はないと考える。可変ビットレートのMPEG-2だけを出力形式にする。
- H.264/AVC は、ITU-T の H.264規格と、ISO のMPEG-4 AVC(Part 10 Advanced Video Coding) を併記したものであるらしい。
- AAC と AAC-LC は、実質同じものらしい。AACのサブセットがAAC-LCだが、実装があるのはAAC-LCらしい。
- HE-AAC は、低ビットレート向けに改良したもの。
- AMR は、ノキア、シーメンス、エリクソンの共同開発。AMR-NB と AMR-WBがあり、単にAMRと言うときは、AMR-NBを指す。
- FLVにでてくる Sorenson H.263 は、H.263 のサブセットで、Flashで再生可能なものらしい。
- 3gpp2で使われるQCELPは、ffmpegではデコードのみ可。
B.画像サイズ
| 画素数 |
用途 |
略号 |
横:縦 |
備考 |
| 176x132 |
iPod nano |
|
|
|
| 176x144 |
3g携帯 |
QCIF |
11:9 |
|
| 320x180 |
ワンセグ |
|
16:9 |
|
| 320x240 |
ワンセグ,iPod |
QVGA |
4:3 |
|
| 352x240 |
|
SIF(DVD) |
|
|
| 352x288 |
|
CIF,SIF(PAL DVD) |
11:9 |
|
| 400x240 |
|
WQVGA |
15:9 |
|
| 432x240 |
|
FWQVGA |
16.2:9 |
|
| 480x272 |
PSP |
|
16:9 |
|
| 480x320 |
iPhone |
HVGA |
3:2 |
|
| 600x480 |
|
VGA |
|
|
| 704x576 |
DVD(PAL) |
Cropped Full D1 |
|
|
| 720x480 |
DVD(NTSC) |
Full D1 |
4:3 |
|
| 720x576 |
DVD(PAL) |
Full D1 |
|
|
| 768x576 |
DVD(PAL) |
|
4:3 |
|
| 800x600 |
|
|
|
|
| 854x480 |
携帯 |
FWVGA |
16:9 |
|
| 960x540 |
|
|
|
|
| 1024x768 |
|
XGA |
|
|
| 1280x720 |
|
HDTV |
|
|
| 1440x1080 |
ハイビジョン |
|
4:3 |
|
| 1920x1080 |
フルハイビジョン |
フルHDTV |
16:9 |
|
※ 縦横比は、画面アスペクトレシオだが、単に画素数の比を期している箇所がある。これは、ピクセルアスペクト比が1の時だけ成り立つ。
□ 高解像度の新しい規格は国際的なもので、問題なさそう。
画素数 |
アスペクト比 |
呼称 |
備考 |
画面
|
ピクセル |
| 800x600 |
4:3 |
1:1 |
SVGA |
|
| 960x720 |
4:3 |
1:1 |
HDTV720 |
|
| 1024x768 |
4:3 |
1:1 |
XGA |
|
| 1280x720 |
16:9 |
1:1 |
HDTV720 |
|
| 1280x960 |
4:3 |
1:1 |
Quad-VGA |
|
| 1280x1024 |
5:4 |
1:1 |
SXGA |
|
| 1440x1080 |
4:3 |
1:1 |
HDTV1080 |
|
| 1920x1080 |
16:9 |
1:1 |
HDTV1080 |
|
□ DVDーVideo も比較的明瞭。
画面アスペクト比が4:3か16:9で表示されることを想定している。
同じサイズでも2通りの可能性がある。
画素数 |
用途 |
アスペクト比 |
備考 |
| 画面 |
ピクセル |
| 704x480 |
DVD(NTSC) |
4:3 |
0.91 |
|
| |
|
16:9 |
1.21 |
|
| 704x576 |
DVD(PAL) |
4:3 |
1.09 |
|
| |
|
16:9 |
1.45 |
|
| 720x480 |
DVD(NTSC) |
4:3 |
0.889 |
|
| |
|
16:9 |
1.185 |
|
| 720x576 |
DVD(PAL) |
4:3 |
1.067 |
|
| |
|
16:9 |
1.422 |
|
※本来は、704x480の部分が4:3、16:9 であるように決められたものらしい。704を超える部分はその外側なので、ピクセルアスペクト比は、水平が704も720も同じなのが正しい。
□ PSP
見た事もないのですが、物理的には 480x272(480x270)のようです。
720x480までの再生が可能で、720x480で外部出力できるもののようです。4:3、16:9 の切り替えもあるようです。320x240、368x208、480x272 のサイズが代表値のようです。
C.縦横比について
正方形を撮影すれば、テレビにも正方形が受像されれば良いわけです。テレビで縦横比と言えば矩形の表示領域の縦横比で、4:3 や 16:9 が使われています。
正方形をいっぱいに表示すれば、水平方向には余白ができ、その幅が正方形の一辺の長さの、それぞれ 1/3、7/9 になることがわかります。
アスペクト比も縦横比と同じで、特別な意味はないようです。
画像がドットでできていると考えると、水平と垂直に同じ100ドットの線を引いたときに、見える長さの比が 1:1 とは限らないという意味での、縦横比が必要になります。これは、誤差や調整の話しではなく、計画された比率のことです。
これを、ピクセルアスペクト比と言うようです。この場合、最初のアスペクト比を画面アスペクト比と表します。
実は、私自身は、これを全く気にしていません。主人公が痩せようが、太ろうが、構わずに見ています。
見た目の縦横比を維持するためには、表示器の「画面アスペクト比」と「ピクセルアスペクト比」の両方を知る必要があります。しかも、入力ファイルが想定した値と、ターゲットの値の両方が必要になります。
動画のファイルを扱うことだけを考えると、確実に知りえるのは ドット数のみです。動画ファイルのコンテナにはいろいろな情報が入れられるように考えられていますが必須ではないことが多いので期待できません。
D.MPEGの縦横比の情報
DAR(Display Aspect Ratio)
PAR(Pixel Aspect Ratio)
SAR(Sample Aspect Ratio)
|