動作確認環境:Fedora Core 1
ffmpeg
ffmpegについて
- ffmpegは、各種ビデオファイルフォーマットの変換機能、TVチューナ映像のエンコード機能等を持つフリーソフトです。また、配信サーバ「ffserver」が含まれており、httpプルトコルでビデオのストリーミング配信ができます。下の写真は、LAN上ののWindowsマシンでASF形式のTV映像を受信しているところです。
【ffmpegによるTV映像の配信】
ffmpegのインストール
- aptを使用すると、非常に簡単にインストールができます。以下の手順でffmpegをインストールします。MPEG2/MPEG4対応音声エンコード/デコードツールFAAC(Freeware Advanced Audio Coder)とimlib2(image manipulation library)もインストールされます。
$ su
# apt-get install ffmpeg <--インストール
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
faac imlib2
The following NEW packages will be installed:
faac ffmpeg imlib2
0 upgraded, 3 newly installed, 0 removed and 116 not upgraded.
Need to get 1199kB of archives.
After unpacking 2999kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ayo.freshrpms.net fedora/linux/1/i386/freshrpms faac 1.23.5-1.fr [71.5kB]
Get:2 http://ayo.freshrpms.net fedora/linux/1/i386/freshrpms imlib2 1.1.0-1.fr [228kB]
Get:3 http://ayo.freshrpms.net fedora/linux/1/i386/freshrpms ffmpeg 0.4.8-2.fr [900kB]
Fetched 1199kB in 12s (95.5kB/s)
warning: /var/cache/apt/archives/faac_1.23.5-1.fr_i386.rpm: V3 DSA signature: NOKEY, key ID e42d547b
Committing changes...
Preparing... ########################################### [100%]
1:ffmpeg ########################################### [ 33%]
2:faac ########################################### [ 67%]
3:imlib2 ########################################### [100%]
Done.
|
設定ファイル( /etc/ffserver.conf )
- ffserverの設定ファイルとして、「/etc/ffserver.conf」を作成します。「/usr/share/doc/ffmpeg-0.4.8/doc/ffserver.conf」に雛形があるので、まずはそれをコピーします。
$ su
# cp /usr/share/doc/ffmpeg-0.4.8/doc/ffserver.conf /etc
|
- 次に、必要部分を修正します。今回は、ASF形式での配信を行うので、MPEG形式の設定部分の<Stream test1.mpg> をコメントにしました。その他は、手を加えないでもとりあえずはOKです。
- 完成した「/etc/ffserver.conf」は、こちら。
TV映像の配信
- 「ffserver &」コマンドでffserverをバックグラウンドで起動します。「Index & Id do not match for stream 1」とのエラー?が出ましたが、内容は判りません。配信自体は問題無くできました。
$ ffserver &
[1] 1238
$ Index & Id do not match for stream 1
ffserver started.
|
- 次に「v4lctl setchannel 6」で、チャンネル設定をします。最後に「ffmpeg http://localhost:8090/feed1.ffm」で、TV映像をエンコードしてffserverのfeed1.ffmに配信します。しかし、「/dev/video: Is a directory 」とのエラーになってしまいました。
$ v4lctl setchannel 6
$ ffmpeg http://localhost:8090/feed1.ffm
127.0.0.1 - - [Tue Mar 2 00:16:47 2004] "GET /feed1.ffm HTTP/1.0" 200 4165
/dev/video: Is a directory
Could not find video grab device
127.0.0.1 - - [Tue Mar 2 00:16:48 2004] "POST /feed1.ffm HTTP/1.0" 200 0
|
- そこで、デバイスファイルのリンクを張り替えました。
$ su
# mv /dev/video /dev/video.dir
# ln -s /dev/video0 /dev/video
|
- その結果、無事にTV映像の配信ができる様になりました。
$ ffmpeg http://localhost:8090/feed1.ffm
127.0.0.1 - - [Tue Mar 2 23:53:12 2004] "GET /feed1.ffm HTTP/1.0" 200 4165
Input #0, video4linux, from '':
Duration: N/A, bitrate: N/A
Stream #0.0: Video: rawvideo, yuv420p, 352x240, 15.00 fps
Input #1, audio_device, from '':
Duration: N/A, bitrate: N/A
Stream #1.0: Audio: pcm_s16le, 22050 Hz, mono, 352 kb/s
Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
Stream #0.0: Audio: mp3, 22050 Hz, mono, 64 kb/s
Stream #0.1: Video: msmpeg4, 352x240, 15.00 fps, q=3-31, 256 kb/s
Stream mapping:
Stream #1.0 -> #0.0
Stream #0.0 -> #0.1
Press [q] to stop encoding
|
TV映像の受信
- LAN上のWindowsマシンから以下のURLにアクセスします。以下の様なffserverのステータス画面が表示されます。
http://taro:8090/stat.html
|
【ffmpegによるTV映像の配信】
- 「test.asf」をクリックすると、WindowsMediaPlayer が起動し、このページの最初の画面の様にTV映像を受信できます。
参考図書
- HDDレコーダ・サーバ構築の極意:日経Linux2003年12月号
トップへもどる
Copyright (c) 2004 Hiroshi Nakamura. All rights reserved.
|
|