PT2で録画したMPEG2-TSファイルをsplitしたりトランスコードをする
このエントリーの続き.
録画したMPEG2-TSファイルの不要部分(CMとかではなく,ワンセグのデータ等)をカットして容量を小さくする話と,H.264へトランスコードしてより容量を小さくしようという話.
既にWindowsでは手法がかなり確立されており,ある程度ルーチンワークに近い部分があります.また,手軽に確実に行いたいという話であれば,TMPGEncを購入して一気にやってしまう方が,試行錯誤する時間を節約できるので吉.ただ,今回はLinuxだけで…ということに拘ってみた.
○不要な情報をカットする
録画したMPEG2-TSファイル(MPEG2-TSコンテナ)には,フルセグの映像・音声データだけでなく,ワンセグやその他データが多重化されて含まれています.しかし殆どの人にとっては,フルセグ以外の情報は不要です.そこでメインのストリームだけ取り出して保存しましょうという話.
Windowsであれば,TsSplitterというソフトを使用するのが定番.実に高機能です.しかしオープンソースでないこともあり,Linux用に移植されていません.そのため,Linux上でwine(Windows用のソフトをLinux上で動かすソフト)を使用して動かすのが一般的.
しかし今回はネイティブアプリのみを使用してLinux上で一連の作業を行いたいので,別の物を探すことにしました.そして見つけたのは『tssplitter_lite』というソフト.TsSplitterの機能のうち,任意のsidを取り出す機能のみ実装した物.開発は今も進行中.ありがたや,ありがたや.
インストール方法は以下の通り.
wget http://hp.vector.co.jp/authors/VA038175/download/tssplitter_lite.zip
unzip tssplitter_lite.zip
cd tssplitter_lite
make
cp tssplitter_lite/tssplitter_lite /usr/local/bin
使い方は,『tssplitter_lite <オリジナルのTSファイル名> <出力TSファイル名> <SID>』です.不要部分をカットすると,大体8割くらいの容量になります.SIDの調べ方は…そのうち自動化するプログラムでも書こうかな.
ちなみにffmpegにそのまま生TSを食わせると,以下のような感じで表示されます.
Input #0, mpegts, from 'hogehoge.ts':
Duration: 00:50:24.70, start: 9411.739256, bitrate: 15428 kb/s
Program 2064 MBS毎日放送
Metadata:
name : MBS毎日放送
provider_name :
Stream #0.0[0x111]: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0.1[0x112]: Audio: libfaad, 48000 Hz, 1 channels, s16, 129 kb/s
Stream #0.2[0x114]: Data: 0x0006
Stream #0.3[0x840]: Data: 0x000d
Stream #0.4[0x850]: Data: 0x000d
Stream #0.5[0x857]: Data: 0x000d
Stream #0.6[0x858]: Data: 0x000d
Stream #0.7[0x859]: Data: 0x000d
Stream #0.8[0x860]: Data: 0x000d
Stream #0.9[0x85e]: Data: 0x000d
Stream #0.10[0x85f]: Data: 0x000d
Stream #0.11[0x86e]: Data: 0x000d
Program 2065 MBS毎日放送2
Metadata:
name : MBS毎日放送2
provider_name :
Stream #0.0[0x111]: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0.1[0x112]: Audio: libfaad, 48000 Hz, 1 channels, s16, 129 kb/s
(中略)
Program 2066 MBS毎日放送3
Metadata:
name : MBS毎日放送3
provider_name :
Stream #0.0[0x111]: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0.1[0x112]: Audio: libfaad, 48000 Hz, 1 channels, s16, 129 kb/s
(中略)
Program 2448 MBS毎日放送携帯
Metadata:
name : MBS毎日放送携帯
provider_name :
Stream #0.15[0x281]: Video: h264, yuv420p, 320x180, 14.99 fps, 14.99 tbr, 90k tbn, 29.97 tbc
Stream #0.14[0x283]: Audio: libfaad, 24000 Hz, 1 channels, s16, 45 kb/s
Stream #0.16[0x287]: Data: 0x0006
Program 2199 Gガイド
Metadata:
name : Gガイド
provider_name :
Stream #0.12[0x7f1]: Data: 0x000d
Stream #0.13[0x7f2]: Data: 0x000d
上記のような場合は『Program 2064』を取り出すということになります.
あ,ちなみに後述するパッチを当てないと上記のようにならず,日本語表示部分が文字化けしますので注意.
[2010/09/22 追記] 分離をする場合,ffmpegのprogramidオプションでIDを指定し,-vcodec copy -acodec copyでうまく行くとのこと.ffmpegは奥が深いですな.このオプションの存在,知らなかった.詳しくは,こちらやこちらに解説されていますので,ご覧下さい.
○ H.264(x264使用)にトランスコードする
不要部分をカットしても,まだ容量的には非常に大きい.そのため,ライブラリ化というか,長期保存をしようとしたら,H.264にトランスコードし,よりコンパクトなサイズの物にしなければ現実的ではありません.なお,トランスコードするということは,(目に見えて分かる分からないは別として)オリジナルよりも画質が低下することを意味します.『綺麗なままで残したいんだ!』という方は,TSファイルのまま残した方が良いでしょう.
準備するものは,ffmpegだけでOKです.
以前,CentOSへffmpegをインストールする方法に関してまとめましたが,今回は最新のlibx264とffmpegを取得し直すと共に,ffmpegのビルド時のパラメータを一部変更してビルド&インストールし直す必要があります.
何はともあれ,先のページに示すような方法でビルド環境を作り,そしてlibx264とffmpegを再取得してください.
次にffmpegビルド時に,次のようなconfigureパラメータにしてください.
./configure --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-avfilter --enable-avfilter-lavf --enable-pthreads --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --disable-decoder=aac
キモは,『--disable-decoder=aac』を付けてffmpegの内蔵aacデコーダをオフにし,AACのデコードにはlibfaadを使わせることと,『--enable-libamr-nb』と『--enable-libamr-wb』が無くなったのでその対応です.
そして以下の(一部)日本語化パッチを当ててください.内容的には,こちらのページで公開されていたパッチの日本語化部分を抜き出し,不足分を足した物になります.
「ffmpeg-jp-201001.patch」をダウンロード
実際のffmpegを使用したエンコードは,こちらのページを参考にして行いました.前述のsplitしたtsファイルを食わせてみてください.
なお,最新のffmpegでは『-vpre』は絶対パスでの指定ではなくなっているので,先のページを参考にする場合,プリセットファイルは『/usr/local/share/ffmpeg/libx264-hq-ts.ffpreset』に格納した上で,『-vpre libx264-hq-ts』と書き換えて実行してみて下さい.
これでかなり綺麗なmp4ファイルが出来上がります.容量的には,1/5くらいにはなります.
ただ,前述したとおり,オリジナルのTSファイルよりもシャープさが落ちますので,ディスク容量が許すのであれば,オリジナルのまま保存しておきたいかな.
○問題点
と,いうことで,一応最低限の処理はLinux上で行えるようになりました.しかし,番組内や挿入されているCM等によって音声の切り替えが頻繁にある物の場合,トランスコード時にffmpegが盛大にエラーを吐いて死にます.
解決策としては,tssplitterで-SEPAオプションを使って行うように,音声チャンネルが変わった所でTSを分割し,必要な所をつなぎ合わせて…という作業でしょうか.
まだLinux上でこれを行うための良いツールを見つけられていないので,『無い物は作ろう』かなぁと思い始めています.
と,いうことで,4回に分けてポストしましたが,Linuxでも快適な地デジ録画環境が構築できました.興味のある方は,是非1日でも早くお試しになることをお勧めします.快適過ぎて,『もっと早く作っとけば良かった』と,思うことでしょう.
« PT2で録画したMPEG2-TSファイルの再生環境について&録画鯖の話 | トップページ | HYBRID W-ZERO3の設定をする »
「Linux」カテゴリの記事
- 家の中のネットワークを2.5GbEに置き換えて快適・高速化を試してみる&HeroBoxをNAS化(2022.09.20)
- 家のサーバやNW環境を停電に強い構成にするためにPoE化を考える:CHUWI HeroBox(2)(2022.08.29)
- 無音,ハイパフォーマンスなミニPCをLinuxサーバにする:CHUWI HeroBox(1)(2022.08.16)
- 【Linux】SoftRAIDを構成するディスクの交換(2014.09.02)
- 【Linux】出来るだけ簡単に行うブートディスクの換装(2014.09.01)
「PC」カテゴリの記事
- 小型で1万mAh,30W出力可能なモバイルバッテリで出張セットのアップデート:CIO SMARTCOBY PRO-30W(2023.08.31)
- 家の中のネットワークを2.5GbEに置き換えて快適・高速化を試してみる&HeroBoxをNAS化(2022.09.20)
- 家のサーバやNW環境を停電に強い構成にするためにPoE化を考える:CHUWI HeroBox(2)(2022.08.29)
- 無音,ハイパフォーマンスなミニPCをLinuxサーバにする:CHUWI HeroBox(1)(2022.08.16)
- 在宅勤務で便利に使える省スペースキーボード:ELECOM TK-FDM105TXBK と TK-FDM109TXBK(2020.04.30)
« PT2で録画したMPEG2-TSファイルの再生環境について&録画鯖の話 | トップページ | HYBRID W-ZERO3の設定をする »
コメント