QSVEnc (メモ書き、というか愚痴)

なんかまとめないと混乱してくるのでメモ。もう混乱している。

RFFを何とかする(=とりあえず音声との同期をとる)には、
1. デコード後のフレームにRFFかどうかのフラグがある
2. デコード後のフレームのタイムスタンプ(pts)がわかる
のどちらかがあるとよい気がする。

が、

1.
MFX_PICSTRUCT_FIELD_REPEATEDとかいう、いかにも関係してそうなフラグが定義されているが、デコーダから出てくるフレームのpicstructには、実際のmpeg2デコーダを通すとセットされない。ただのMFX_PICSTRUCT_PROGRESSIVE(1)となる。

2.
デコーダに投入するbitstreamのTimeStampにptsをセットすると、デコードされてくるフレームのTimeStampにも対応するptsがセットされるはず。ところがmpeg2は完全にいかれた値が出てくる。

適当に切り取ったものをデコードしてみた例。

1920x1080, picstruct:4, order:0, pts:39620
1920x1080, picstruct:4, order:1, pts:45626
1920x1080, picstruct:4, order:2, pts:57638
1920x1080, picstruct:4, order:3, pts:42623
1920x1080, picstruct:4, order:4, pts:54635
1920x1080, picstruct:4, order:5, pts:66647
1920x1080, picstruct:4, order:6, pts:51632
1920x1080, picstruct:4, order:7, pts:63644
1920x1080, picstruct:4, order:8, pts:75656
1920x1080, picstruct:4, order:9, pts:60641
1920x1080, picstruct:4, order:10, pts:72653
(...中略...)
1920x1080, picstruct:4, order:67, pts:252833
1920x1080, picstruct:4, order:68, pts:237818
1920x1080, picstruct:4, order:69, pts:249830
1920x1080, picstruct:4, order:70, pts:258839
1920x1080, picstruct:4, order:71, pts:246827
1920x1080, picstruct:4, order:72, pts:263343
1920x1080, picstruct:4, order:73, pts:255836
1920x1080, picstruct:1, order:74, pts:275355
1920x1080, picstruct:1, order:75, pts:270851
1920x1080, picstruct:1, order:76, pts:285866
1920x1080, picstruct:1, order:77, pts:267848
1920x1080, picstruct:1, order:78, pts:282863
1920x1080, picstruct:1, order:79, pts:297878
1920x1080, picstruct:1, order:80, pts:278358
1920x1080, picstruct:1, order:81, pts:293373
1920x1080, picstruct:1, order:82, pts:308388
1920x1080, picstruct:1, order:83, pts:290370
1920x1080, picstruct:1, order:84, pts:305385
1920x1080, picstruct:1, order:85, pts:320400
1920x1080, picstruct:1, order:86, pts:300881
1920x1080, picstruct:1, order:87, pts:315896
1920x1080, picstruct:1, order:88, pts:330911

picstruct:1 → progressive
picstruct:4 → bff

ptsがきれいに並んでいれば、ptsからフレームの長さを出して、長さが4505ぐらいのやつがまあRFFのフレームでしょう、とわかり、まあ音声との同期をとるだけならVFRにするか、適当にフレームを間引いたり水増ししたりで済むのだけど、こんなに出てくるptsがぐちゃぐちゃだと、途方に暮れてしまう。(ためておいてソートとかしたくない)

ちなみに基本的にはQSVEncではCFRを仮定していて、ptsは適当に足しあげていけば問題なく、意図的にこういうめんどくさいことには首を突っ込まないようにしていた。だが、RFFとか見ようとすると問題になる。やっぱ無理ぽい?
スポンサーサイト

コメントの投稿

非公開コメント

No title

以前から度々インタレ解除の件でお世話になってます。
音ズレの質問もしたことありましたが、ソースに問題があったとご報告してそれきりでしたが、その問題ソースを直すのに以下のコマンドでやってたので、ひょっとして何かの足しになればと思い
mencoder 入力.mpg -oac copy -ovc copy -of mpeg
-mpegopts format=dvd:tsaf -noskip -mc 0 -o 出力.mpg
入力.mpgがffmpegでも音ズレしてしまうものでも直るスグレものです。
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先(@を半角にしてください!)
rigaya34589@live.jp
github

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutlプラグイン
x264guiEx 2.xx (ミラー)
- x264を使用したH264出力
- x264guiExの導入>
- x264.exeはこちら>

x265guiEx (ミラー)
- x265を使用したH.265/HEVC出力
- x265.exeはこちら>

QSVEnc + QSVEncC (ミラー)
- QuickSyncVideoによるH264出力
- QSVEncCはコマンドライン版
- QSVEncC 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC (ミラー)
- NVIDIAのNVEncによるH264出力
- NVEncCオプション一覧>

VCEEnc + VCEEncC (ミラー)
- AMDのVCEによるH.264出力

ffmpegOut (ミラー)
- ffmpeg/avconvを使用した出力

自動フィールドシフト (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: aji様

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: まじぽか太郎様

PMD_MT (ミラー)
- SSE2~FMA3による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (ミラー使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR