L-SMASH-Works icon indicating copy to clipboard operation
L-SMASH-Works copied to clipboard

VP8_and_VP9.webm problems

Open enctac opened this issue 6 years ago • 2 comments

POP氏のr935-2(r935 release2)のバイナリで、AltRefを利用しているVP9.webmの デコードがまともにできなくなってしまいました。 (r935ではやや問題はありましたがデコードはできていました)

これについてはおそらくffmpeg側の変更によるものだと思われますが、 VP8/VP9についてはそれ以外にも従来からフレーム抜けなどの問題が 発生しておりましたので、まとめて報告いたします。

■概要

 L-SMASH Worksで、VP8/VP9のwebmファイルを読み込むと様々な問題が発生する

■確認に使用したL-SMASH Worksのバイナリと、リンクされているffmpegのバージョン

 r921 : POP氏ビルド、ffmpeg 3.1.6  r929 : nekopanda氏ビルド、ffmpeg 3.4+パッチ  r935 : POP氏ビルド、ffmpeg 3.4.2  r935-2 : POP氏ビルド、ffmpeg 4.0.2  r935-MABS : 自ビルド、ffmpeg N-92498-g77bf85515e(2018/11/21, 4.1+)、libvpx有効。AviUtl用のみ。

 ※POP氏とnekopanda氏のバイナリはlibvpx無効。

■問題点まとめ

 ●問題1: フレームレートが正しく認識されないことがある。

  ・例えば23.976(24000/1001)が23.975(23999/1001)と認識されたりする。

  ・VP8/VP9で発生を確認。   ・AltRefの有効/無効に関わらず発生する。

 ●問題2: 初回読み込み時(lwi生成時)と、2回目以降とでフレームレートが変わってしまうことがある。

  ・例えば初回は29.970(30000/1001)だったのが2回目以降は29.969(9680/323)になったりする。

  ・VP8/VP9で発生を確認。   ・試した限りではAltRefが有効なファイルでのみ発生する。

 ●問題3: フレーム抜けが発生してしまうことがある。

  ・本来1→2→3→4→・・・と表示されるべきなのが1→3→4→・・・のように一部が抜けてしまう。   ・バイナリによって挙動が異なり、初回読み込み時のみ発生する場合(r929/r935)と、    2回目以降も発生する場合(r921)がある。

  ・VP8/VP9で発生を確認。   ・試した限りではAltRefが有効なファイルでのみ発生する。

 ●問題4: AvsPmodでプレビュー再生すると、以下のエラーが発生することがある。         Error requesting frame ****         LWLibavVideoSource: failed to make a frame.

  ・VP9でのみ発生を確認。   ・試した限りではAltRefが有効なファイルでのみ発生する。

 ●問題5: 比較的新しいffmpegをリンクしたバイナリだと、       フレームレートやフレーム数が極端におかしくなり、       デコード映像も崩壊してしまうことがある。

  ・フレームレートやフレーム数の誤認例     本来:29.9700(30000/1001)fps、5811frames     誤認:28.1132(1490/53)fps、 5451frames

  ・デコード映像の崩壊例→ http://2sen.dip.jp/cgi-bin/upgun/up2/source/up3519.png

  ・POP氏ビルドのr935-2(r935 release2)で発生する。(自ビルドのr935-MABSでも確認)   ・POP氏のr935(ffmpeg3.4.2)では問題なく、r935-2(ffmpeg4.0.2)で問題が起きるようになったので、    この間にffmpegのVP9デコード処理に何らかの変更があったものと思われる。   ・libvpxを有効にしたffmpegをリンクしてPreffered decoderにlibvpx-vp9を指定すれば    デコード映像の崩壊だけは避けられるが、フレーム数やフレームレートの誤認は発生する。   ・ffmpeg4.0.2でのVP9.webm->H264.mp4のトランスコードは問題ないので、    ffmpegのvp9デコーダが壊れているというわけではなさそう。

  ・VP9でのみ発生を確認。   ・試した限りではAltRefが有効なファイルでのみ発生する。

■詳細説明やバイナリ、問題再現用サンプル等

 ・以下のURLに置いてあります。同梱テキストをお読みください。    http://www.mediafire.com/file/583slvzkp9o7wbs/L-SMASH-Works-VPx-Problems.zip/file

■当面の回避策

 ・無理にVPx.webmをそのまま読み込もうとせず、   ffmpegでH264.mp4にトランスコードして読み込んだ方が確実。

enctac avatar Nov 23 '18 02:11 enctac

https://github.com/HolyWu/L-SMASH-Works/commit/8a3d0c7db7bf598e28a8c0050b1f2663ca36e2ae このコミットの内容でフレームレートやフレーム数の誤認は無くなるようです。

ただしデコード映像の崩壊は引き続き起きるのでthreadsを1にするかPreffered decoderにlibvpx-vp9を指定する必要があります。 追記:FFmpegのconfigureで--disable-decoder=vp9を追加しておくやり方でもいいですね。 追記2:上記のcommitだけでは引き続きVP8のフレーム抜けが発生しますね……。

f11894 avatar Nov 16 '19 03:11 f11894

@f11894 遅くなってしまいましたが、情報ありがとうございます。

追記2:上記のcommitだけでは引き続きVP8のフレーム抜けが発生しますね……。

HolyWu@352a873c7cd218b8a4371b688c8e64c169a1b35b このコミットでVP8のフレーム抜けも発生しなくなったようで、HolyWu版の20200118のリリースからは問題が起きなくなっています。

ただしデコード映像の崩壊は引き続き起きるのでthreadsを1にするかPreffered decoderにlibvpx-vp9を指定する必要があります。 追記:FFmpegのconfigureで--disable-decoder=vp9を追加しておくやり方でもいいですね。

こちらについては現在のHolyWu版r1042の時点でも状況は変わっていないようです。

enctac avatar Mar 29 '20 14:03 enctac