【20161109更新】つんでれんこのニコニコ新仕様への対応

【修正(12/14)】投稿可能な動画ファイルのサイズが増加しますにもあるようにニコニコに仕様変更がありました。おそらく最も重要な部分は「投稿容量に関わらず全てniconico側でエンコードし複数画質を生成しております。」というところです。この仕様変更に従い,これまでは条件を満たせばサーバでの再エンコードを回避できたのですが,これができなくなりました。この仕様変更に対応するために,後ほどつんでれんこ2.79をリリースする予定です(もしかするとバグの判明などで2.80以降をリリースするかもしれません)。

新仕様への対応ですが,注意点がいくつかあります。

  • つんでれんこ2.79以降で新仕様に対応するためには,つんでれんこのサイト選択のところで大文字のNを選んで下さい。
  • ニコニコ新仕様が対象のアカウントは一部のみです。適用者以外は従来通り小文字のnを選んで下さい。
  • 新仕様対応モードでエンコードしてもファイルサイズに関わらずサーバで必ずエンコードされます。そのため,ニコニコでブラウザで見る際は必ず劣化します

上で必ず劣化すると書きましたが,一定条件を満たせば多少は劣化度合いを抑えることができます

  • オリジナルファイルを高解像度で作成する(まだ検証は進んでいませんが,最低でも1280 x 720は必要です)。
  • 動画の長さに関しては15分以下の動画が一番劣化度合いの少ないエンコードパラメータになるようです。
  • 映像ビットレートは2Mbps以上にする。
  • 音声のサンプリングレートは44.1kHzに,ビットレートは192kbps以上にする。
  • フレームレートについては公式からのお知らせはありませんが,おそらく30fpsもしくは24fpsにしたほうがよい気がします(確証はありません)。

以上の条件で出力したファイルが1.5GB以内なら,つんでれんこにかけないでそのまま投稿した方がよいと思いますよいかもしれません(【修正(12/14)】この記事を書いた後にデノイズ機能などを実装したので場合によってはつんでれんこにかけたほうが良くなる場合もあるため)。もしサーバエンコードでエラーが出たら,使用コーデックを変えるなどしてみてください。もし出力ファイルが1.5GBを超えたら,そのファイルをつんでれんこにかけると,1.5GB以内に抑えるようにエンコードします。

つんでれんこの新仕様への対応方法は以下のとおりです。

  • 新仕様向けのエンコードではつんでれんこでは解像度のリサイズはしません。720pで投稿したい場合は720pで,4kで投稿したい場合は4kで事前にファイルを作成して下さい。バージョン2.87でNモードでもリサイズが可能になりました。有効(y)にすると縦720ピクセルにリサイズします(質問レベルが「すこし」の時は自動でリサイズが有効になります。縦ピクセルのサイズはuser_setting.batで変更可能です)。 バージョン2.94以降は,リサイズを有効にすると動画の長さに合わせて高さを「720ピクセルか540ピクセルか360ピクセル」のいずれかを適切に選ぶようになりました。
  • 音声に関しては256kbpsで固定しました(user_setting.batで値を変えることができます)。
  • ファイルサイズは1.5GBが上限ですが,余裕を持って1,495MBにしてあります(user_setting.batで値を変えることができます)。
  • サーバエンコードでの劣化を防ぐ目的で,2.79からデノイズ機能を実装しました。
    • 質問モードで詳細モードを選ぶと選択肢が出ます。詳細モード以外では自動で設定します。
    • 自動設定については,ニコニコの旧仕様向けのときは無効になります。YouTubeとニコニコ新仕様向けのときは有効になります。
    • デノイズのモードについてはuser_setting.batで指定が可能ですが,よくわからない場合は弄らないで下さい。
  • エンコード方法については,従来のYouTube用のプリセットを流用しています。
    • まずCRFエンコード(CRF値は18)をします。オリジナルと比べてあまり劣化しない程度にビットレートを調整してエンコードします。CRF値が18なのは気まぐれです(詳細モードでCRF値を直接入力することで変更可能です。user_setting.batでの指定も可能です)
    • ファイルサイズが1.5GB(正確には上記の通り1,495MB)に収まればエンコードは終了します。
    • バージョン2.80以降は,ビットレートが2000kbpsを下回った場合は2000kbpsを目標に2passエンコに切り替わります。
    • CRFエンコでファイルサイズが1.5GBを超えてしまったら,1.5GBを超えないように2pass(もしくは3pass)エンコードを行います。
  • 1.5GBをターゲットにビットレートをギリギリまで使い込みたい場合は,質問レベルおおめモードでCRFエンコを無効に(nを選択)してください。
    • 音声256kbpsを引いた残りのすべてを映像エンコードに使用します。
    • なお,動画によってはビットレートを使いきらない場合があります(例えば動画時間が短かったり動きが少ない映像だったりすると指定ビットレートを使い切ることができずにファイルサイズが1.5GBに届かないことがあります)。

なぜデノイズを実装したかという点についてですが,他の方々の検証でも触れられてはいますが,再エンコードではどうやら2Mbps前後に再エンコードされるので場合によってはビットレート不足が起きることがあるからです。足りないビットレートをやりくりするには,絵の情報量を減らすことがある程度有効なので,とりあえず実装してみました(私個人はデノイズがあまり好きではないのですが…)。

なお,TDEnc2の対応はしばらく先になります…。申し訳ないです…。リアルのスケジュール的にどうしても,ユーザー数の多いつんでれんこの方を優先させました…。TDEnc2はかなり先になってしまうと思いますが,時間ができ次第対応させるつもりです。よろしくお願いします。

今回の仕様変更に色々と思うことがなくはないのですが,とりあえずそれは別記事に起こします。実装に疲れた…。