goo blog サービス終了のお知らせ 

OnePassの備忘録

日々のメモ

Gentoo Linuxで、qsv環境でav1ファイルへffmpegでエンコード

2024-12-28 23:05:29 | Weblog

以下、手順です。

入力ファイルを、input.mp4、出力ファイルをoutput.mp4の場合

  1. qsvのUSEフラグを有効にして、ffmpegをemerge
  2. エンコードコマンド ffmpeg -y -i input.mp4 -pix_fmt p010le -vcodec av1_qsv -preset veryslow -q:v 163 -extbrc 1 -look_ahead_depth 40 -adaptive_i 1 -adaptive_b 1 -b_strategy 1 -bf 7 -acodec libfdk_aac -profile:a aac_he_v2 -ab 16k -ar 24000 -ac 2 -afterburner 1 output.mp4

なお、「-q:v」の値を変更して画質を調整できます。

手元の動画では、「-q:v 163」でssimが0.98になりました。

Intel A380環境で「-q:v 163」の実行例

  1. 圧縮後のファイルサイズ 24M → 2.5M
  2. 60秒の動画のエンコード時間 8秒

rav1eのオプション

2023-12-31 18:49:11 | Weblog

libaom1でエンコード時にエラーが発生するにようになったため、rav1eでのエンコード時のオプションを調査しました。

rav1eを使うのは、色深度に12bitを使いたいがためです。

結果、tilesオプションを変更することでエンコード時間を短縮できました。

処理結果

qp speed tile ssim:y ssim:u ssim:v ssim:all size real real_s
165 4 4 0.982961 0.992022 0.993489 0.986226 2722680 814.831 13m34.831s
165 4 90 0.98287 0.99209 0.993517 0.986181 3450375 269.478 4m29.478s

 

エンコード時に使用したファイル

----------------------------------------------------------------------------------------------------------------

  Duration: 00:01:00.03, start: 0.000000, bitrate: 3331 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 3196 kb/s, 29.97 fps, 29.97 tbr, 30k tbn (default)

----------------------------------------------------------------------------------------------------------------

 

エンコードに使用したシェル

----------------------------------------------------------------------------------------------------------------

SH=`basename $0`

INPUT=$1

QP=$2

SPEED=$3

TILE=$4

FTMP0=`date "+%Y%m%d-%H%M%S"`

cp ${0} ${SH}${FTMP0}

MKV="${INPUT}.rav1e.C${QP}.S${SPEED}.t${TILE}.${FTMP0}.mp4"

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "${MKV}"

FFM="${FFM} -pix_fmt yuv420p12le"
OPT="${OPT} -qp ${QP}"

OPT="${OPT} -tiles ${TILE}"

OPT="${OPT} -speed ${SPEED}"

( time ffmpeg -y -i "$1" ${FFM} -c:v librav1e \
${OPT} \
${AUDIO} \
"${MKV}" ) \
>> ${SH}${FTMP0} 2>&1

echo "---------------------------------"
echo "ssim"
echo "---------------------------------"
ffmpeg -hide_banner -i "${MKV}" -i "$1" -filter_complex ssim -an -f null - \
 2>> ${SH}${FTMP0}

ls -l "${MKV}" >> ${SH}${FTMP0}
cat ${SH}${FTMP0}

----------------------------------------------------------------------------------------------------------------


VMAFが93以上となるように、GentooLinuxのlibaom、rav1e、svt-av1でAV1ファイル(12bit色深度)エンコード

2021-08-28 08:31:56 | Weblog

VMAFが93以上となるAV1ファイルの生成手順。

エンコード結果

エンコーダー

バージョン

preset(Speed)

CRF(QP)

色深度

処理時間

ファイルサイズ

VMAF

SSIM

libaom

3.1.1

8

45

12

5m15.450s

4,252,103

93.300543

0.991452

rav1e

0.5.0

10

110

12

40m54.808s

6,528,460

93.870259

0.991529

SVT-AV1

0.8.6

8

45

10

3m17.664s

6,385,494

93.983123

0.991797

エンコード時の注意点

 ・SVT-AV1はメモリを大量に使用するので、エンコード途中で異常終了した場合はスワップを追加する必要があった。

インストール

 ・環境は、GentooLinux

 ・svt-av1はソースからインストール

 ・USEフラグに、「libaom」と「rav1e」を設定して、「emerge ffmpeg」を実行

 ・rav1eは、12bitに対応するバージョン(0.5.0)を導入するため、「emerge rav1e-9999.ebuild」を実行

エンコード前の動画の情報

 ・ffprobeで取得

  Duration: 00:01:00.03, start: 0.000000, bitrate: 3331 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3196 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)

 

エンコードのパラメータ

  libaom-AV1のエンコードのコマンド

--------------------------------------------------------------------------------------------------------------------------------

SH=`basename $0`

INPUT=$1
CRF=$2

FTMP0=`date "+%Y%m%d-%H%M%S"`_$$
FTMP="~/tmp/${FTMP0}"

MKV="${INPUT}.libaom.CRF${CRF}.${FTMP0}.mp4"
AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "

AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "${MKV}"

FFM="${FFM} -pix_fmt yuv420p12le"
OPT="${OPT} -c:v libaom-av1 -strict 2"

OPT="${OPT} -crf ${CRF}"

( time ffmpeg -y -i "$1" ${FFM} \
${OPT} \
-cpu-used 4 \
${AUDIO} \
"${MKV}" ) \
>> ${SH}${FTMP0} 2>&1

--------------------------------------------------------------------------------------------------------------------------------

 

 rav1eのエンコードのコマンド

--------------------------------------------------------------------------------------------------------------------------------

SH=`basename $0`

INPUT=$1

QP=$2

FTMP0=`date "+%Y%m%d-%H%M%S"`
FTMP="~/tmp/${FTMP0}"

cp ${SH} ${SH}${FTMP0}

MKV="${INPUT}.rav1e.C${QP}.mp4"

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "${MKV}"

FFM="${FFM} -pix_fmt yuv420p12le"

OPT="${OPT} -qp ${QP}"

OPT="${OPT} -tile-rows 4"

OPT="${OPT} -tile-columns 4"

( time ffmpeg -y -i "$1" ${FFM} -c:v librav1e \
${OPT} \
-speed 10 \
${AUDIO} \
"${MKV}" ) \
>> ${SH}${FTMP0} 2>&1

--------------------------------------------------------------------------------------------------------------------------------

 SVT-AV1のエンコードのコマンド

--------------------------------------------------------------------------------------------------------------------------------

SH=`basename $0`

INPUT=$1
CRF=$2

FTMP0=`date "+%Y%m%d-%H%M%S"`
FTMP="~/tmp/${FTMP0}"

cp ${SH} ${SH}${FTMP0}

MKV="${INPUT}.libsvt2.CRF${CRF}.${FTMP0}.mp4"

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "${MKV}"

FFM="${FFM} -pix_fmt yuv420p12le"

OPT="${OPT} -c:v libsvtav1 -strict 2"

OPT="${OPT} -qp ${CRF}"

( time ~/bin/ffmpeg -y -i "$1" ${FFM} \
${OPT} \
${AUDIO} \
"${MKV}" ) \
>> ${SH}${FTMP0} 2>&1

--------------------------------------------------------------------------------------------------------------------------------


GentooLinuxに、SVT-AV1とVMAFに対応したFFmpegをインストールする手順

2021-08-28 06:26:55 | Weblog

GentooLinuxに、SVT-AV1とVMAFに対応するFFmpegをインストールする手順

・「emerge ffmpeg svt-av1」を実行して、FFmpegとSVT-AV1のインストールに必要なツールをインストール

・「Compiling FFmpeg on Ubuntu / Debian / Mint」に従って、ソースからlibvmaf、svt-av1、FFmpegを導入

 libvmafを導入時、

 「meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=static .. --prefix "$HOME/ffmpeg_build" --bindir="$HOME/bin" --libdir="$HOME/ffmpeg_build/lib" && \」でエラーが発生するので

 「meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=static .. --prefix "$HOME/ffmpeg_build" --bindir="bin" --libdir="$HOME/ffmpeg_build/lib" && \」で実行

・「~/bin」に作成されたffmpegを実行


GentooLinuxでお手軽に導入できるlibaom-av1とrav1eの2pass処理

2021-01-12 11:35:50 | Weblog

SSIMが0.98となるAV1ファイルの生成手順。

エンコーダーは、GentooLinuxで手軽に導入できるlibaom-av1とrav1eを採用。

画質を上げたくて、2pass処理で処理。

インストール

 ・USEフラグに、「libaom」と「rav1e」を設定して、「emerge ffmpeg」を実行

エンコード前の動画の情報

 ・ffprobeで取得

  Duration: 00:01:00.03, start: 0.000000, bitrate: 3331 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3196 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)

エンコード結果

 ・libaom-av1の2pass

  処理時間:

   real 19m22.198s
   user 30m38.319s
   sys 0m4.159s

  エンコード後の画像のビットレート:357 kb/s

  エンコード後のファイルサイズ:2,694,454

  SSIM:[Parsed_ssim_0 @ 0x56168ef95700] SSIM Y:0.981769 (17.391922) U:0.989772 (19.902020) V:0.989374 (19.736308) All:0.984370 (18.060516)


 ・rav1eの2pass

  処理時間:

   real 23m16.869s
   user 204m59.578s
   sys 0m49.470s
  エンコード後の画像のビットレート:602 kb/s

  エンコード後のファイルサイズ:4,540,149

  [Parsed_ssim_0 @ 0x559a0c6d6080] SSIM Y:0.975169 (16.050014) U:0.989414 (19.752691) V:0.990995 (20.455217) All:0.980181 (17.029115)

エンコーダーのバージョン

 libaom-AV1

  [libaom-av1 @ 0x56039b192f40] v2.0.0

 rav1e

  rav1e 0.3.5

エンコードのパラメータ

  libaom-AV1の2passエンコードのコマンド

--------------------------------------------------------------------------------------------------------------------------------

SH=`basename $0`

INPUT=$1
# CRF=51
# All:0.977533
# CRF=50
# All:0.983888
# CRF=40
# All:0.980969
# CRF=45
# All:0.980297
# CRF=46
# All:0.979657
# CRF=47
CRF=46

FTMP0=`date "+%Y%m%d%H%M%S"`
FTMP="${FTMP0}"

cp ${SH} ${SH}${FTMP0}

MKV="${INPUT}.libaom2.C${CRF}.${FTMP0}.mp4"

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "${MKV}"

# FFM="${FFM} -pix_fmt yuv420p10le"
FFM="${FFM} -pix_fmt yuv420p12le"
# FFM="${FFM} -b:v ${RATE}"
# FFM="${FFM} -s 768x432"
# FFM="${FFM} -vframes 10"
FFM="${FFM} -passlogfile ${FTMP}"
# FFM="${FFM} -loglevel quiet"

# b
# ビットレートターゲットをビット/秒で設定します。デフォルトでは、これは可変ビットレートモードを使用します。場合maxrate そして minrate も同じ値に設定されている場合は、固定ビットレートモードが使用されます。 crf も設定されている場合は、制約付き品質モードが使用されます。
OPT="${OPT} -b:v 0"

# g keyint_min
# キーフレームの配置を設定します。GOPサイズは、キーフレーム間の最大距離を設定します。ゼロの場合、出力ストリームはイントラのみになります。最小距離は、GOPサイズと同じでない限り無視されます。同じ場合、キーフレームは常に一定の間隔で表示されます。デフォルトでは設定されていないため、このオプションがないと、ライブラリはキーフレームを配置する場所を完全に自由に選択できます。

# qmin qmax
# 最小/最大量子化値を設定します。有効な範囲は0〜63です(警告:これは、AV1で実際に使用されるクォンタイザー値と一致しません。4で除算して、実際のクォンタイザー値をこの範囲にマップします)。デフォルトは最小/最大(制約なし)です。

# minrate maxrate bufsize rc_init_occupancy
# レート制御バッファリングパラメータを設定します。設定されていない場合は使用されません-デフォルトは制約のない可変ビットレートです。

# スレッド
# エンコード中に使用するスレッドの数を設定します。これには、 タイル または 行-mt指定された数のスレッドを実際に完全に使用するように設定するオプションもあります。デフォルトは、ホストマシンでサポートされているハードウェアスレッドの数です。

# プロフィール
# エンコーディングプロファイルを設定します。デフォルトでは、入力のビット深度とクロマサブサンプリングに一致するプロファイルを使用します。

# ラッパーには、いくつかの特定のオプションもあります。

# CPU使用済み
# 品質とエンコード速度のトレードオフを設定します。有効な範囲は0〜8で、数値が大きいほど速度が速く、品質が低いことを示します。デフォルト値は1で、低速で高品質になります。
OPT="${OPT} -cpu-used 8"

# auto-alt-ref
# 代替参照フレームの使用を有効にします。デフォルトは、ライブラリの内部デフォルトです。
OPT="${OPT} -auto-alt-ref 1"

# arnr-max-frames(フレーム)
# altrefノイズリダクションの最大フレーム数を設定します。デフォルトは-1です。
OPT="${OPT} -arnr-max-frames 7"

# arnr-strength(strength)
# altrefノイズリダクションフィルターの強度を設定します。範囲は-1〜6です。デフォルトは-1です。
OPT="${OPT} -arnr-strength 6"

# aq-mode(aq-mode)
# 適応量子化モードを設定します。可能な値:
# 'なし(0)'
# 無効。
# '分散(1)'
# 分散ベース。
# '複雑さ(2)'
# 複雑さベース。
# 'サイクリック(3)'
# 周期的な更新。
OPT="${OPT} -aq-mode 2"

# tune(tune)
# エンコーダーが調整される歪みメトリックを設定します。デフォルトはpsnrです。
# 'psnr(0)'
# 'ssim(1)'

# lag-in-frames
# 先読みの目的で、エンコーダが一度に飛行し続けることができるフレームの最大数を設定します。デフォルトは、ライブラリの内部デフォルトです。
OPT="${OPT} -lag-in-frames 5"

# エラー回復力
# エラー回復機能を有効にします。

# デフォルト
# フレーム全体の損失に対する回復力を向上させます。

# デフォルトでは有効になっていません。

# crf
# 一定品質(ビットレートターゲットなし)モードと制約付き品質(最大ビットレートターゲットあり)モードの品質/サイズのトレードオフを設定します。有効な範囲は0〜63で、数値が大きいほど品質が低く、出力サイズが小さいことを示します。設定されている場合にのみ使用されます。デフォルトでは、ビットレートターゲットのみが使用されます。
OPT="${OPT} -crf ${CRF}"

# 静的しきい値
# ブロックに変更しきい値を設定します。このしきい値を下回ると、エンコーダーによってスキップされます。非負の整数として任意の単位で定義され、デフォルトはゼロです(ブロックはスキップされません)。

# ドロップスレッショルド
# レート制御境界に近いときにフレームをドロップするためのしきい値を設定します。ターゲットバッファのパーセンテージとして定義されます-レート制御バッファがこのパーセンテージを下回ると、フレームはしきい値を超えて補充されるまでドロップされます。デフォルトはゼロです(フレームはドロップされません)。

# denoise-noise-level(レベル)
# 粒子合成のために除去されるノイズの量。このオプションが設定されていないか、0に設定されていない場合、粒子合成は無効になります。

OPT="${OPT} -denoise-noise-level 25"

# denoise-block-size(ピクセル)
# 穀物合成のノイズ除去に使用されるブロックサイズ。設定されていない場合、AV1コーデックはデフォルト値の32を使用します。

# アンダーシュート-pct(pct)
# ターゲットビットレートのデータレートアンダーシュート(最小)パーセンテージを設定します。範囲は-1から100です。デフォルトは-1です。

# オーバーシュート-pct(pct)
# ターゲットビットレートのデータレートオーバーシュート(最大)パーセンテージを設定します。範囲は-1〜1000です。デフォルトは-1です。

# minsection-pct(pct)
# ターゲットビットレートからのGOPビットレートの最小パーセンテージ変動。minsection-pctが設定されていない場合、libaomencラッパーは次のように計算します(minrate * 100 / bitrate)。範囲は-1〜100です。デフォルトは-1(未設定)です。

# maxsection-pct(pct)
# ターゲットビットレートからのGOPビットレートの最大変化率。maxsection-pctが設定されていない場合、libaomencラッパーは次のように計算します(maxrate * 100 / bitrate)。範囲は-1〜5000です。デフォルトは-1(未設定)です。

# frame-parallel(ブール値)
# フレーム並列デコード機能を有効にします。デフォルトはtrueです。
OPT="${OPT} -frame-parallel true"

# タイル
# 入力ビデオをエンコードするタイルの数を、列x行として設定します。
# 数値が大きいほど、エンコードとデコードの両方で並列処理が大きくなりますが、コーディング効率が低下する可能性があります。デフォルトでは、入力ビデオのサイズに必要なタイルの最小数になります(これは、4K以下のサイズの場合は1x1(つまり、単一のタイル)です)。
# OPT="${OPT} -tiles 8x8"

# タイル-列タイル-行
# タイルの数を、タイルの行と列の数のlog2として設定します。libvpx / VP9との互換性のために提供されています。
# OPT="${OPT} -tile-columns=8 -tile-rows=8"

# row-mt(libaom> = 1.0.0-759-g90a15f4f2が必要)
# 行ベースのマルチスレッドを有効にします。デフォルトでは無効になっています。
OPT="${OPT} -row-mt 1"

# enable-cdef(ブール値)
# 制約付き方向拡張フィルターを有効にします。libaom-av1エンコーダーは、デフォルトでCDEFを有効にします。

 

# enable-restoration(ブール値)
# ループ復元フィルターを有効にします。libaom-av1のデフォルトはtrueです。

# enable-global-motion(ブール値)
# ブロック予測にグローバルモーションの使用を有効にします。デフォルトはtrueです。

 

# enable-intrabc(ブール値)
# ブロック内予測のブロックコピーモードを有効にします。このモードは、画面コンテンツに役立ちます。デフォルトはtrueです。

# enable-rect-partitions(boolean)(libaom> = v2.0.0が必要)
# 長方形のパーティションを有効にします。デフォルトはtrueです。

# enable-1to4-partitions(boolean)(libaom> = v2.0.0が必要)
# 1:4/4:1パーティションを有効にします。デフォルトはtrueです。

# enable-ab-partitions(boolean)(libaom> = v2.0.0が必要)
# ABシェイプパーティションを有効にします。デフォルトはtrueです。

# enable-angle-delta(boolean)(libaom> = v2.0.0が必要)
# 角度デルタイントラ予測を有効にします。デフォルトはtrueです。

# enable-cfl-intra(boolean)(libaom> = v2.0.0が必要)
# 輝度イントラ予測から予測された彩度を有効にします。デフォルトはtrueです。

# enable-filter-intra(boolean)(libaom> = v2.0.0が必要)
# フィルタイントラプレディクタを有効にします。デフォルトはtrueです。

# enable-intra-edge-filter(boolean)(libaom> = v2.0.0が必要)
# イントラエッジフィルターを有効にします。デフォルトはtrueです。

# enable-smooth-intra(boolean)(libaom> = v2.0.0が必要)
# スムーズなイントラ予測モードを有効にします。デフォルトはtrueです。

# enable-paeth-intra(boolean)(libaom> = v2.0.0が必要)
# イントラ予測でpaeth予測子を有効にします。デフォルトはtrueです。

# enable-palette(boolean)(libaom> = v2.0.0が必要)
# パレット予測モードを有効にします。デフォルトはtrueです。

# enable-flip-idtx(boolean)(libaom> = v2.0.0が必要)
# FLIPADST_DCT、DCT_FLIPADST、FLIPADST_FLIPADST、ADST_FLIPADST、FLIPADST_ADST、IDTX、V_DCT、H_DCT、V_ADST、H_ADST、V_FLIPADST、H_FLIPADSTを含む拡張変換タイプを有効にします。デフォルトはtrueです。

# enable-tx64(boolean)(libaom> = v2.0.0が必要)
# 64ポイント変換を有効にします。デフォルトはtrueです。

# reduce -tx-type-set(boolean)(libaom> = v2.0.0が必要)
# 変換タイプの削減されたセットを使用します。デフォルトはfalseです。

# use-intra-dct-only(boolean)(libaom> = v2.0.0が必要)
# DCTはイントラモードにのみ使用してください。デフォルトはfalseです。

# use-inter-dct-only(boolean)(libaom> = v2.0.0が必要)
# DCTはINTERモードにのみ使用してください。デフォルトはfalseです。

# use-intra-default-tx-only(boolean)(libaom> = v2.0.0が必要)
# デフォルト変換は、イントラモードにのみ使用してください。デフォルトはfalseです。

# enable-ref-frame-mvs(boolean)(libaom> = v2.0.0が必要)
# 時間的mv予測を有効にします。デフォルトはtrueです。

# enable-reduced-reference-set(boolean)(libaom> = v2.0.0が必要)
# 単一および複合参照の削減されたセットを使用します。デフォルトはfalseです。

# enable-obmc(boolean)(libaom> = v2.0.0が必要)
# obmcを有効にします。デフォルトはtrueです。

# enable-dual-filter(boolean)(libaom> = v2.0.0が必要)
# デュアルフィルターを有効にします。デフォルトはtrueです。

# enable-diff-wtd-comp(boolean)(libaom> = v2.0.0が必要)
# 差分加重化合物を有効にします。デフォルトはtrueです。

# enable-dist-wtd-comp(boolean)(libaom> = v2.0.0が必要)
# 距離加重コンパウンドを有効にします。デフォルトはtrueです。

# enable-onesided-comp(boolean)(libaom> = v2.0.0が必要)
# 片面コンパウンドを有効にします。デフォルトはtrueです。

# enable-interinter-wedge(boolean)(libaom> = v2.0.0が必要)
# インターインターウェッジコンパウンドを有効にします。デフォルトはtrueです。

# enable-interintra-wedge(boolean)(libaom> = v2.0.0が必要)
# イントラウェッジコンパウンドを有効にします。デフォルトはtrueです。

# enable-masked-comp(boolean)(libaom> = v2.0.0が必要)
# マスクされた化合物を有効にします。デフォルトはtrueです。

# enable-interintra-comp(boolean)(libaom> = v2.0.0が必要)
# 化合物間を有効にします。デフォルトはtrueです。

# enable-smooth-interintra(boolean)(libaom> = v2.0.0が必要)
# スムーズインターイントラモードを有効にします。デフォルトはtrueです。

ffmpeg -y -i "$1" ${FFM} -c:v libaom-av1 -strict experimental \
${OPT} \
-pass 1 -an -f matroska /dev/null \
&& ffmpeg -y -i "$1" ${FFM} -c:v libaom-av1 -strict experimental \
${OPT} ${OPT2} \
-pass 2 \
${AUDIO} \
"${MKV}"

echo "---------------------------------"
echo "ssim"
echo "---------------------------------"
ffmpeg -hide_banner -i "$1" -i "${MKV}" -filter_complex ssim -an -f null -
# ffprobe -hide_banner "${MKV}"
# ls -l "${MKV}"

rm "${FTMP}-0.log"

--------------------------------------------------------------------------------------------------------------------------------

 

rav1eの2passエンコードのコマンド

--------------------------------------------------------------------------------------------------------------------------------

SH=`basename $0`

INPUT=$1
# All:0.967195
# QP=200
# All:0.990386
# QP=100
# All:0.983431
# QP=150
# All:0.975644
# QP=180
# All:0.981267
# QP=160
# All:0.978363
# QP=170
# All:0.979740
# QP=165
# All:0.979047
# QP=166

# All:0.980181
# QP=163
# All:0.979636
# QP=164

QP=163


FTMP0=`date "+%Y%m%d%H%M%S"`
FTMP="${FTMP0}"

cp ${SH} ${SH}${FTMP0}

MKV="${INPUT}.librav1e.C${QP}.${FTMP0}.mp4"

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "${MKV}"

# FFM="${FFM} -pix_fmt yuv420p10le"
FFM="${FFM} -pix_fmt yuv420p12le"
FFM="${FFM} -passlogfile ${FTMP}"
# FFM="${FFM} -b:v 0" # NG
FFM="${FFM} -b:v 4000k"

# qmax
# ビットレートモードを使用するときに使用する最大量子化器を設定します。

# qmin
# ビットレートモードを使用するときに使用する最小量子化器を設定します。

# qp
# 量子化モードを使用して、指定された量子化器(0〜255)でエンコードします。
OPT="${OPT} -qp ${QP}"

# speed
# エンコードする速度プリセット(0-10)を選択します。
OPT="${OPT} -speed 10"

# タイル
# エンコードするタイルの数を選択します。
# OPT="${OPT} -tiles 8x8"

# tile-rows
# エンコードするタイルの行数を選択します。
OPT="${OPT} -tile-rows 16"

# tile-columns
# エンコードするタイルの列数を選択します。
OPT="${OPT} -tile-columns 16"

# rav1eへパラメータ設定
# OPT="${OPT} -rav1e-params speed=8:tile-rows=8:tile-cols=8"
OPT="${OPT} -rav1e-params speed=8"

ffmpeg -y -i "$1" ${FFM} -c:v librav1e \
${OPT} \
-pass 1 -an -f matroska /dev/null \
&& ffmpeg -y -i "$1" ${FFM} -c:v librav1e \
${OPT} \
-pass 2 \
${AUDIO} \
"${MKV}"

echo "---------------------------------"
echo "ssim"
echo "---------------------------------"
ffmpeg -hide_banner -i "$1" -i "${MKV}" -filter_complex ssim -an -f null -
# ffprobe -hide_banner "${MKV}"
# ls -l "${MKV}"

rm "${FTMP}-0.log"

--------------------------------------------------------------------------------------------------------------------------------

 


Gentoo Linuxのpostfixにrspamdを導入

2020-11-16 18:19:12 | Weblog

昔、導入したときの手順があったのですが色々と変わっていたので改めて

 

・Gentoo Linuxのpostfixにrspamとredisを導入

 emerge -uDN rspamd

 emerge -uDN dev-db/redis


・rspamとmilterで連携するため、/etc/postfix/main.cfに以下の行を追加

 smtpd_milters = inet:localhost:11332
 milter_default_action = accept
 milter_protocol = 6

・rspamでチェックした結果をメールのヘッダーに追加するため以下のファイルを作成

/etc/rspamd/local.d/actions.conf
 reject = 150; # Reject when reaching this score スパムメールも残すため
 add_header = 6; # Add header when reaching this score このスコア以上は、ヘッダーにスパムであると追加
 greylist = 4; # Apply greylisting when reaching this score (will emit `soft reject action`) 怪しいファイル?

/etc/rspamd/local.d/milter_headers.conf
 extended_spam_headers = true; # これがないとrspamdが処理しているか不安で

 

/etc/rspamd/local.d/redis.conf

write_servers = "localhost";
read_servers = "localhost";

 

/etc/rspamd/local.d/worker-controller.inc

password="" # webUIのパスワード

enable_password=""

 

/etc/rspamd/local.d/worker-normal.inc

bind_socket = "localhost:11333"; # rspamdの待受ポート

 

/etc/rspamd/local.d/worker-proxy.inc
milter = yes; # Enable milter mode
timeout = 120s; # Needed for Milter usually
upstream "local" {
  default = yes; # Self-scan upstreams are always default
  self_scan = yes; # Enable self-scan
}
count = 4; # Spawn more processes in self-scan mode
max_retries = 5; # How many times master is queried in case of failure
discard_on_reject = false; # Discard message instead of rejection
quarantine_on_reject = false; # Tell MTA to quarantine rejected messages
spam_header = "X-Spam"; # Use the specific spam header
reject_message = "Spam message rejected"; # Use custom rejection message

 

・redisの待受

/etc/redis.conf

 bind 127.0.0.1 ::1

・redis、rspamの起動とpostfixの再起動

/etc/init.d/redis start

/etc/init.d/rspamd start
/etc/init.d/postfix reload

・rspamの学習コマンド

/usr/bin/rspamc -c bayes learn_spam ${SPAM_MAIL}/ &
/usr/bin/rspamc -c bayes learn_ham ${HAM_MAIL}/ &

・学習結果は以下のファルダに作成されます。

/var/lib/rspamd/


ssimが0.98以上になるlibaom-av1の2passのビットレート設定で、x265とSSIMを比較

2020-05-07 02:50:25 | Weblog

動画を最も小さくしたくて、libaom-av1の2passでSSIMが0.98以上になるビットレート設定を調査しました。

また、同一のビットレートになるように設定した、以下のエンコード処理毎のSSIMも調査しました。

・libaom-av1の1pass

・x265の2pass

 

処理して気づいたのですが、低ビットレートでもav1は画像が破綻しないように思われます。

あと、iibaom-av1の2passエンコードで変換元の動画の解像度が不適切な場合に「pass2_strategy.c:2729: av1_get_second_pass_params: Assertion `gf_group->index < gf_group->size' failed.」というエラーで処理が中断しました。

 

・エンコード前の動画の情報(ffprobeで取得)

 Duration: 00:01:00.03, start: 0.000000, bitrate: 8860 kb/s
  Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv420p, 768x432 [SAR 1:1 DAR 16:9], 8746 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)

 

・エンコード結果

 libaom-av1の2pass

  処理時間:real 5m46.328s

  エンコード後の画像のビットレート:78 kb/s

  エンコード後のファイルサイズ:731,290

  SSIM:[Parsed_ssim_0 @ 0x55e3c27efd40] SSIM Y:0.978957 (16.768986) U:0.987823 (19.144506) V:0.986012 (18.542532) All:0.981611 (17.354356)

 

 libaom-av1の1pass

  処理時間:real 5m42.752s

  エンコード後の画像のビットレート:84 kb/s

  エンコード後のファイルサイズ:779,513

  SSIM:[Parsed_ssim_0 @ 0x55e289f64bc0] SSIM Y:0.974213 (15.885940) U:0.987351 (18.979489) V:0.984051 (17.972579) All:0.978042 (16.584098)

 

 x265の2pass

  処理時間:real 8m14.595s

  エンコード後の画像のビットレート:98 kb/s

  エンコード後のファイルサイズ:900,005

  SSIM:[Parsed_ssim_0 @ 0x5570a7612740] SSIM Y:0.952217 (13.207301) U:0.970539 (15.307465) V:0.970760 (15.340239) All:0.958361 (13.805039)

 

・エンコーダーのバージョン

 libaom-AV1

  [libaom-av1 @ 0x55e3c0fc2000] 1.0.0-errata1-avif-810-g60dd0f988

 

 x265

  x265 [info]: HEVC encoder version 3.2.1+1-b5c86a64bbbe
  x265 [info]: build info [Linux][GCC 9.3.0][64 bit] 8bit+10bit+12bit

 

・エンコードのパラメータ

  libaom-AV1の2passエンコードのコマンド

--------------------------------------------------------------------------------------------------------------------------------

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

BRATE="70k"
MKV="$1".libaom2.${BRATE}.mp4

# OPT="${OPT} -pix_fmt yuv420p10le"
OPT="${OPT} -pix_fmt yuv420p12le"

OPT="${OPT} -tiles 1x1"
OPT="${OPT} -row-mt 1"
OPT="${OPT} -b:v ${BRATE}"
OPT="${OPT} -cpu-used 3"
OPT="${OPT} -aq-mode 3"
OPT="${OPT} -arnr-strength 6"
OPT="${OPT} -row-mt 1"
OPT="${OPT} -threads 14"

 

ffmpeg -y -i "$1" ${FFM} -c:v libaom-av1 -strict experimental \
${OPT} \
-pass 1 -an -f matroska /dev/null \
&& ffmpeg -y -i "$1" ${FFM} -c:v libaom-av1 -strict experimental \
${OPT} \
-pass 2 \
${AUDIO} \
"${MKV}"

ffmpeg -i "$1" -i "${MKV}" -filter_complex ssim -an -f null -
ls -l "${MKV}"

--------------------------------------------------------------------------------------------------------------------------------

 

libaom-AV1の1passエンコードのコマンド

--------------------------------------------------------------------------------------------------------------------------------

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

BRATE="40k"
MKV="$1".libaom."${BRATE}".mp4

# OPT="${OPT} -pix_fmt yuv420p10le"
OPT="${OPT} -pix_fmt yuv420p12le"

OPT="${OPT} -c:v libaom-av1"

OPT="${OPT} -tiles 1x1"
OPT="${OPT} -cpu-used 3"
OPT="${OPT} -b:v ${BRATE}"
OPT="${OPT} -aq-mode 3"
OPT="${OPT} -arnr-strength 6"
OPT="${OPT} -denoise-block-size 1"

ffmpeg -y -i "$1" \
  ${OPT} \
  -strict experimental \
  -row-mt 1 \
  -threads 14 \
  ${AUDIO} \
  "${MKV}"

ffmpeg -i "$1" -i "${MKV}" -filter_complex ssim -an -f null -
ls -l "${MKV}"

--------------------------------------------------------------------------------------------------------------------------------

 

x265の2passエンコードのコマンド

--------------------------------------------------------------------------------------------------------------------------------

# init
FTMP0=`date "+%Y%m%d%H%M%S"`
FTMP="./${FTMP0}"
VFRAMES=$2

BRATE="110k"
MKV="$1".x265."${BRATE}".mp4

OPT="${OPT} -af dynaudnorm"

# OPT="${OPT} -pix_fmt yuv420p10le"
OPT="${OPT} -pix_fmt yuv420p12le"

OPT="${OPT} -c:v libx265 -b:v ${BRATE}"

OPT="${OPT} -preset veryslow"
# OPT="${OPT} -preset placebo"
OPT="${OPT} -x265-params stats=${FTMP}"
OPT="${OPT}:analysis-reuse-file=${FTMP}.dat"
# OPT="${OPT}:pmode=1:pme=1"
OPT="${OPT}:multi-pass-opt-analysis=1"
OPT="${OPT}:multi-pass-opt-distortion=1"
OPT="${OPT}:rd-refine=1"
OPT="${OPT}:subme=7"
OPT="${OPT}:rc-lookahead=250"
OPT="${OPT}:ssim-rd=1"
OPT="${OPT}:opt-cu-delta-qp=1"
OPT="${OPT}:aq-motion=1"
OPT="${OPT}:aq-mode=3"
OPT="${OPT}:bframes=16"
OPT="${OPT}:dynamic-refine=1:refine-intra=4"
OPT="${OPT}:tu-inter-depth=4:tu-intra-depth=4"
OPT="${OPT}:max-merge=5"
# OPT="${OPT}:pools=32"

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "${MKV}"

ffmpeg -y -i "$1" -pass 1 \
${OPT}:pass=1 \
-an -f mp4 /dev/null && \
ffmpeg -y -i "$1" -pass 2 \
${OPT}:pass=2 \
${AUDIO} \
-f mp4 "${MKV}"

rm "${FTMP}"
rm "${FTMP}.dat"
rm "${FTMP}.cutree"

ffmpeg -i "$1" -i "${MKV}" -filter_complex ssim -an -f null -

--------------------------------------------------------------------------------------------------------------------------------

 


x265とlibaom-AV1で、同じようなサイズと処理時間になるようにエンコード実行してSSIMを比較

2020-05-01 22:27:05 | Weblog

libaom-AV1のエンコード処理が早くなったみたいなので、SSIMを比較しました。

ただ、2passエンコードはエラーになるので x265は2pass libaom-AV1は1passで処理した結果を比較してます。

 

・エンコード前の動画の情報(ffprobeで取得)

    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 704x400 [SAR 1:1 DAR 44:25], 4134 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)

 

・エンコード結果

 x265

  処理時間:real 7m33.135s

  ファイルサイズ:823,979

  SSIM:[Parsed_ssim_0 @ 0x55a5995c54c0] SSIM Y:0.976640 (16.315310) U:0.980143 (17.020788) V:0.985460 (18.374241) All:0.978694 (16.714957)

 libaom-AV1

  処理時間:real 3m30.543s

  ファイルサイズ:801,592

  SSIM:[Parsed_ssim_0 @ 0x562c7cdb6400] SSIM Y:0.986202 (18.601769) U:0.991233 (20.571444) V:0.993023 (21.563563) All:0.988177 (19.272819)

 

x265のバージョン

--------------------------------------------------------------------------------------------------------------------------------

x265 [info]: HEVC encoder version 3.2.1+1-b5c86a64bbbe
x265 [info]: build info [Linux][GCC 9.3.0][64 bit] 8bit+10bit+12bit

--------------------------------------------------------------------------------------------------------------------------------

 

libaom-AV1のバージョン

--------------------------------------------------------------------------------------------------------------------------------

[libaom-av1 @ 0x556478ba6000] 1.0.0-errata1-avif-732-g315c196dd

--------------------------------------------------------------------------------------------------------------------------------

 

x265の2passエンコードは以下のコマンドで

--------------------------------------------------------------------------------------------------------------------------------

# init
FTMP0=`date "+%Y%m%d%H%M%S"`
FTMP="${FTMP0}"

VFRAMES=$2

OPT="${OPT} -af dynaudnorm"

# OPT="${OPT} -pix_fmt yuv420p10le"
OPT="${OPT} -pix_fmt yuv420p12le"
# OPT="${OPT} -vframes ${VFRAMES}"
# OPT="${OPT} -s 704x396 -aspect 16:9"
OPT="${OPT} -c:v libx265 -b:v 250k"
OPT="${OPT} -preset veryslow"
# OPT="${OPT} -preset placebo"
OPT="${OPT} -x265-params stats=${FTMP}"
OPT="${OPT}:analysis-reuse-file=${FTMP}.dat"
# OPT="${OPT}:pmode=1:pme=1"
OPT="${OPT}:multi-pass-opt-analysis=1"
OPT="${OPT}:multi-pass-opt-distortion=1"
OPT="${OPT}:rd-refine=1"
OPT="${OPT}:subme=7"
OPT="${OPT}:rc-lookahead=250"
# OPT="${OPT}:vbv-maxrate=10000"
# OPT="${OPT}:vbv-bufsize=10000"
OPT="${OPT}:ssim-rd=1"
OPT="${OPT}:opt-cu-delta-qp=1"
OPT="${OPT}:aq-motion=1"
OPT="${OPT}:aq-mode=3"
OPT="${OPT}:bframes=16"
OPT="${OPT}:dynamic-refine=1:refine-intra=4"
OPT="${OPT}:tu-inter-depth=4:tu-intra-depth=4"
OPT="${OPT}:max-merge=5"
# OPT="${OPT}:pools=32"

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "$1.x265.mp4"

ffmpeg -y -i "$1" -pass 1 \
${OPT}:pass=1 \
-an -f mp4 /dev/null && \
ffmpeg -y -i "$1" -pass 2 \
${OPT}:pass=2 \
${AUDIO} \
-f mp4 "$1.x265.mp4"

rm "${FTMP}"
rm "${FTMP}.dat"
rm "${FTMP}.cutree"

--------------------------------------------------------------------------------------------------------------------------------

 

libaom-AV1の1passエンコードは以下のコマンドで

--------------------------------------------------------------------------------------------------------------------------------

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

OPT="${OPT} -tiles 1x1"

OPT="${OPT} -cpu-used 3"

OPT="${OPT} -b:v 80k"

OPT="${OPT} -aq-mode 3"

OPT="${OPT} -arnr-strength 6"

OPT="${OPT} -denoise-block-size 1"

ffmpeg -y -i "$1" \
  -c:v libaom-av1 \
  -strict experimental \
  -row-mt 1 \
  ${OPT} \
  -threads 14 \
  ${AUDIO} \
  ./output.libaom.mp4

--------------------------------------------------------------------------------------------------------------------------------

 


x265とSVT-AV1で、2passエンコードを実行してSSIMで比較

2020-04-25 09:50:09 | Weblog

【追記】

当初、SVT-AV1が有利な状態(解像度が1920X1080のビットレートが250Kの設定だったため、x265は結果ファイルが破綻していました)なので

ビットレートを1,000Kに変更して、再度結果を取得しました。

ただ、解像度が1920X1080のビットレートが250Kの設定でも画像が再生できるSVT-AV1は凄いですね。

 

処理結果は、以下のとおりです。

 

x265のバージョン

--------------------------------------------------------------------------------------------------------------------------------

x265 [info]: HEVC encoder version 3.2.1+1-b5c86a64bbbe
x265 [info]: build info [Linux][GCC 9.3.0][64 bit] 8bit+10bit+12bit

--------------------------------------------------------------------------------------------------------------------------------

 

SVT-AV1のバージョン

--------------------------------------------------------------------------------------------------------------------------------

SVT [version]: SVT-AV1 Encoder Lib v0.8.2-2-g3cbd7689
SVT [build]  : GCC 9.3.0  64 bit

--------------------------------------------------------------------------------------------------------------------------------

 

x265の2passエンコードは以下のコマンドで

--------------------------------------------------------------------------------------------------------------------------------

# init
FTMP0=`date "+%Y%m%d%H%M%S"`
FTMP="${FTMP0}"

VFRAMES=$2

OPT="${OPT} -af dynaudnorm"

# OPT="${OPT} -pix_fmt yuv420p10le"
OPT="${OPT} -pix_fmt yuv420p12le"
# OPT="${OPT} -vframes ${VFRAMES}"
# OPT="${OPT} -s 704x396 -aspect 16:9"
OPT="${OPT} -c:v libx265 -b:v 250k"
OPT="${OPT} -preset veryslow"
# OPT="${OPT} -preset placebo"
OPT="${OPT} -x265-params stats=${FTMP}"
OPT="${OPT}:analysis-reuse-file=${FTMP}.dat"
# OPT="${OPT}:pmode=1:pme=1"
OPT="${OPT}:multi-pass-opt-analysis=1"
OPT="${OPT}:multi-pass-opt-distortion=1"
OPT="${OPT}:rd-refine=1"
OPT="${OPT}:subme=7"
OPT="${OPT}:rc-lookahead=250"
# OPT="${OPT}:vbv-maxrate=10000"
# OPT="${OPT}:vbv-bufsize=10000"
OPT="${OPT}:ssim-rd=1"
OPT="${OPT}:opt-cu-delta-qp=1"
OPT="${OPT}:aq-motion=1"
OPT="${OPT}:aq-mode=3"
OPT="${OPT}:bframes=16"
OPT="${OPT}:dynamic-refine=1:refine-intra=4"
OPT="${OPT}:tu-inter-depth=4:tu-intra-depth=4"
OPT="${OPT}:max-merge=5"
# OPT="${OPT}:pools=32"

AUDIO=" -acodec libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

touch "$1.x265.mp4"

ffmpeg -y -i "$1" -pass 1 \
${OPT}:pass=1 \
-an -f mp4 /dev/null && \
ffmpeg -y -i "$1" -pass 2 \
${OPT}:pass=2 \
${AUDIO} \
-f mp4 "$1.x265.mp4"

rm "${FTMP}"
rm "${FTMP}.dat"
rm "${FTMP}.cutree"

--------------------------------------------------------------------------------------------------------------------------------

 

SVT-AV1の2passエンコードは以下のコマンドで

--------------------------------------------------------------------------------------------------------------------------------

AV1ENC="SVT-AV1/Bin/Release/SvtAv1EncApp"
# AV1ENC="SVT-AV1/Bin/Debug/SvtAv1EncApp"
# AV1ENC="./SvtAv1EncApp"

FTMP0=`date "+%Y%m%d%H%M%S"`
FTMP="${FTMP0}.stat"
FIVF="${FTMP0}.ivf"

VFRAMES=$2

# FFM="${FFM} -vframes $2"
# FFM="${FFM} -t $2"

FFM="${FFM} -pix_fmt yuv420p10le"
# FFM="${FFM} -pix_fmt yuv422p10le" # NG
# FFM="${FFM} -pix_fmt yuv444p10le" # NG
OPT="${OPT} --input-depth 10"
# OPT="${OPT} -color-format EB_YUV444"

# resize
# FFM="${FFM} -s 704x400 -aspect 16:9"
# FFM="${FFM} -s 704x400"
# OPT="${OPT} -w 704 -h 400"
OPT="${OPT} -w 1920 -h 1080"

# エンコーダープリセット[0、1、2、3、4、5、6、7、8] 
# 0 =最高品質、8 =最高速度。エンコーダーの最初のパスに渡され、
# 2番目のパスのME設定を使用してより良いbdRateを実現します

# OPT="${OPT} -enc-mode-2p 3" # OK
# OPT="${OPT} -enc-mode-2p 2" # OK
# OPT="${OPT} -enc-mode-2p 1" # OK
OPT="${OPT} -enc-mode-2p 0" # OK

# OPT="${OPT} --preset 0" # NG
# OPT="${OPT} --preset 2" # NG
# OPT="${OPT} --preset 3" # NG
OPT="${OPT} --preset 4" # OK

OPT="${OPT} --irefresh-type 2"
# # OPT="${OPT} --rc 2 -tbr 250"
OPT="${OPT} --rc 1 --tbr 250"

# エンコーダスレッドが実行される論理プロセッサの数。付録A.1を参照
# OPT="${OPT} --lp 15"
OPT="${OPT} --lp 14"

# enc-decのビット深度(0:lbd [デフォルト]、1:hbd)
OPT="${OPT} --16bit-pipeline 1"

# ハイダイナミックレンジを有効にする(0:オフ[デフォルト]、オン:1)
OPT="${OPT} --enable-hdr 1"

OPT="${OPT} --cdef-mode 5"

OPT="${OPT} --enable-restoration-filtering 1"

OPT="${OPT} --sg-filter-mode 4"

OPT="${OPT} --wn-filter-mode 3"

OPT="${OPT} --enable-mfmv 1"

OPT="${OPT} --enable-redundant-blk 1"

OPT="${OPT} --enable-spatial-sse-fl 1"

OPT="${OPT} --subpel 1"

OPT="${OPT} --enable-over-bndry-blk 1"

OPT="${OPT} --enable-new-nrst-near-comb 1"

OPT="${OPT} --enable-prune-unipred-me 1"

OPT="${OPT} --enable-prune-ref-rec-part 1"

OPT="${OPT} --enable-nsq-table-use 1"

OPT="${OPT} --enable-framend-cdf-upd-mode 1"

OPT="${OPT} --chroma-mode 3"

OPT="${OPT} --enable-local-warp 1"

# # OPT="${OPT} --enable-class-12 1"

# # OPT="${OPT} --enable-intra-edge-skp 1"

# # OPT="${OPT} --enable-pic-based-rate-est 1"

OPT="${OPT} --enable-intra-angle-delta 1"

OPT="${OPT} --enable-interintra-comp 1"

OPT="${OPT} --enable-paeth 1"

OPT="${OPT} --enable-smooth 1"

OPT="${OPT} --enable-rdoq 1"

OPT="${OPT} --enable-intra-edge-filter 1"

OPT="${OPT} --pred-me 5"

OPT="${OPT} --bipred-3x3 2"

OPT="${OPT} --compound 2"

OPT="${OPT} --scm 2"

# OPT="${OPT} --intrabc-mode 2"

OPT="${OPT} --hbd-md 2"

OPT="${OPT} --palette 6"

OPT="${OPT} --speed-ctrl 1"

OPT="${OPT} --enable-overlays 1"

AUDIO=" -c:a libfdk_aac -profile:a aac_he_v2 "
AUDIO="${AUDIO} -ab 16k -ar 24000 -ac 2 -afterburner 1 "

 

ffmpeg -i "$1" -nostdin -f rawvideo ${FFM} - \
| ${AV1ENC} -i stdin \
${OPT} -b ${FIVF} \
--output-stat-file ${FTMP}

ffmpeg -i "$1" -nostdin -f rawvideo ${FFM} - \
| ${AV1ENC} -i stdin \
${OPT} -b ${FIVF} \
--input-stat-file ${FTMP}

ffmpeg -y -i ${FIVF} -i "$1" ${FFM} -c:v copy ${AUDIO} \
-map 0:v:0 -map 1:a:0 "$1".${FTMP0}.av1.mp4

rm ${FTMP}
rm ${FIVF}

--------------------------------------------------------------------------------------------------------------------------------

 

以下は、解像度が1920X1080のビットレートが250Kの設定

x265で作成したファイルのFFMPEGによるSSIM

--------------------------------------------------------------------------------------------------------------------------------

[Parsed_ssim_0 @ 0x5576c9bbe9c0] SSIM Y:0.716921 (5.480927) U:0.969244 (15.120696) V:0.967061 (14.822872) All:0.800665 (7.004164)

--------------------------------------------------------------------------------------------------------------------------------

 

SVT-AV1で作成したファイルのFFMPEGによるSSIM

--------------------------------------------------------------------------------------------------------------------------------

[Parsed_ssim_0 @ 0x55d7173325c0] SSIM Y:0.913954 (10.652718) U:0.985059 (18.256139) V:0.979485 (16.879341) All:0.936727 (11.987818)

--------------------------------------------------------------------------------------------------------------------------------

 

以下は、解像度が1920X1080のビットレートが1,000Kの設定

x265で作成したファイルのFFMPEGによるSSIM

--------------------------------------------------------------------------------------------------------------------------------

[Parsed_ssim_0 @ 0x55d1a86e99c0] SSIM Y:0.989443 (19.764764) U:0.990064 (20.027856) V:0.990367 (20.162439) All:0.989701 (19.871971)

--------------------------------------------------------------------------------------------------------------------------------

 

SVT-AV1で作成したファイルのFFMPEGによるSSIM

--------------------------------------------------------------------------------------------------------------------------------

[Parsed_ssim_0 @ 0x55f329bfa240] SSIM Y:0.920566 (10.999914) U:0.989446 (19.765995) V:0.985225 (18.304711) All:0.942822 (12.427735)

--------------------------------------------------------------------------------------------------------------------------------

 


Xperia 1(SOV40)のROM焼きを行いました。 ※自己責任

2020-04-21 21:50:38 | Weblog

Xperia 1(SOV40)を入手したので、過去の手順とこちらの手順を参考にROM焼きを行いました。

 

・お約束

 以下の作業は、キャリア保証外の行為で完全な自己責任となります。

 作業を行った結果について、当方は一切の責任を負いません。

 

・事前準備

1.Xperia Companionのインストールします。

2.今回の作業でデータが初期化されるため、データをバックアップします。

3.万が一のため、リカバリー手順(ソフトウェア更新に失敗した場合の修復方法)を理解します。

4.flashtoolをインストールします。

5.焼きたいROMをダウンロードします。

  例)J8110_Customized UK_1319-2847_55.1.A.3.107_R9B

6.newflasher(v20)をダウンロードします。

7.端末を充電します。

 

作業手順

1.ダウンロードしたROMファイル(flashtoolのフォルダに保存されています)を、作業フォルダにコピーします。

2.作業フォルダのROMフォルダへ、newflasher.exeをコピーします。

3.作業フォルダのROMフォルダから、文鎮化する可能性のあるファイルを削除します。

  例)作業結果のファイル一覧

4.Xperiaの接続

  Xperiaの電源を切って、音量を下げるボタンを押しながらUSBケーブルでPCと接続します。

  LEDが緑色になるまで、音量を下げるボタンは押し続けます。

5.newflasher.exeの実行

  入力待ちで、4回止まりますが、「n」を入力します。

6.「End. You  can disconnect your device when you close newflasher.exe」のメッセージが表示されるまで待ちます。

7.端末からUSBケーブルを抜きます。

8.LEDが緑の状態のままなので、端末を再起動するために電源ボタンを長押しします。

 

作業は、以上となります。