■はじめに | |||||||||||||||||||||||||||||||
■環境について | |||||||||||||||||||||||||||||||
ホンページでは,Vine Linux 2.6r1をベースとした環境に関して解説します.
Vine2.5以前の場合は
apt-get を使用してアップデートを行い,2.6r1ベースの最新版と同等環境にする
ようにしてください.また,その他のLinuxディストリビューションを利用していたり,Asus
Terminator TU 以外のマシンを使用している場合,本ページの内容がそのまま利用
できない場合があります.その場合は,参考程度に読むようにしてください.
|
|||||||||||||||||||||||||||||||
■用意したボード | |||||||||||||||||||||||||||||||
詳しくは後述しますが,Linux で TV キャプチャを行う場合,
基本的にソフトウエアエンコードを行う
必要のあるキャプチャカードを利用することになります.最近は MPEG2 ハードウエア
圧縮を行うカードが廉価かつ主流になって来ていますが,これらはまだ Linux では
安定して動作しません.また,MotionJPEG圧縮を行うカード
で動作するものもありますが,国内での入手性はあまり良くないでしょう. [03/11/23追記] CX23415/CX23416を使用した MPEG1/2 ハードウエアエンコーダ搭載カードも安定して動き始めました.詳しくは こちらのページを参照のこと そのため,今回は Linux 上で動作実績が豊富にある,BT878 互換のチップを搭載 した TV チューナー付きのキャプチャカードを用意しました.用意したのは, AOpen VA1000 Lite および, I/O data GV-BCTV5/PCI の2種類です. |
|||||||||||||||||||||||||||||||
■TVを観る下準備 | |||||||||||||||||||||||||||||||
■オーディオ関係のセットアップ | |||||||||||||||||||||||||||||||
まずは,TVキャプチャカードの設定を行う前に,Vine Linuxで音声の録音および
再生が可能になるようにセットアップします.基本的に Terminator TU であれば,
Vine2.5β2以降を使用することにより,自動でオーディオチップを認識するはずです.
認識しない場合は,root権限でsndconfigコマンドを実行してください.
このコマンドを実行することにより,サウンドカードに関して適切な設定がされる
はずです.なお,
素の(アップデートを行っていない)Vine2.5 を Kernel2.4 で動かした場合,sndconfig
が実行できません.アップデータとしてsndconfig-0.68-2vl1.i386.rpm が
提供されていますので,ftp サイトからダウンロードし,アップデートしてから
実行するようにしてください. ちなみにVine2.6r1を Terminator TU で動かした場合,trident, ac97_codec, soundcore が読み込まれます.ちなみに soundconfig 実行後に設定される, /etc/modules.conf の当該部分は,以下のようになります.
※"post-install", "pre-remove" の行は,それぞれモジュールがロードされる 前後に,オーディオミキサー の設定をファイルから読み込む/書き出す設定です. 次に,オーディオミキサーを設定します.オーディオミキサーとは,各デバイスの ボリュームや入力レベル等を設定するためのものです.スピーカーから出力される 再生音声は,ミキサーで設定されたレベルのものが合成されて再生されると共に, 録音時には録音デバイスとして選択されたデバイスからの音声が,IGAIN で設定 されたレベルで録音されます. こでは X-window 上でグラフィカルに設定できる aumix-X11 の 画面ダンプを示しますが,コマンドライン上で aumix を使用して設定する ことも可能です.これらコマンドは,現在のミキサー設定をファイルに書き 出すことが可能であり,aumix-minimal コマンドで,予め用意したファイルを 読み込むことも可能です.
aumix-X11 の実行画面 画面上では入力デバイスとしてLine-IN を選択しています(画面上で赤いマーカー) が,キャプチャカードからの出力を CD-IN に接続した場合,CD を REC に選択します. なお,IGAIN が 100になっていますが,音が割れたりコモったりしない適正な レベルに調整しましょう.なお私は BCTV5/PCI の音声出力を CD-IN に内部接続 し,以下のような設定で使用しています.これを "/etc/.aumixrc" として保存すると, 再起動時には自動的にこの設定が読み込まれます. ※VA100 liteの場合,ケース内で配線することが出来ないため,ブラケットから Line-In 端子に配線して接続する形になります.この場合は,録音デバイスは Line-In にする必要があります.
若干補足説明を加えますと,1カラム目が入力デバイス,そして各チャンネル (L,R.ステレオ)のレベル,そして再生(P)のみにするか,録音(R)にも使用するか の種別です.なお,大抵の環境では,録音デバイスを複数にすることは出来ない ので,"R"は1つのデバイスのみに指定するようにしましょう(複数指定した 場合,後に設定されたものが優先されます). |
|||||||||||||||||||||||||||||||
■キャプチャカードの選択 | |||||||||||||||||||||||||||||||
LinuxでTVを観る際に,最も肝の部分は,使用するTVキャプチャカードの選択です.
2003年3月現在,Linuxで安定して利用できているキャプチャカードは,
ソフトエンコードのカードのみです.
その他のカードは入手困難であったり,動作が不安定でしょう. キャプチャカードが Linux で動作するためには,いくつかの条件があります.まずは そのビデオチップですが,Philips SAA7130/SAA7134 や Matrox MetroII, Conexant (旧:Brooktree)BT848/BT878 等の Linux で利用可能なドライバが 存在する必要が あります.また,ドライバーが存在する場合でも,カード独自の特殊なドライバでは なく,Video4Linux に対応したドライバを利用可能な方が良いでしょう. では,これら対応したビデオチップを搭載していれば動くかというと,そうでは ありません.搭載されているTVチューナーの種類,カード上のオーディオチップの 種類,その他設定等の問題により,利用できない場合があるほか,利用可能に するまでに一筋縄で行かないカードも存在します.新規に購入するのであれば, Linux での動作実績に関して下調べをした方が良いでしょう. 私は最も実績があり,かつ,廉価な BT878 チップを利用したカードを利用する ことにしました.なお,手元の Linx BOX にインストールされている bttv ドライバで利用可能なカードは, /usr/src/linux/Documentation/video4linux/bttv/CARDLISTの内容を見る ことにより,チェックすることができます.この中に書かれているカードであれば, 容易に 利用することが可能でしょう.なお,リストされていなければ使えないというわけ ではありません.
|
|||||||||||||||||||||||||||||||
■BT878Aチップ搭載のカードを選ぶ | |||||||||||||||||||||||||||||||
最近はBrooktreeブランドの BT848/BT878 を使用したカードは,
中古品以外お目にかかることは無く
なり,安価なキャプチャカードと言えば CONEXANT Fusion BT878Aチップ搭載のも
のになりました.このチップ,一応は BT848 の上位互換のようですが,カード
と bttv/Video4Linux ドライバの組み合わせにより,動作が不安定だという話も
聞きます(Vine2.5のときには私も経験しましたが,Vine2.6r1では安定しています).
ここ1年ほど, MPEG2 ハードウエアエンコーダ搭載のカードが急速に廉価に
なるにつれ,次第に BT チップ搭載のカードを店頭で見かけなくなりつつ
なって来たような気がします.確実にLinuxでの動作検証が取れているカードが入手
しにくくなる現状は辛いものがありますが,まぁ時代の流れでしょうね…
|
|||||||||||||||||||||||||||||||
■I/O Data GV-BCTV5/PCI編 | |||||||||||||||||||||||||||||||
■I/O Data GV-BCTV5/PCI | |||||||||||||||||||||||||||||||
I/O Data の現行商品です.並行してハードウエア MPEG エンコーダ内蔵のカード
(GV-MPG3TV/PCI) が売られており,価格差がかなり微妙なため,注目されることは
あまり無いような感じがしますが,ソフトエンコード TVキャプチャカードの中では,
画質がとても良いカードであると思います(とは言え,MTV2000 には逆立ちしても
かないません).機能的にも,TVチューナ (CATVも対応)
の他に FMチューナも付き,音声はステレオ,音声多重(EIAJ方式)対応であり,
Linux で使う場合に求めたい機能は一通り搭載しています.国内メーカー製のため,
入手性もまずまずです. ただ難点はその価格で, BestGateの検索ページで 調べますと,13,000円〜15,000円程('03/02現在)であり,玄人志向のカードが 5,000円以下で 購入できる(ただし FMチューナ機能は無し)ことを考えますと,かなり割高に感じ ます.私はと言いますと,'02の春先に,近所の電機店の閉店セールで1万円を かなり割り込む金額で購入しました.
|
|||||||||||||||||||||||||||||||
■GV-BCTV5/PCI 用の bttvドライバの設定 | |||||||||||||||||||||||||||||||
TV キャプチャカードは,基本的に挿しただけで自動的に認識し動作する…と,
いうわけには行きません./etc/modules.conf に使用するドライバに関する設定
を記述する必要があります.Vine 2.6であれば,以下のように記述することにより,
起動時に自動的に必要なモジュールが読み込まれ,利用できるようになります. なお,以下の記述は Vine 2.6 の場合です.インストールされている bttv ドライバが古い場合,card=81 という設定で GV-BCTV5/PCI が利用できません. この場合の設定例は後述します. ※各パラメータの細かな解説は省略します.また,tuner type として 2 (Philips NTSC : FI1236,compatibles)を設定している方もおられるよう ですが,17 (Philips NTSC_M : MK2) が detect されたので,こちらを使用 しています.
このように設定した後に再起動し,きちんとカードが認識されている かをメッセージで確認してください.例えば dmesg コマンドで当該部分 を確認すると,(/var/log/messagesにも記録されます)
の,ようになっています.なお,私の環境では, 稼動状況をモニタする MB温度からCPU使用率まで1 のように,i2c を最新版に入れ替えています.そのため, 古い i2c ドライバを使用している場合,若干メッセージの内容が異なる かもしれません.bttv0,tuner がきちんと認識されており,エラーが 出ていないかを確認してください. なお,bttvドライバが古く,CardType 81 に GV-BCTV5/PCI が登録されて いない(例:Vine2.5)場合,GV-BCTV4/PCI の設定を拝借し,以下のようにし てとりあえず動かすことができます. ただし,1回目のデバイスの使用 (TVの視聴や録画)は成功するものの,2回目はエラーが出て動かないなど, 動作は不安定でした. bttv ドライバを最新版に入れ替えた方が良いでしょう. ちなみに,bttv ドライバおよび i2c ドライバの最新版は, こちらのページから入手できます.
|
|||||||||||||||||||||||||||||||
■AOpen VA1000 lite編 | |||||||||||||||||||||||||||||||
■AOpen VA1000 lite | |||||||||||||||||||||||||||||||
TV チューナー搭載カードでは,非使用時であっても,チューナーユニットが
かなり発熱します.これはケース内温度の上昇や,Terminator の場合は電源温度
の上昇に直結します.GV-BCTV5/PCI を挿した際に,CPU温度が数度上昇するのが
確認されましたので,少しでもエアフローを改善すべく, Low Profile 対応の
AOpen VA1000 liteを購入しました.この製品はカード自身が小型になって
いるため,通常のブラケットを使用する場合であっても,エアフローの改善が
なされると考えました. ただし,このカードは, 商品紹介のページ を読んでも分かるように,機能的に GV-BCTV5/PCI と比較してかなり劣ります. 具体的には,FMラジオ機能が搭載されておらず,TV 放送に関しても,音声は モノラルのみです.また,一応『V.R.M.を搭載することによりノイズを大幅に 軽減』となっており,廉価なカードとしてはそれなりに画質が綺麗でしたが, GV-BCTV5/PCI には劣るように感じられました.温度の上昇を抑える効果も それほどではなかったため,最終的に私は GV-BCTV5/PCI を選択し, VA1000 lite は使用するのをやめました. VA1000 lite は Linux での動作実績も豊富ですので,安心確実に動作させたい 場合には選択候補の1つとして考えると良いと思います.しかし,コスト的な面, 機能的な面では玄人志向のカードの方がメリットがありますので,あまり強くは お勧めしません.
|
|||||||||||||||||||||||||||||||
■AOpen VA1000 lite 用の bttv の設定 | |||||||||||||||||||||||||||||||
GV-BCTV5/PCI と比較し,かなり以前から bttv で動作が報告されています.
そのため,若干古い bttv ドライバを使用している場合でも,問題なく動作させる
ことが可能だと思います. 以下の設定は,Vine 2.5 で利用した際のものです.GV-BCTV5/PCI のときと 同様,"/etc/modules.conf" に設定します.
そしてメッセージに以下のようなものが出力されていればカードの認識に 成功しています.
※試していないので何とも言えませんが,オーディオドライバの認識がうまく 行っていようなメッセージが出ているため,外部入力(外部Video,Audio IN)が うまく働かないかもしれません.ただし,TVチューナーとしてはきちんと使用 できていました.
|
|||||||||||||||||||||||||||||||
■ソフトのインストール | |||||||||||||||||||||||||||||||
■xawtvのインストール | |||||||||||||||||||||||||||||||
まずは,X-window上で TV を視聴するためのソフトをインストールします.
このソフトは,間接的に以下で説明する ffmpeg からも使用されますので,
必ずインストールするようにしてください. Vine 2.6であれば,VineSeed に xawtv-3.74-0vl1.i386.rpm が ありますので,ring サーバ等からこれをダウンロードし, rpm -ivh xawtv-3.74-0vl1.i386.rpm と,実行してインストール してください. ソースからインストールする場合は, xawtv Homepageを 参照してください.
|
|||||||||||||||||||||||||||||||
■ffmpegのインストール | |||||||||||||||||||||||||||||||
今回,TV録画および FMラジオ録音,他のマシンへのストリーミングには,
設定および運用が楽な ffmpeg を使用することにしました.ffmpeg は
音声として Ogg や MP3 を使用する場合,外部プログラム/
ライブラリを必要とします.そのため,ffmpeg のインストールに先立ち,
まずはこれらをインストールしました.(Ogg はそれほど使用する
機会は多くないかもしれません.ただし,MP3 は利用可能にしておいた方が
良いでしょう) Ogg を使用するために必要となるのは,libogg,libvorbis です. Vine 2.6 でしたら,VinePlus に以下のファイルが用意されていますので, ダウンロードし,rpm -ivH <RPMファイル名>でインストールします. libogg-1.0-0vl1.i386.rpm libogg-devel-1.0-0vl1.i386.rpm libvorbis-1.0-0vl1.i386.rpm libvorbis-devel-1.0-0vl1.i386.rpm
nasm-0.98.35-0vl1.i386.rpm
次にいよいよ ffmpeg ですが,ソースは オフィシャルページ からリンクを辿り,tar ボールをダウンロードします.私は ffmpeg-0.4.6.tar.gz を使用しました. インストールは以下のように行います.
エーラーが出た場合は,適時 fix してください.インストールが正常に 終了すると,/usr/local/bin 以下に ffmpeg,ffserv 等がインストールされます. |
|||||||||||||||||||||||||||||||
■設定と利用 | |||||||||||||||||||||||||||||||
■xawtv の設定 | |||||||||||||||||||||||||||||||
xawtv を使用して TV を視聴するためには,home ディレクトリ直下に
".xawtv" という名前で設定ファイルを置いておかなければなりません.
また,xawtv は X-Window 上で動作しますが,TV 画面表示のために
fb (frame buffer) が利用可能でなければなりません.適切な設定が
されておらず,TV画面が表示されずにエラーが出る場合は,
"/etc/X11/XF86Config","/etc/X11/XF86Config-4"ファイルを
設定し直してください. ちなみに私の Terminator TU では, XF86Config, XF86Config-4のように なっています.なお,この設定ファイルでは 画面表示モードは 1600x1200 24bit で表示するように しているほか,モニタのリフレッシュレートを高めに設定しています. 使用しているモニタに合わせ,適切な設定に書き換えて使用するように してください.古いモニタの場合,そのまま使用すると 故障する可能性があります. ".xawtv" には,利用可能なチャンネル等の情報を記述します.私は CATV 接続で TV を視聴しているのですが,日本国内で TV を視聴する場合は,ほぼ 同じ設定で動くと思います.TV 画面上下にチラチラとノイズが乗る場合, 設定ファイルに周波数を記述し,微調整してみてください.なお,私の環境 では Video 入力はテストしていません(WowWow を入れたいのですが,チューナー の場所が遠いので…).もし必要な場合は,以下のように追記してください.
私の使用している".xawtv"ファイルは,このように なっています.画質調整などは適時自分の環境に合わせて調整してみてください.
|
|||||||||||||||||||||||||||||||
■xawtv の使用 | |||||||||||||||||||||||||||||||
".xawtv" 設定ファイル作成後,xawtv コマンドを実行することにより,TV
を視聴することができるはずです.ffmpeg を使用する前に,xawtv できちんと
TV が視聴できるかを確認しましょう. 以下の例は Eden (EPIA-5000) で VA1000 lite を使用して TV を視聴している画面をキャプチャしたものです. EDEN は C3 533MHz という非常に非力な CPU を搭載していますが,このような 環境下でも,パフォーマンス的に問題なく TV を観ることができます.
表示品質的には,普通に鑑賞する分には問題ないレベルです.ただし, BT チップは,コントラストが高くなってしまい,白飛びしやすいという 問題があります(.xawtv で bright 等を調整しても限界がある).また, 3番目の画像のように,受信状況が悪い場合はどうしようもなくメタメタな 画像になってしまいますが,これは TV でも同じです.アンテナ線の 取り回し等に気を付けましょう. ※JPEG圧縮率を高めにしているため,上記画像はかなり画質がスポイル されています.また,動画として見た場合には問題ないレベルであって も,静止画として見た場合には画質が悪く感じる場合もあります.例えば 3番目の画像では,ソースがインターレースのため,櫛形ノイズが出ていて 汚く見えますが,動画としては普通に鑑賞できる品質です. なお,上記画像では輪郭が滲んで見えると思いますが,GV-BCTV5/PCI で あれば,かなり改善されます.とは言え,MTV2000 をはじめとする 3次元Y/C分離機能を搭載したカードとは比較になりませんが….
|
|||||||||||||||||||||||||||||||
■ffmpeg を使用した TVの録画 | |||||||||||||||||||||||||||||||
ffmpeg がきちんと動作するかを確認するために,まずは ffmpeg を
使用し,1ch の TV放送を60秒間録画してファイルに記録してみること
にします.なお,ビデオの圧縮 codec として,高圧縮率かつ高画質で
定評のある,DivX を使用することにします.録画したファイルを再生する
Windows マシンには,
DivX のダウンロードページ
からダウンロードした DivX,あるいは DivX pro を予めインストール
しておいてください.Linux 上で再生するためには,MPlayer 等を
インストールする必要がありますが,こちらに関しての解説は
省略します.
今回使用した ffmpeg のパラーメータに関して説明すると,以下のように なります.
なお,ffmpeg で使用できる各オプションは,ffmpeg -h を実行する ことにより表示可能であり,利用可能な codec は,ffmpeg -formats で 表示することができます. 録画したファイルは,DivX codec がインストールされた Windows マシンに 転送し,Windows Media Player で再生することが可能です.
なお,ffmpeg はキャプチャーデバイスから直接取り込むほかに,既に存在 動画/音声ファイルを読み込み,別形式に再エンコードすることも可能です. 例えば,暗号化されていない DVD-video の vob フォーマット画像を,DivX 形式に変換すること等も可能です.
|
|||||||||||||||||||||||||||||||
■FMラジオの再生 | |||||||||||||||||||||||||||||||
FMラジオチューナー搭載のキャプチャカードを
利用している場合,xawtv をインストールすることにより,FM ラジオを聞く
ことも可能になります.xawtv にはネーミング
からしてそのものズバリの radio というコマンドが含まれており,
このコマンドを使用して周波数チューニングすることになります. ただし,本来であれば,このコマンドを使用すれば, CUI 上で周波数を 設定するだけでラジオが聞ける筈なのですが,GV-BCTV5/PCI では, チューニングは出来ましたが,音声は再生されませんでした.どうも音声が 自動的にミュートになって しまうようです.そのため,FMラジオを聞く場合は,以下のようにコマンドを 組み合わせて音声を再生するようにしました.
このままですと FM放送がスピーカーから再生され続けます.音声再生を 停止する場合,次のようにコマンドを実行します.
なお,当然ながら, FMラジオチューナーが内蔵されていない TVチューナー カードでは,FMラジオを再生することができません.そのため,VA1000 lite では,FMラジオを聞くことはできません. |
|||||||||||||||||||||||||||||||
■FMラジオの録音 | |||||||||||||||||||||||||||||||
FMラジオが再生可能である場合,録音を行うことも可能です.その際には,
ffmpeg を使用することにより,任意の圧縮形式にリアルタイムで圧縮しながら
保存することも可能です.例えば次のように実行します.
録音終了後もラジオ音声が再生され続けますので,v4lctl コマンドを使用し, 音声出力を mute するようにしてください. 一部前述したものと重複しますが, ffmpeg のパラーメータに関して説明すると, 以下のようになります.
録音された音声ファイルは,Linux 上であれば mpg123,Windows 上で あれば,MediaPlayer 等で再生可能です. |
|||||||||||||||||||||||||||||||
■ストリーミング | |||||||||||||||||||||||||||||||
■別のマシンでの再生 | |||||||||||||||||||||||||||||||
ここまで,FMラジオや TV を録音/録画し,ファイルに書き込む方法
に関して解説して来ました.しかし,録画済みのファイルを別のマシンで再生
したいといった場合や,今放送されている番組を別のマシンで見たい
といったニーズもあるのではないかと思います. 私の場合,サーバはサーバとして稼働させ,直接そのサーバ上でこれら ファイルを再生することはまずありません.大抵は別のマシン,それも Windows マシンで再生しています. まずは別のマシンで録画済みのファイルを別マシンで鑑賞する方法ですが, 最も手っ取り早いのは,sambaでファイル共有をしている場所にファイルを保存し ておき,クライアントマシンはそのファイルを直接再生する方法です.別の 方法としては,ファイルをクライアントマシンに転送し,転送後にローカル ディスク上のファイルを再生する方法です. 後者の場合,動画ファイルは大抵大きなファイルサイズとなるため,転送 待ち時間が大変苦痛になるのではないかと思います.また,前者の場合, 共有ディスクの設定をし,利用者はそれをマウントし…と,準備に若干手間 がかかります.そこで,『今放送されている番組を別のマシンで見たい』と いったニーズの解決も含め,ストリーミングを行うことによって, 手軽に他のマシンから鑑賞する方法について解説します.
|
|||||||||||||||||||||||||||||||
■ffserverの設定と利用 | |||||||||||||||||||||||||||||||
ffmpeg パッケージには,ffserver というストリーミングを行うための
ソフトが含まれています.このソフトは,ffmpeg と連携することにより,
音声や動画を,様々なフォーマット(RealやASF等)でストリーミングすること
が可能です. ffserver を使用するためには,まずは ffserver の設定ファイルを作成 する必要があります.設定ファイルのサンプルは,ffmpeg の tar ボールを 展開したディレク トリ下の,doc/ffserver.conf にあります.このファイルにはコメントもきちん と書かれておりますので,一読すれば行えることが一通り理解できると思い ます.しかし,これを修正すれば大抵のことが出来るようなサンプルに なっていますが,余計な記述を残しておくと不安定になる場合も多いため, スクラッチから必要な設定のみを記述していくのが良いと思います. なお,私の環境では,RealAudio/RealVideo に関し,ビットレートを変更 すると正常にクライアントが受信できなかった(RealOneがフリーズを起 こしたりする)ため,ASF 形式のみを使用し,Media Player で鑑賞可能 するように設定しました.以下に,ffserver.conf の例を示します.
設定内容の説明は,重要な部分のみに止めます.まずストリーミングは 10080
ポートで行い,feed 用ファイル( ffserver のワーク用ファイル)は /tmp/feed1.ffm
に設定.ストリーミングは2形式で行い,動画と音声を tv.asf として流す他,
音声のみを radio.asf として流す.そしてステータスファイルの表示も行うという
設定です(あ,ACL で deny を書き忘れてた…). これを /etc/ffserver.conf として保存し,まずは ffserver を バックグラウンドで起動します.
エラーが出ていなければ起動成功です. 次に,ffmpeg を起動し,ffserver にデータを渡します.例えば FMラジオ (80.2MHz)をストリームで流す場合は,次のように行います.
※ffserver の設定を変更した場合,ffmpegの引数として渡した 『http://localhost:10080/feed1.ffm』は, 設定ファイルに記述したポート番号,feed 用ファイル名に置き換えて ください. このように,エラー無く実行されたら,ストリーミングが成功しています. Internet Explorer 等で,『http://サーバホスト名:設定したポート番号/stat.html』 にアクセスしてみてください.以下のようなページが表示されるはずです.
ステータス表示画面 このステータス画面で,どのようなストリーミングが行われているかや, どのような設定でストリーミングされているかが表示されます.そして, この画面で tv.asf や radio.asf をクリックすれば,MediaPlayer が起動し, ストリーミング(この例では FMラジオをストリーミングしていますので, tv.asf をクリックしても動画は流れてきませんが)で鑑賞できるはずです. なお,MediaPlayer から直接URLを入力しても再生することができます.
TVを観る場合には,上記のように ffmpeg を実行せず,v4lctl コマンドで
チャンネルを設定し,ffmpeg の起動時のパラメータを以下のように指定する
必要があります.
MediaPlayerで再生すると,以下のようになります.ちなみにこれは VA1000lite を使用し,Video:2000kbps, Audio:64kbps でストリーミングしたものですが, かなり画像が汚くなっています.Video を 1000kbps に落としても画質は殆ど 変わりませんので,ビットレートの不足ではなく,ビデオキャプチャの品質 および圧縮 codec が原因の画質劣化だと思われます.(GV-BCTV5/PCI を使用し, DivX で圧縮した場合,ビットレートが低くても綺麗に記録されます) とは言え,普通に観る分には問題ないクオリティが確保されています.
Media Player で TV 放送をストリーミングしているものを再生している画面
|
|||||||||||||||||||||||||||||||
■録画したファイルをストリーミング | |||||||||||||||||||||||||||||||
リアルタイムで FMラジオおよび TV 放送をストリーミングする方法に関して
解説しましたが,同様に,既に録音/録画したファイルをストリーミングするこ
とも可能です.この場合には,ffserver 実行後,以下のように ffmpeg を実行
します.
|
|||||||||||||||||||||||||||||||
■予約録音/録画 | |||||||||||||||||||||||||||||||
■構想 | |||||||||||||||||||||||||||||||
リアルタイムでTVが鑑賞でき,録音および録画も可能になり,また,
他のマシンからも視聴できるようになったとしたら,次なるハードルは
予約録音/録画です.これが完成すれば,AV サーバとして実用的なものに
なると思います. この機能を実装するために必要なものとしては,以下のようなものが 挙げられると思います.
これらを実現するために,録音/録画時に前述したような各種 パラメータをいちいち入力するのは面倒ですので,まずは ffmpeg の簡易 フロントエンドとして動作するスクリプトを作成することにします.次に, 予約はテキストファイルに記録することにし,cron で定期的に起動する プログラムを作成して,予約時間が来た際に自動的に録音/録画開始するよう 設定します.これらが実現できたら,最低限の予約録音/録画が可能になり ます.
|
|||||||||||||||||||||||||||||||
■ffmpeg の簡易フロントエンド | |||||||||||||||||||||||||||||||
フロントエンドとは言え,毎回利用するオプションを省略して実行可能な
スクリプト程度のものです.例えば私の場合,TV録画のために以下のような
シェルスクリプトを作成し,/usr/loca/bin/tvrec.shに起きました.なお,
chmod +x /usr/local/bin/tvrec.shを実行し,ファイルの実行フラグを
立てるのを忘れないようにしてください.
殆ど使い方の説明は必要無いと思いますが,例えば 1ch の TV 放送を,
音声は MP3 128kbps stereo,動画は DivX 1000kbpsでキャプチャし,
AVI 形式で 1時間分 /tmp/1ch.avi に記録する場合,以下のように
実行します.
次に,FM ラジオ録音用のスクリプトです.こちらは /usr/local/bin/radiorec.shに置きました.こちらも同じように, 実行フラグを立てるのを忘れないようにしてください.
80.2MHz の放送を MP3 128kbps stereo で1時間,/tmp/802.mp3 に MP3 形式で録音する場合は,以下のように実行します.
|
|||||||||||||||||||||||||||||||
■予約登録プログラム | |||||||||||||||||||||||||||||||
とりあえず今回は,エディタを使用して,テキストファイルで予約リストを
作ることにしました.いずれは Web 版インターフェイスを作成しようと思っています. なお,私の作成したプログラムでは,以下のようなフォーマットのファイルを 食わすようにしています.
|
|||||||||||||||||||||||||||||||
■予約ハンドリングプログラム | |||||||||||||||||||||||||||||||
予約リストファイルを読み込み,時間が来たら自動的に前記スクリプトを起動
して予約するプログラムです.
プログラム本体に関しては,現在,C から Perl に書き換えている最中なので
しばしお待ちを….とりあえず自分のやりたいことは出来ているので,最近多忙
なこともあって公開は遅くなるかも.リクエストが多ければ,現状のものサクッと
公開するかもしれませんが…
crontab -eコマンドを実行し, crontab に下記エントリーを追加してください.
なお,一応書いておきますと,本プログラムは サスペンドから復帰して予約開始するようなことはできません.常に マシンは稼働している必要があります.
|
|||||||||||||||||||||||||||||||
■まとめ | |||||||||||||||||||||||||||||||
と,このようなことを行うことにより,Linux をベースとしたマシンで,
FM ラジオや TV が楽しめる環境が整いました.しかし,TV録画に関しては,
画質や使い勝手などの面で,Windowsベースの環境にはかなり劣るかと思い
ます.特に,カノープスの MTV シリーズを使用した録画システムであれば,
画質はピカイチですし,圧縮は MPEG2 ハードウエアエンコードのためコマ
落ちが無く,また,サスペンド状態から復帰しての予約録画も可能です. 今回使用したチューナーカードは,ソフトウエアコンコードのカードで あるため,CPU の負荷等によっては,コマ落ちや画質の低下が発生します. 私の Terminator TU では,Pentium3-S/1.26GHz を使用していますが, 色々と試した限りでは,352x240 サイズでのキャプチャが実用的な限界 でした(NTSC の解像度を考えると,充分であるとも言えます).また, 普通の状態であればコマ落ちは殆ど発生しませんが,それでも発生しない わけではありません. かれこれ2ヶ月ほど実運用をしていますが,画質を求める場合は家電の DVD-RAMレコーダで予約録画することにし,多少画質が落ちても良いものに 関しては,PCで録画するような使い分けをしています. さて,今後可能であればしたいこととしては,
辺りを考えています.しかし,最近多忙過ぎ,なかなか趣味のプログラ ミングの時間が取れないのが辛いです….最終形態の完成はいつになることやら…
['04/1/04 追記]
|