Transcoding.iniカスタマイズの勘所 bookmark

動作の流れは

ffmpegで動画/音声をエンコード

QT3GPPFlattenで純正QuickTimeの出力に調整

(ATOMChangerで必要な情報の書き換え)

rmで不要なファイルを削除

という流れになっています。

この、各処理についての詳細がTranscoding.iniに記述されていますので、自分なりの設定をしたい場合はこれを書き換えてください。
項目を増やす場合は[Item0]の0の部分を順に増やしていきます。実行するコマンドの数を増やす場合(Command0=~)も同様です。

<%AppPath%>は3GP_Converter.exeが存在するディレクトリ、<%InputFile%>は入力ファイル名、<%OutputFile%>は出力ファイル名(拡張子無し)、<%TemporaryFile%>はテンポラリファイル用ファイル名(拡張子無し、WindowsのTempディレクトリに生成します)に置換されます。
変更する設定の例を以下に挙げますが、他にもffmpegにはQベースの設定や、ノイズリダクション、細かいエンコード手法の設定など様々なオプションがあります。最適設定を追求される方はいろいろ試してみてください。

 
 

カスタマイズ例 bookmark

動画のビットレートやフレームレートを上げる bookmark

動画のビットレートを変更する場合はffmpegの -b オプションの値を変更します。単位はkbpsです。
また、動画のフレームレートは -r オプションで定義されています。単位はfps。小数点以下も指定できます。
例ではAAC,3GP2,QVGAの設定を挙げていますが、他の設定をベースにする場合は赤字の部分を参考に変更してみてください。

[Item0]
Title=QVGA動画高画質512kbps 29.97fpsモノラル
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec mpeg4 -s 320x240 -r 29.97 -b 512 -acodec aac -ac 1 -ar 44100 -ab 48 -f 3gp "<%TemporaryFile%>.3g2""
Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>.3g2" "<%OutputFile%>.3g2" -c QT3GP2_QVGA.ini"
Command2="rm "<%TemporaryFile%>.3g2""

 

音声のビットレートやサンプリングレートを上げる bookmark

音声のビットレートを変更する場合はffmpegの -ab オプションの値を変更します。単位はkbpsです。
音声のサンプリングレートは -ar オプション。単位はHz。
また、音声のチャンネル数(モノラル/ステレオ)は -ac オプションの値を変更します。
例ではAAC,3GP2,QVGAの設定を挙げていますが、他の設定をベースにする場合は赤字の部分を参考に変更してみてください。

[Item0]
Title=QVGA動画15fpsステレオ高音質
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec mpeg4 -s 320x240 -r 15 -b 190 -acodec aac -ac 2 -ar 48000 -ab 96 -f 3gp "<%TemporaryFile%>.3g2""
Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>.3g2" "<%OutputFile%>.3g2" -c QT3GP2_QVGA.ini"
Command2="rm "<%TemporaryFile%>.3g2""

 

動画の解像度を変える bookmark

動画の解像度を変える場合は少々面倒です。
同梱の設定ではQCIFとQVGAの設定を用意していますが、そのほかの解像度にしたい場合は次のようにします。
・ffmpegの-sオプションの値を変更する
・QT3GPPFlattenの-cオプションの値(ファイル名)を適当なものに変更する
・実際の変換作業を一度試しに行ってみる
・すると、ffmpeg処理が終了後(QT3GPPFlatten起動時)に、QuickTimeの設定窓が出現するので、適当な設定を行う
QT3GPPFlattenの設定ファイルは、出力形式(3GPP,3GPP2)が違う時、出力動画の解像度が違う時、または音声のフォーマットが異なる時に別ファイルを指定/作成してください。

[Item0]
Title=sub-CIF標準画質15fpsモノラル
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec mpeg4 -s 128x96 -r 15 -b 190 -acodec aac -ac 1 -ar 44100 -ab 48 -f 3gp "<%TemporaryFile%>.3g2""
Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>.3g2" "<%OutputFile%>.3g2" -c QT3GP2_subCIF.ini"
Command2="rm "<%TemporaryFile%>.3g2""

上記の設定で一度3GP_Converterを起動し変換を行うと、設定ファイルQT3GP2_subCIF.iniが存在しないため、QuickTime書き出し設定の内容を確認するダイアログが表示されます。

3GPPConvTrans01.gif

ここで、ファイルフォーマットを必要なものに変更し、

3GPPConvTrans02.gif

「ビデオ」「オーディオ」の出力を「そのまま」と設定し、必要であればそのほかの設定(配信制限設定など)を済ませてください。

3GPPConvTrans03.gif

※なお、ここで「そのまま」以外の設定を行うことでさらに再エンコードすることもできますが、あまりオススメしません。また、音声のAMRやAACに関してはここで設定しても再エンコード出力はされません

最後に、[OK]をクリックすると、その設定で変換が始まります。(この設定内容は先ほどのファイル名にて記録されるため、このウインドウは2度目以降は表示されません)

 

キャプチャした動画の上下左右端を削除する bookmark

キャプチャした動画などで、画面端にノイズが入っている場合があります。そういった動画をソースとする際、画面の隅を削除する場合は ffmpegの -croptop, -cropbottom, -cropleft, -croprightオプションを使います。単位はピクセル(入力動画の解像度で)です。
例ではAAC,3GP2,QVGAの設定を挙げていますが、他の設定にする場合はこれを参考に自分で設定を作ってみてください。

[Item0]
Title=QVGA標準画質15fpsモノラル
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec mpeg4 -croptop 12 -cropbottom 12 -cropleft 18 -cropright 18 -s 320x240 -r 15 -b 190 -acodec aac -ac 1 -ar 44100 -ab 48 -f 3gp "<%TemporaryFile%>.3g2""
Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>.3g2" "<%OutputFile%>.3g2" -c QT3GP2_QVGA.ini"
Command2="rm "<%TemporaryFile%>.3g2""

 

動画を2パスエンコードする bookmark

動画を2パスでエンコードすることで画質の向上を狙います。そのかわり処理時間は約2倍になります。
例ではAAC,3GP2,QVGAの設定を挙げていますが、他の設定にする場合はこれを参考に自分で設定を作ってみてください。

[Item0]
Title=QVGA標準画質15fpsモノラル 2pass
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -pass 1 -passlogfile "<%TemporaryFile%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec mpeg4 -s 320x240 -r 15 -b 190 -acodec aac -ac 1 -ar 44100 -ab 48 -f 3gp "<%TemporaryFile%>.3g2""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -pass 2 -passlogfile "<%TemporaryFile%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec mpeg4 -s 320x240 -r 15 -b 190 -acodec aac -ac 1 -ar 44100 -ab 48 -f 3gp "<%TemporaryFile%>.3g2""
Command2=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>.3g2" "<%OutputFile%>.3g2" -c QT3GP2_QVGA.ini"
Command3="rm "<%TemporaryFile%>-0.log""
Command4="rm "<%TemporaryFile%>.3g2""

 

ファイルサイズの制限で自動的にエンコードを終了する bookmark

携帯で再生可能なファイルサイズに上限があるような場合のために、ファイルサイズが一定値を超えたところでエンコードを終了することができます。ffmpegでのオプションで -fs、単位はKBです。
ただし、この設定値を(全体の)ファイルサイズが超えた時にエンコードの停止処理に入るもので、後から付加するヘッダ部分や、最後のフレームなどのデータが追加されるため、最終出力は設定値より若干大きくなります。たとえば1.5MBまでに収めたい場合は1400程度を指定するなど、数値の設定は工夫してください。
また、2パスエンコードを行う場合は最初のパス(1回目)では多少大きめの値を設定し、余分にログファイルを作っておくなどといった工夫が必要です。

[Item0]
Title=QVGA動画標準画質 15fpsモノラル 1.5MB
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -bitexact -fs 1400 -vcodec mpeg4 -s 320x240 -r 15 -b 190 -acodec aac -ac 1 -ar 44100 -ab 48 -f 3gp "<%TemporaryFile%>.3g2""
Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>.3g2" "<%OutputFile%>.3g2" -c QT3GP2_QVGA.ini"
Command2="rm "<%TemporaryFile%>.3g2""

 

音量を調節する bookmark

端末によっては、動画再生時の音量が小さめで全体的に音量を上げてエンコードしたい場合があります。そのような時に、あらかじめ設定を変更しておくことで変換時に音量を調整することができます。
ffmpegの-volオプションを追加して調節してください。-vol 256が標準の音量になりますので、音を大きくしたい場合は-vol 768などとしてオプションを書き加えます。

[Item0]
Title=QVGA動画標準画質 15fpsモノラル 1.5MB
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -bitexact -vol 768 -vcodec mpeg4 -s 320x240 -r 15 -b 190 -acodec aac -ac 1 -ar 44100 -ab 48 -f 3gp "<%TemporaryFile%>.3g2""
Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>.3g2" "<%OutputFile%>.3g2" -c QT3GP2_QVGA.ini"
Command2="rm "<%TemporaryFile%>.3g2""

 

最高画質を追求する bookmark

もともと「携帯動画変換君」は、撮り溜まった動画をどんどん移動中に「消化」していく用途を想定したアプリケーションです。そこで基本的には「極力素早く適切な画質にエンコードする」ことを前提として標準の設定値を採用しています。(一部極端に低ビットレートにする必要がある設定に関しては2パスエンコードを標準で用意しています)
しかし状況によっては、いくら時間がかかってもいいので高画質に変換したい、という場合もあるかと思います。そのような場合は次のようにエンコード時のパラメータを調整してみてください。
この設定では、エンコード時間が標準で用意しているものと比較して5倍程度かかります。必要に応じてオプションを削るなどしてみるのも面白いでしょう。

[Item0]
Title=QVGA動画標準画質 15fpsモノラル 1.5MB
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec mpeg4 -mbd 2 -4mv -trell -aic -s 320x240 -r 15 -b 190 -acodec aac -ac 1 -ar 44100 -ab 48 -f 3gp "<%TemporaryFile%>.3g2""
Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>.3g2" "<%OutputFile%>.3g2" -c QT3GP2_QVGA.ini"
Command2="rm "<%TemporaryFile%>.3g2""