スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【タイムシフト】 ニコ生の TS を音ズレ無しに編集、エンコードする方法

ニコ生のタイムシフト(以下TS)の動画のように、音声の始まりと映像の始まりが一致せずに、エンコードするときに何も指定しなければ映像と音声がずれたり、音声がカットされたりすることがあるので、それの対処法。

ニコ生のTSはフラッシュビデオなので、それを別の形式にすると音ズレが発生することがある。音声ストリームは基本コピーするとして、発生する・しないをまとめると

  • .mp4 コンテナにコピーすると音ズレする
  • .flv, .mkv コンテナにコピーすると音ズレしない
  • .mp4 コンテナに映像をエンコードする場合にオプションを指定しないと音ズレする
  • .flv, .mkv コンテナに映像をエンコードする場合にオプションを指定しなくても音ズレしないが、オプションを指定したほうが良い

編集・エンコード別の設定について


動画は音声の始まりと映像の始まりが一致しない(音声が先に始まり音声のほうが長い)ファイルを元に説明する。

厳密に音ズレなしを目指す場合は最初にタイムシフトの動画によく起こる映像と音声の開始時間がずれる音ズレを調べる Mediainfo をインストールする。

ここで音声ファイルの部分で遅延がおよそ5秒以上の場合は映像が読み込めないことがあるので、最初に kakoroku の配布コミュニティの掲示板で配布してある、flvrepair Ver.0.03 (2011/01/17) を使って先頭部分をカットし、読み込めるようになったら下準備が整った。

AviUtl の場合


デコーダを L-SMASH Works とする。
このまま動画を読み込むと映像が始まるところから表示され、音声の最初がカットされるので先に、映像と音声を分離してそれぞれを拡張編集プラグインに読み込み、開始時点を調整する方法をとる。
  1. TS を読み込んで一番最初のフレームを画像で保存する
    編集 < 現在のフレームの出力イメージをクリップボードにコピー < ペイントなどに貼り付けて .png, .bmp で保存する
  2. TS を FLV Extract で映像と音声に分離する
    FLV Extract - www.moitah.net
  3. 分離した映像と音声を拡張編集プラグインに読み込ませるが、読み込まない場合は、拡張編集プラグインを置いているフォルダ内の「exedit.ini」に拡張子を登録する
    例:exedit_ini.txt
  4. 映像と音声を拡張編集プラグインのタイムラインにのせるとそれぞれの長さが異なるはずなので、音声の後ろに映像を合わせて(プレビューしながら確認)、映像がない部分には先ほど保存した画像をタイムラインに乗せて映像が途切れないように延ばす
  5. プレビューして問題がなければエンコードする

XMedia Recode の場合


「ビデオ/音声の同期」にチェックが入っているのを確認して、映像を編集したり、エンコードしたり、コピーする。このときコピーして出力ファイルのコンテナが .mp4 の場合は最初をカットしないと音ズレする。これを回避するには最初をカットするか、.flv, .mkv コンテナにコピーして出力する。

ffmpeg の場合


上で説明したとおり、.mp4 コンテナにコピーすると音ズレするが、映像をエンコードした場合(無劣化コピーはできない)にオプション(vsync -1)を付けると、映像のない部分に自動的に映像が始まる開始フレームが挿入され音ズレがなくなる。

ニコニコ動画に投稿する場合は別途 エンコードオプション を変更する。
ffmpeg -analyzeduration 30M -probesize 30M -i TS.flv -vsync -1 -vcodec libx264 -acodec copy out.mp4

Youtube などの再エンコードが避けられない場合は出力形式を MP4 ではなく MKV が無難。
ffmpeg -analyzeduration 30M -probesize 30M -i TS.flv -vsync -1 -vcodec libx264 -acodec copy out.mkv

vsync に指定できるオプションは
  • 0 パススルー
  • 1 固定フレームレート
  • 2 可変フレームレート
  • -1 自動設定

FFmpeg documentation : : Advanced options

映像の場合は -1 を指定すると、おそらく自動的に 1 が指定される。他の値を使う例として連番画像から動画を作るときに -1 ではなく 0 を指定する。

【ffmpeg】動画から特定フレームを画像で出力する方法
ニコニコ動画に関係する編集と再生ツールのまとめ
保存したニコ生タイムシフトの取り扱い:りっどのブロマガ - ブロマガ

2013/06/16までの追記ここまで

Avidemux の場合


AviUtl で読み込めないファイルを読み込んで無劣化で編集する場合に用いる。
AviUtl で読み込めないニコ生TSを Avidemux で無劣化編集する を参照。

公式のニコ生がH.264/MP3になっている場合が多くなって、動画をニコ動に上げる際にかなり不便になった。そこで公式放送を手軽にニコ動に上げる方法を考えた。

なぜ不便になったかというとzoomeはVP6/MP3の動画はエンコードしてくれるけど、H.264/MP3の動画はエンコードしてくれなくて容量が小さくならなくなった。zoomeでもAVC/MP3の動画をエンコードしてくれるようになったが音ずれの動画ができる場合がある。その上、H.264/MP3のflvは編集ソフトでの取り扱いが難しく編集に手間がかかるからである。次にAviUtlでエンコードしてみたがこれでも音ずれした。おそらくデコーダのffdshowとスプリッターがうまく処理できていないため?それとは別に最初の数秒間音声だけで動画が流れない場合は音ずれの原因になりやすい。

次にTSのflvを編集して動画と音声を別にエンコードしてmuxする方法を考えた。
XMedia Recodeの登場でdemuxしなくてもそのまま編集、エンコードが可能になりとても手軽になった。

XMedia Recode
http://www.xmedia-recode.de/download.html
http://www.gigafree.net/media/conv/xmediarecode.html
TSのH.264/MP3のFLVの読み込みと編集のためのシークが早く、編集・変換が一度にでき、今までのツールの中で一番使いやすい。主な使い方はTSの無劣化切り出しと音声部分をAACに変換してニコ動にアップすること。その時には必ず「ビデオ/音声の同期」にチェックを入れる(規定値ではチェックが入っている)こと。

Moyea FLV Editor Lite
2015年7月30日 公式サイト閉鎖確認 http://www.exp-flv.com/download.html
http://www.forest.impress.co.jp/docs/review/20100210_348242.html
TSのflvやyoutube、ニコ動等のflvの編集、動画・音声のみを取り出すのに使う。
音声のみでNellymoserのflvを取り出すことも可能。

Free Audio Extractor
http://www.giksoft.com/
http://www.gigafree.net/media/me/freeaudioextractor.html
入力可能なファイルはavi,flv,mp4,mov,wmv,asfの動画とaac,m4a.mp3,mp2,wav,wmaの音声。
音声は波形が出るので編集の目安になるが、1秒未満の編集には向かない。

FLV Extractは264(raw)とmp3にdemuxする場合に用いる。そのほかにもVP6、H.263、AACのdemuxにも使え、さらにhugflashよりも高速
http://www.moitah.net
出力した264はYambでmuxできるのでmp3をaacにエンコードすると手軽にニコ動にうpできる。

Moyea FLV Editor Liteでカットしても音ずれしなかったので、カットした動画からFree Audio Extractorで音声を取り出してmp3をaacにエンコードして再度muxした。flvを編集するときに動画と音声の一方しかない場合はその間をカットして出力する。エンコードするときに音ずれの原因になる。

Moyea FLV Editor Liteでカットして音ズレする場合は、AviUtlでキーフレームを表示させてカットする時間を探す。映像コーデックがH.264の場合はキーフレームの所でカットしないと映像と音声が綺麗にカットできない。
動画が読み込めない場合はffdshowをインストールしてAviUtlの入力プラグインでDirectShow File Readerの優先度を上げる。
ffdshow tryouts | Download
AviUtl_keyframe.png

MP4ファイルを読み込んだ時にキーフレームがあるとフレーム数の右に*が表示される。
AviUtl_keyframe2.png

aacへのエンコードはローカルPCでエンコードしてもよし、mp3をzoomeに上げて音声だけ利用するもよし、出来上がったaacとTSのh264をmuxしてmp4コンテナに入れる。zoomeにmp3を投稿すると静止画像の動画も付いてくるが気にしない。

低ビットレートのaacはえこでこツールが便利
http://sourceforge.jp/projects/ecodecotool/wiki/FrontPage

YambはMP4Boxのフロントエンド
http://yamb.unite-video.com/
http://www.oshiete-kun.net/archives/2008/01/yamb2mp4box.html

MP4Boxはmp4にmuxするのに使う
http://www.videohelp.com/tools/mp4box

ついでにmediainfo.dllも最新版に差し替える
mediainfoは動画のデータを調べる
http://sourceforge.net/projects/mediainfo/files/binary/

自分でエンコードする場合にビットレートは低画質なら100/48 2passでそこそこ綺麗な動画に仕上がる。高画質なら250/48 2pass程度は欲しいところだが容量と時間で妥協する。zoomeエンコードはx264 crf=28なのでかなり容量が小さくなるので手軽に使えるがその分画質は落ちる。

次に高画質配信のTSをzoomeに上げてみたがあまり容量(元データの動画部分が4.97MBでzoomeエンコードで4.55MB)が小さくならなかった。高画質配信は一般回線の生放送に比べて3倍程容量が大きく、解像度も異なる。高画質配信は動画時間も長く、解像度も大きいためPCに余力がない人は編集・エンコードしない方が無難。

追記 2010/11/01
大運動会(総容量2.82GB)をエンコードしてみたがリサイズなしではビットレートは700Kはないと映像が破綻した。元データが1Mを考えるとあまりエンコードのメリットがなかった。運動会は動きが激しいためエンコードの恩恵があまりないが、ゲームの時間はゲームの動きが激しいくらいであまり動かないのでエンコードして小さくするメリットはある。

追記 2010/11/04
FLV(AVC/AAC)、FLV(AVC/MP3)がうp出来るのを確認。つまりTS丸上げが出来る。公式放送をうpする人は大抵プレミアム会員だと思うので、視聴しやすさを求めてまとめてエンコードするか、最初と最後の静止画の部分をカットしての分割丸上げにするかの選択肢になる。容量が毎月1GB増えることを考えるとあまりエンコードして容量を小さくする必要がないかも。

追記 2011/10/22
AviUtlでキーフレームを調べる方法について。

追記 2011/12/18
XMediaRecod について。

追記 2013/06/16
今まで書いた記事を下にし、新しく書き直し、タイトルを変えた。
旧:【タイムシフト】 ニコ生のTS(FLV H.264/MP3)を編集、エンコードする方法
新:【タイムシフト】 ニコ生の TS を音ズレ無しに編集、エンコードする方法

追記 2015/08/03
avidemux について別記事のリンクを追加した。

こちらも参考に
FLV(H.264/MP3)のファイルを音ずれしないようにエンコードする
宇多田ヒカルのUstライブをスムーズにシークして再生する方法
【ニコ生】 タイムシフトのFLVを無劣化で連結する

lv28865550をzoomeに投稿した場合のエンコード設定

全般

完全名称 : lv28865550_生主討論会『出会い』『警察沙汰』『Web乞食』『運営にもの申す!』.mp4
フォーマット : MPEG-4
プロファイル : Base Media
コーデック ID : isom
サイズ : 249 MiB
ながさ : 2時 6分
オーバルビットレート : 276 Kbps
エンコード日 :
タグ付け日 :

ビデオ

ID : 1
フォーマット : AVC
フォーマット/情報 : Advanced Video Codec
プロファイル : High@L3.1
CABAC : はい
RefFrames : 4 フレーム
コーデック ID : avc1
コーデック ID/情報 : Advanced Video Coding
ながさ : 2時 6分
ビットレートモード : VBR モード
ビットレート : 238 Kbps
最大 : 896 Kbps
幅 : 512 ピクセル
高さ : 384 ピクセル
解像度 : 4:3
モード : VFR モード
フレームレート : 29.970 fps
最小 : 14.985 fps
最大 : 29.970 fps
ColorSpace : YUV
ChromaSubsampling : 4:2:0
BitDepth/String : 8 ビット
スキャンの種類 : プログレシッブ(PPF)
ビット/(ピクセル*フレーム) : 0.040
ストリームサイズ : 215 MiB (86%)
使用したライブラリ : x264 core 106 r1732 b20059a
エンコードライブラリの設定 : cabac=1 / ref=4 / deblock=1:0:0 / analyse=0x3:0x133 / me=umh / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=24 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=299 / keyint_min=1 / scenecut=70 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=28.0 / qcomp=0.80 / qpmin=10 / qpmax=51 / qpstep=6 / ip_ratio=1.25 / aq=1:1.00
タグ付け日 :

オーディオ

ID : 2
フォーマット : AAC
フォーマット/情報 : Advanced Audio Codec
バージョン : Version 4
プロファイル : LC
SBR : はい
PS : いいえ
コーデック ID : 40
ながさ : 2時 6分
ビットレートモード : VBR モード
ビットレート : 36.1 Kbps
最大 : 41.5 Kbps
チャンネル : 2 チャンネル
チャンネルの位置 : Front: L R
サンプルレート : 44.1 KHz
ストリームサイズ : 32.5 MiB (13%)
エンコード日 :
タグ付け日 :
関連記事

この記事へのコメント

管理人のみ通知 :

トラックバック


ニコニコチャンネル始めました
ニコラボチャンネル
スポンサード リンク
新着記事と追記・編集記事
スポンサード リンク
ブログ内検索
プロフィール

Author:ロベルト
お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab
ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

カテゴリ
アクセスの多い記事
記事アーカイブ

最新コメント
リンク
ニコニコ静画
アニメカテゴリ毎時ランキング
免責事項
当ブログはリンクフリーです。記事によりトラブルが生じた場合でも、当ブログ管理人は一切の責任を負いません。 当ブログに記載されている情報の正誤や利用は、ご自身の判断でお願いします。 紹介したアプリケーションに関する問い合わせは作者に問い合わせてください。ニコニコ動画に関する質問はまずは公式掲示板、2ch、各Q&Aサイトを参照ください。
ブログの読者になる(RSS)
アクセス数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。