※この記事のため本編コード更新してあります。
Ffmpesyncを作った目的は「持ち運びやすいように小さな動画を作ること」であり、画質は「極端に崩れてなければOK」な設定にしている。
よって1Passの品質も全般的に圧縮寄りになっている。
フォルダ投入時の自動判定も基本的にはコレを元にしてるため、自動判定で"+"オプションで画質アップ補正しても「心持ち」な画質の変化しか発生しない。
「全体的に画質優先寄りにしたい」ってのがあるかもしれないので、ここでは入力した値に対応する品質値の変更方法など残しておく。 修正する箇所はこの部分。
Function sGetConvertCrf(piMode)
Dim vMode , vCrf
vCrf = cNULL
vMode = Trim(piMode)
If IsNumeric(vMode) Then
vMode = CLng(vMode) \ 10
Select Case vMode
Case 0 : vCrf = 25
Case 1 : vCrf = 28
Case 2 : vCrf = 31
Case 3 : vCrf = 34
Case 4 : vCrf = 37
End Select
End if
sGetConvertCrf = vCrf
End Function
Dim vMode , vCrf
vCrf = cNULL
vMode = Trim(piMode)
If IsNumeric(vMode) Then
vMode = CLng(vMode) \ 10
Select Case vMode
Case 0 : vCrf = 15
Case 1 : vCrf = 18
Case 2 : vCrf = 21
Case 3 : vCrf = 24
Case 4 : vCrf = 27
End Select
End if
sGetConvertCrf = vCrf
End Function
設定値を10づつ変更した場合の初期状態でのエンコード品質例:
よって1Passの品質も全般的に圧縮寄りになっている。
初期状態でのエンコード品質例:
フォルダ投入時の自動判定も基本的にはコレを元にしてるため、自動判定で"+"オプションで画質アップ補正しても「心持ち」な画質の変化しか発生しない。
「全体的に画質優先寄りにしたい」ってのがあるかもしれないので、ここでは入力した値に対応する品質値の変更方法など残しておく。 修正する箇所はこの部分。
Function sGetConvertCrf(piMode)
Dim vMode , vCrf
vCrf = cNULL
vMode = Trim(piMode)
If IsNumeric(vMode) Then
vMode = CLng(vMode) \ 10
Select Case vMode
Case 0 : vCrf = 25
Case 1 : vCrf = 28
Case 2 : vCrf = 31
Case 3 : vCrf = 34
Case 4 : vCrf = 37
End Select
End if
sGetConvertCrf = vCrf
End Function
↓↓↓Case 0 ~ Case 4 での vCrf への設定値を 10画質寄り変更してみる。
↓↓↓※値が小さくなるほど画質アップです。
Function sGetConvertCrf(piMode)Dim vMode , vCrf
vCrf = cNULL
vMode = Trim(piMode)
If IsNumeric(vMode) Then
vMode = CLng(vMode) \ 10
Select Case vMode
Case 0 : vCrf = 15
Case 1 : vCrf = 18
Case 2 : vCrf = 21
Case 3 : vCrf = 24
Case 4 : vCrf = 27
End Select
End if
sGetConvertCrf = vCrf
End Function
変更した値が反映されています。 修正前と同じ入力値でも適用される品質が変わります。
品質値の大元を修正したので、ここを利用している表示や自動判定などの品質を利用している部分全て変更となります。
もちろん画質がアップすると生成されるファイルサイズが大きくなります。 ただまぁ、品質を上げ過ぎてもファイルサイズばかりでかくなって画質変わらない気が、、、これはFfmpegに渡す別のパラメータの問題だろーなー
※実は、品質値の変更がサンプルに反映されるようにしたのが、今回のコード修正でした。
0 件のコメント:
コメントを投稿