ニコ動の新しい動画エンコード方式について (終)

前、ニコ動の新エンコード方式に対し、どうエンコードすればいいかみたいなことを書いたけど、その後わかったこともあるので、それを踏まえてすこし更新 + 今回の騒ぎの感想とか。

そもそもは…



そもそもは「1.5GBまであげられるようになります」という話からはじまった。



新しいエンコード方式の仕様



まあ、ふたを開けてみれば、「1.5GBあげられる」のはうそは言ってないんだけど、こう、なんというか期待していたものではなく、強制再エンコードで、かつ再エンコードの画質は720p 2Mbpsと低いというおまけつきだった。

新しいエンコード方式の仕様については、多くの方がテストして調べてくださった結果として、nicowikiに非常にわかりやすくまとめられている

また、すでに新方式が適用となった方があげてくださったテスト動画などを少し調べさせていただいたりして、1秒に1回必ずキーフレームを入れるようになっていて、ビットレート割り当ての柔軟性が低いとか、なぜかMain Profileという制約がかかっているとかいうことを確認した。



x264guiExのニコ動向けプリセットは、少しでもニコ動で高画質で上げられる助けとなってほしい…ということで作っているのだが、今回の変更で特にこれまで100MBいっぱいを使って高ビットレート・高画質が可能だった短い動画については、ニコ動に高画質な動画を上げるのはかなり難しくなってしまった。もちろん、長時間の動画などはこれまでよりも大きな容量を使うことができるようになり、画質が改善する可能性はあるのだけど…。

この新しい仕様について、ちょっと愚痴を言ってみると…

・まずは…
再エンコしないで…(泣)

・最大でも720p
これまで100MB以内なら、1080pとかもあげられたのだが…。例えば、こんなの (1920x1080 29.97fps 2分53秒 4778kbps)とか。

・720pで最大でも2Mbps
720pだったら、少なくとも倍はないと、動きの多い動画(こういうのとか)などでは画質が安定しないと思う。というかそもそも動画によって必要なビットレートは全く違うので、ビットレート決め打ちじゃなくて、品質固定(x264でいうcrf)とかだとよいのだが…

毎秒シークできる必要は…?
ビットレートが最大でも2Mbpsと低いのに、毎秒キーフレームを入れることで、時間方向の圧縮が効きにくくなり、結果として画質を大きく引き下げる結果に。個人的には別に5秒ぐらいの間隔でもいいんじゃ…と思ったりするけど、やっぱり細かくシークしたい人もいるのかなあ。

元の動画のビットレートが低いと再エンコードでも低いビットレートが適用される
下限ビットレートとか、わけのわからないものを実装することになったきっかけ。同じビットレート与えれば十分というのはさすがに…。例えば、この動画 (1280x720 29.97fps 10分20秒 1287kbps)は100MBに収める遊びをしていたときのものだけど、これを1287kbpsだからといって1400kbpsでエンコードしたらとてもひどいことになると思う…。



新しいエンコード方式に対し、どうエンコードすればいいのか
この前のをすこし更新。



サーバー側で再エンコードされる以上、ポイントとしては以下のようになると思う。

1. 再エンコードの仕様を意識する
可能な限り、1280x720、2Mbpsというエンコードがされるようにしたいので、1280x720以上で、2Mbps以上、できれば15分未満の動画で投稿したい。もちろん、実況動画など、15分を超えてしまうのは避けられないものもあるのだろうけど、こういう場合も動画を分割する…という手もありかもしれない。

2. なるべく高画質で投稿する
3. 1.5GB以内ならファイルサイズはあまり気にしなくてよい
再エンコードされた動画は必ず画質が劣化してしまうのだけど、劣化をなるべく抑えたい。一般にエンコードする場合、もとの動画にノイズが多いとそのぶん余計にビットレートを必要とし、劣化が進みやすくなるので、投稿したものがもともと劣化していれば、さらに画質が落ちてしまう。つまり、再エンコードによる劣化を極力抑えるためにも、なるべく高画質でノイズの少ない動画を投稿したほうが良いと思う。あとは、もともとの動画にノイズが多い場合には、ノイズ除去をかけるというのも手かもしれない。

一方、アップロード上限は1.5GBと余裕があるので、長時間の動画でなければ、あまりファイルサイズに気を使わなくてもいい。なので、これまでのように重い設定で長時間かけてエンコードして高画質を狙う、といったことはしなくていいと思う。

もちろんファイルサイズが大きくなれば、アップロードに時間がかかってしまうので、ある程度は圧縮したいのだけど、その場合でも2Mbpsを下回らないようにしないと、より低いビットレートで再エンコードがかかってしまうので注意。

4. 小細工
短い動画なら、動画終了後ただの黒いフレーム静止画を貼って15分ぐらいに調整すると、ニコ動側は平均が2Mbpsになるようエンコードするので、黒べた部分のビットレートが低くなる分、動画部分のビットレートを逆に引き上げることができる…はず。どうしても画質が足りない場合にはありかもしれない。



必ず再エンコードされるとわかったときは、もう適当にエンコードすればよくなるので、x264guiExのニコ動用プリセットはお払い箱かと思ったのだけど、なるべく画質の劣化を抑えるには結局時間と解像度だけでなく2Mbps以上という条件を満たす必要があるなど、思ったより投稿用の動画をエンコードするのはいろいろな点に気を付ける必要があるみたい。

なので、やっぱりこのあたりを考慮してあるつんでれんこ(早速ニコ動の新方式も考慮した更新をしてくださっているようです)なり、Aviutlからならx264guiExなりを使ったほうがすこしは画質が上がるかなあ、と思う。ただ、そうした配慮を行ったとしても、絶対的にビットレートが足りないので、静止画中心の動画を除いて基本的には低い画質になってしまうが避けられないのが悲しい…。



とりあえず、この件に関するx264guiExの更新も終わったのと思うので、これに関する記事もこれで終わり。



スポンサーサイト



コメントの投稿

非公開コメント

aud付加

素人の質問で恐縮です。
拡張x264出力(GUI)Exにaud付加がありますが、GUIの拡張QSV出力でも使えるように出来ませんでしょうか?
宜しくお願いいたします。

No title

ごめんなさい、「aud付加」というのがなんのことかわからないです。設定画面のどこの設定かなど教えていただけないでしょうか。

aud付加

最近、TvPlay(TVTest)がmp4に対応したのですが、拡張x264出力(GUI)Exはaud付加(下記URL参照)がありますが、
拡張QSV出力(GIU)では無いようなのでお願いいたしました。
aud付加(x264の--aud)してないmp4 TvPlay(TVTest)の右クリック倍率変更が出来ない。
TVTestはAUDを基準にSPS(これに縦横幅の情報など入ってる)を探すはずで、
このSPSが見つからないために再生ファイルを切り替えてもウィンドウサイズが更新されなのです。

      ↓拡張x264出力(GUI)Exの設定画面
http://iup.2ch-library.com/i/i1703158-1472794207.jpg

aud付加

お騒がせいたしましたが、下記のとおりとなりました。
TvtPlay(作者:xtne6f氏)の更新で「TVTestにSPSを解釈させるためフレームにAUDがないときは付加する」になりました。
取り急ぎ連絡まで。

mp4でaud付加?

mp4でaudがSPSを見つけるために必要というのがわかりません。

audはAccess Unit Delimiter(アクセスユニットの区切りを与えるもの)のことで、通常のmp4ではそのアクセスユニットの区切りはヘッダ(moovボックス)の方で自明となるもので、またmp4において、SPSはアクセスユニットには含まれてないことになって、代わりにヘッダ(moovボックス)に置かれるようになっているため、aud自体は冗長なデータであり必要ありません。
audが必要になるのはMPEG-2 TSのようなグローバルなヘッダとインデックスが無く、それがないとアクセスユニットの区切りを判定するのに面倒な処理が走るようなファイルフォーマットやプロトコルの場合になります。

mp4でaud付加?

私は技術的には分かりませんので下記を参考に
             ↓
http://echo.2ch.net/test/read.cgi/avi/1444993476/645-673n

No title

よくわかりませんがTVTestの実装がaudを前提としていた、ということになるのでしょうか。とりあえず現在は解決したとのことでよかったです。

もう不要でしょうが、一応オプションの追加はしてみます。

aud付加

早速の対応有難うございます。
拡張QSV出力側で設定があった方が安心なので助かります。
公開お待ちしています。

Re: mp4でaud付加?

そもそもTVTestがMPEG-2 TS前提のソフトで、そのプラグインのTvtPlayが最近になってMP4ファイルをTVTestで再生できるように変換処理を実装したのだけど、TSとMP4の違いを十分に処理できていなかった、TvtPlayの実装不足ということでいいのかしら?

No title

追加してみました。raw出力したときには、ちゃんとaud nal unitが追加されているのは確認済みです。
http://rigaya34589.blog135.fc2.com/blog-entry-829.html

mp4再生がTVTestの新機能ということですので、次第に安定していくとよいですね。

動画 エンコード

詳しいです!

参考になります。

動画 画質 増強

高画質で投稿したいなら、投稿する前でソフトで画質を上げてみましょう
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

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

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clfilters 
- OpenCLベースの複数のGPUフィルタ集
- 対応フィルタの一覧等はこちら

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

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

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

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

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

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

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 (ミラー)
SVT-AV1 (ミラー)

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

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

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