Linuxでテレビ

ALSAのインストール

最近は、ALSAの方が主流になってきたので、ALSAに切り替えることにしました。
TurboLinuxにはALSAと便利な設定プログラムがインストール済みなのでrootでturboserviceでalsasoundを実行開始し て、alsaconfでGUIベースで設定できます。
サウンドカードとIDを指定して、再生バッファと録音バッファ(デフォルトのままで問題ありません)を指定し、最後にNo More Cardsを選択し、Do you want to modify /etc/modules.conf?にはYesと答えると、終わりです。
バージョンによっては、ミキサー設定画面がでるので、音量を設定します。

#alsaconf

なお、再起動時には、オーディオミキサーを起動しておきます。
そうしないと、全チャネルミュートになってしまいます。

ALSAの停止は/etc/rc.d/init.d/alsasound stop、起動は/etc/rc.d/init.d/alsasound startです。

RedHat等、OSSの場合はこちらです。参考

テレビを見よう

今Windowsで流行りの、テレビを見てみることにします。
Windowsでできることは、何でもできないと、なかなか移行が進みません。

Video for Linuxをサポートしたキャプチャカード(すなわちBT848/878系)であれば、xawtvで見ることができます。
なお、最近流行りのUSB接続タイプとかハードウェアMPEG*圧縮タイプは使えません。
TurboLinux,RedHatLinuxには添付されているので、これを使います。
その前にデバイスファイルがなければ作る必要があります。

名前 メジャー マイナー タイプ 内容
/dev/video 81 0-63 キャラクター ビデオキャプチャー
/dev/radio 81 64-127 キャラクター AM/FMラジオ
/dev/vtx 81 192-223 キャラクター Teletext(文字放送)
/dev/vbi 81 224-239 キャラクター VBIのデータ(Adams,Bitcast)
/dev/i2c 89 0-? キャラクター I2Cバス

そこで、CD-Rの項で使ったmknodでデバイスを作ります。
#cd /dev
#mknod video0 c 81 0
#mknod radio0 c 81 64
#mknod vtx0 c 81 192
#mknod vbi0 c 81 224
#mknod i2c0 c 89 0
#ln -s video0 video
#ln -s radio0 radio
#ln -s vtx0 vtx
#ln -s vbi0 vbi
#ln -s i2c0 i2c
#chmod 666 video0 一般ユーザーがアクセスできるようにする
#chmod 666 radio0
#chmod 666 vtx0
#chmod 666 vbi0
#chmod 666 i2c0

/etc/modules.confにドライバのロードを追加します。
最後の行は、多くの場合省略できます。(他にチュー ナーデバイスやUSBカメラある場合は省略不可もある)
なお、赤い行を省略した場合、青い部分は省略できます。
alias char-major-89     i2c-dev
options i2c-core
options i2c-algo-bit bit_test=1
options i2c-dev
alias char-major-81 videodev
alias char-major-81-0 bttv
options bttv card=2 tuner=2 radio=0
options tuner type=2
また、Video for Linuxモジュールはパラメータを指定できるようにモジュール指定でカーネルを再構築した方が良いようです。
カーネル2.2系の場合はこちら

今回使用したAD-TVK501(PicPon Linux同等品)では、card=0(カードタイプ0/Generic)では映像だけ出て音が出ず、こ こ によると、card=2にすれば良いことが判明しました。
カードタイプやチューナーの種類の詳細は/usr/src/linux- *.*.*/Documentation/video4linux/bttv/CARDLISTを参照すると、似たカードが見つかるかも知れません。(* にはカーネルのバージョンが入ります)
なお、ここには色々ドキュメントが入っているので一通り読んだ方が良いかも知れません。

チューナの種類(NTSC)
2 Philips
6 Temic
8 Alps TSBH1

なお、サウンドデコード処理チップというのは音声多重やステレオ放送のデコードを行うチップです。対応しているなら、Insmod-optionsの tvmixer.oやtvaudio.oの所を良く読んでおきましょう。

また、ホームディレクトリに.xawtvを作ってチューナーのモードを指定しておきます。
ヨーロッパ起源のOSであるためか、デフォルトがPALになっているので、NTSCに対応させるにはこれが必要になります。
なお、ケーブルテレビの場合は、japan-bcastjapan-cableにすると対応できます。

[global]
freqtab = japan-bcast

[defaults]
source = Television
norm = NTSC-JP

あとは、起動するだけです。-noxvは環境によって不要な場合もあります。

#xawtv -c /dev/video0 -noxv&

なお、ビデオキャプチャデバイスが1つしかない場合は、-cオプション以降は不用で、複数ある場合は認識された順にvideo0,video1,...と なります。

メイン画面
メニュー
チャンネル
メイン画面(テレビ画面が表示されます)
メインメニュー
チャンネルウィンドウ
右クリックで設定メニューが出るのでChannel Editorでチャンネルを登録します。
チャンネルは直接数値を入力するのではなく、上下キーです。

Grab Imageで静止画をキャプチャしたり(画像はホームディレクトリに入ります)、Record MovieウィンドウでAVIファイルに録画も出来ます。
start/stop recordingで、録画の開始・停止をします。タイマー録画など、自動的に何かさせたい場合は、Video for Linux内蔵のv4lctlコマンドでCUI操作できます。
録画ウィンドウ
録画中
録画ウィンドウ
録画中

手動でロードする場合

Alsaを使っている場合、うまく自動ロードされないことが多いようです。
これを、/etc/rc.d/rc.localに追加しておくと便利です。(insmodの前に/sbin/が必要なときもあります)
カーネル2.2系の場合はこ ちら
3
赤い行は、多くの場合省略できます。(他にチュー ナーデバイスやUSBカメラある場合は省略不可もある)
なお、赤い行を省略した場合、青い部分は省略できます。
#insmod videodev
#insmod i2c-core
#insmod i2c-algo-bit bit_test=1
#insmod i2c-dev
#insmod tuner type=2 debug=0
#insmod bttv card=2 tuner=2


ちなみに、この/etc/rc.d/rc.localは起動時に何かをやらせたいときによく使います。

MP3を聞く

TurboLinux付属のプレイヤー(xmms)では聴けないものが多いので、freeampを使います。
freeamp(http://www.freeamp.org )はインストール後にplayをクリックするとIntroductionダイアログが開いてファイルを探して自動的に登録してくれます。
しかも、xmmsやWindows用プレーヤーであるscmpxのプレイリストまでインポートするとは素晴らしい。
RPMパッケージがあるので、これでインストールします。

#rpm -ivh freeamp-2.0.8-1.i386.rpm

あとは、freeampで起動できます。

2001.8.16追加:TurboLinux8では、標準でインストールされています
2002.12.7追加:この頃はxmmsも良くなってきました

MP3を作る

とりあえず、国産MP3エンコーダの代表格である「午後のこーだ( http://homepage1.nifty.com/herumi/ )」をインストールします。
ただし、午後のこーだは特許問題から現在はソースのみの配布になっています。

ソースパッケージ(tarball)のインストールは基本的に次の手順で行います。
  1. パッケージの解凍(bzip2,gzip,gtar,tarを使う)と解凍したディレクトリへの移動
  2. 設定(たいていは./configure)
  3. パッチがあればパッチを当てる(たいていはpatch -p1 パッチ)
  4. コンパイル・リンク(たいていはmake)
  5. インストール(たいていはmake install)
たいていの場合、./configure ---helpでコンパイル時に指定できるオプションが見られます。
また、パッケージに共有ライブラリ(*.so.*、WindowsでのDLLに相当)が含まれる場合は、ldconfigを実行してそれを反映する必要が あります。(たいていはmake install時に実行されます)

まず、午後のコーダのコンパイルにはNASM(http://www.web-sites.co.uk/nasm/ )というアセンブラが必要なので、RPMパッケージをダウンロードしてインストールします。
NASMのパッケージ同士で、いくつかのモジュールがコンフリクトするので、--forceをつけます。
NASMはTurbo Linux JapanのFTPでも入手できます。(多少古いかもしれません)

#rpm -ivh --force nasm-0.98-1.i386.rpm
#rpm -ivh --force nasm-0.98-1.src.rpm
#rpm -ivh --force nasm-doc-0.98-1.i386.rpm
#rpm -ivh --force nasm-rdoff-0.98-1.i386.rpm

では、午後のこーだ本体の解凍です。

#gzip -d gogo238.tgz
#gtar -xvf gogo238.tar

gogo238というディレクトリができていますので、そこへ入ります。

#cd gogo238

そこで、コンパイルとインストールをしますが、下準備の設定を行います。
設定は不用です。

#make
#make install

あとは、gogoで起動できます。


CDのリッピング

これには、Gripというたいへん便利なものがあります。

grip &

起動して、トラックタブを選択して、CDを入れるとトラックリストがでるので、右クリックでリッピングしたい曲にチェックを入れたら、設定タブで情報を セットし、切り出しタブで一括処理をクリックすると、ホームディレクトリのgripディレクトリにリストファイルとともにMP3ファイルの出来上がりで す。mp3には一時ファイルが作られます。
メインウィンドウの鉛筆アイコンをクリックで、MP3の情報を設定できます。
ただ、私の環境ではcdparanoiaではなく、cdda2wavでないとうまくいきませんでした。(coreダンプ)変更方法は、設定-切り出し-切 り出しツールで切り出しツールボックスから選択できます。
また、設定-OGG/MP3-エンコーダで、エンコーダーも選べます。
Gripは、ほかにもいろいろできそうです。

OggVorvis のエンコードは、oggencが入ってるのでそれで変換できます。

2001.8.16追加:OggVorvisについて

OggVorvisは 特許問題で揺れるMP3に代わるオープンソースの音声圧縮CODECで、FreeAmpやXMMSなど、多くのプレイヤーでサポートされています。

エンコードはoggencです。

#oggenc tato.wav

多くのディストリビューションでは、OggVorvisが既にインストールされていますが、インストールされていない場合は、rpmを拾ってきてインス トールすると、OggVorvisを扱うことができます。

あと、サンプリングレートの変換などをするときには、soxが使えますが、spwaveというGUIで使えるもあるので、こちらのほうがとっつきやすいです。
録音は、CUIのrecordや、GNOME sound recorderがたいてい付属しています。

RealAudioを聞く

RealAudio のサイトでRPMが配布されているので、これをインストールします。

rpm -ivh --force rp7.linux20.libc6.i386.cs1.rpm

kdeの/usr/share/mimelnk/audio/x-wav.kedlnkとぶつかるので(RealPlayerが使えるように書き換えるた め)--forceをつけてインストールします。
そうすると、Windows同様の設定画面が表示されるので、メールアドレスと国名を入力し、通信帯域幅を設定すれば設定は完了です。

#realplay

これで使えます。オーディオミキサーを起動して、音量の再設定を忘れずに。起動ごとに再設定しないと無音になってしまいます。
2001.5.1 追加:RealPlayer8(RealPlayer G2)ではMP3も再生できます。

次にRealAudioファイルを作るツールのRealProducerは、tar.gz形式なのでtarの解凍から始めないといけません。
適当なディレクトリを作って、そこへファイルを入れてから、移動します。

#gzip -d RealProducer_8.0_Linux.tgz
#mkdir prod
#cd prod
#gtar -xvf ../RealProducer_8.0_Linux.tar
#./install ./を忘れると標準のinstallが立ちあがります

これでインストーラーが立ちあがります。インストール先を聞いてきますがデフォルトで問題ありません。
終わるとRealProducerが使えます。

#realproducer

ヘルプは--helpで見られます。なお、コマンドラインベースです。


動画をみる

まずは定番xanim,xmps(X Movie player system)があります。AVI,MPEG1ならこれでみられるでしょう。おまけとして、WAV再生もできますが、MP3は音質が変です。
使用法はxanim or xmps ファイル名です。
なお、8bpp(256色),16bpp(65536色),32bppの画面のみサポートしているので、それ以外の場合はXconfigratorか turboxcfgで設定し直しておきましょう。ただ、MPEGはうまくデコードできない物もあるようです。(xmpsの方がまだ良い)

ほかにMPEG2関連の m2mXINEQuickTime for Linuxzapping も要チェックです。
VideoLAN(MPEG,DVD) やOpenDivXを再生できるMPlayer もあります。

Mplayerは./configre前に/usr/lib/win32を作って、そこへw32codecs.zip(windows32 codec)を解凍する必要があります。コンパイルはmake dep;make;make installです。
最後にcp DOCS/codecs.conf ~/.mplayer/codecs.confで設定ファイルを初期化します。
全体的にみて、XineとXMPSあたりがうまく再生できるファイルが多いようです。

それと、MPEG1を作るならmp1eというコマンドラインのエンコーダが入っています。しかも、キャプチャデバイスからの直エンコードもできる優れ物で す。これでWindowsに負けません。

2002.12.8追加:gstreamerもたくさんのフォー マットに対応していいますが、依存モジュールが多いのでビルドは苦労します。
起動は、gst-playerです。

動画を作る

編集は、海外のcinalerraを はじめ、色々ありますが、国産のVideoMaidが Linuxで復活しています。まだ無圧縮AVIのみですが、今後が期待できます。

mpeg圧縮も、sampegやmjpegtools等、色々あります。とりあえずmjpegtoolsが使っている人が多そうです。
ただ、mpjegtoolsは、このようなフローで変換を行い、多少手順が面倒ですが、その分カスタマイズの余地があります。
その他には、transcodeやffmpegがあります。

MPEG変換フロー

AVIファイルをtest.aviとすると、このようになります。
#lav2yuv test.avi > test.yuv 映像の切り出し
#mpeg2enc -o test.m1v < test.yuv 映像の圧縮(-bで ビットレート指定可)
#lav2wav test.avi > test.wav 音声の切り出し
#mp2enc -o test.mp2 < test.wav 音声の 圧縮(-bでビットレート指定可)
#mplex test.mp2 test.m1v -o test.mpg 圧縮済映像と音声の 結合

transcodeの場合

オプションが異様に多いです。

例 MPEG1圧縮
#transcode -i test2_mjpeg.avi -y mpeg -k -I 1 -o test2_mjpeg.mpg
入力圧縮フォーマット(mpegで mpeg1/2、divx4divx5もあり)、出力先です。-kはキャプチャフォーマットによっては必要で す。(MJPEGでは必要、RGB24では不要でした。間違えると色調が変になります。) -I 1は、インターレース解除が必要な場合に つけます。モードを1,2,3,4,5のなかから選べるので画室が良さそうなものを探してみるのも良いかも知れません。
また、-FオプションでCodecにオプションを渡して微調整もできます。ちなみにmpegはcore dumpしています。

ffmpegの場合

こっちもオプションが異様に多いです。

例 MPEG1圧縮
#ffmpeg -i test2_mjpeg.avi -vcodec mpeg1video -acodec mp2 test_mjpeg.mpg
入力と圧縮フォーマット(映像音声)、出力先です。上書きの問い合わせの省略は-yで す。他に-b(ビットレート)、-hq(高画質設定)、-deinterlace(イ ンターレース解除)などの微調整用のオプションがあります。rgb24は、なぜか受け付けないようです。

サポートしているCodecはこれで見ることができるのですが、たくさん入っています。
#ffmpeg -formats


pmidi でMIDIを聴く

pmidiでLinuxでMIDIを聞くことができます。これでMIDI on Linuxも本領発揮できるというものです。

インストールは以下の手順です。

gtar -xvzf pmidi-1.4.1.tar.gz
cd pmidi-1.4.1
make
make install

まず、使えるMIDIポートを検索します。

#pmidi -l

 Port     Client name                       Port name
64:0 External MIDI 0 MIDI 0-0
65:0 Emu10k1 WaveTable Emu10k1 Port 0
65:1 Emu10k1 WaveTable Emu10k1 Port 1
65:2 Emu10k1 WaveTable Emu10k1 Port 2
65:3 Emu10k1 WaveTable Emu10k1 Port 3
確認したら、以下の操作で再生できます。

pmidi -p 64:0 ファイル名

64:0は、pmidi -lで確認したポート番号です。MIDI on Linuxは外部MIDIデバイスなのでExternal MIDI 0を指定しました。


日本語入力環境

一応キーバインドの都合でWnnを使ってきたが、これにも困った欠点がある。
それは、漢字モードの切り替え時等にフォーカスがWnnに勝手に移動するため、そのたびに、フォーカスを戻す必要があることです。
しかも、戻すと勝手に漢字モードが解除されることもあり、せっかく入力したものが、ほかのウィンドウやほかの場所に行ったり、消えたりして困ったもので す。

しかし、添付されているATOK12は相変わらずの変則キーバインドであるため、使う気がしない。そのため、文章の入力は相変わらずWindowsで行わ ざるを得ないのです。

本当に、まともなLinux用日本語入力が欲しいものです。


おまけ

標準のデバイスを消して困ったときは、/dev/MAKEDEVを実行すると復活します。
デスクトップをクリックして出るメニューからデフォルトアイコンの再作成を選ぶとアイコンが復活します。

もうひとつ、間違ってsmpカーネルをいれて、以後カーネルのバージョン表示が変わらなくなって困った場合は、/lib/modules以下にあるカーネ ルバージョンの名前のファイルのリンク先をチェックしましょう。
おそらく、ファイル名の末尾にsmpがついたファイルにリンクされています。
ln -sコマンドで同名でsmpのない方に張りなおしておきましょう。

/etc/modules.confに記述しても、どうしてもロードしてくれない場合は、/etc/rc.d/rc.modulesにmodprobeを 追加すると良いようです。

/sbin/modprobe モジュール名、オプションなど