動作確認環境:Fedora Core 1

ffmpeg


ffmpegについて

  • ffmpegは、各種ビデオファイルフォーマットの変換機能、TVチューナ映像のエンコード機能等を持つフリーソフトです。また、配信サーバ「ffserver」が含まれており、httpプルトコルでビデオのストリーミング配信ができます。下の写真は、LAN上ののWindowsマシンでASF形式のTV映像を受信しているところです。

    【ffmpegによる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映像の配信】
    ffmpegによるTV映像の配信

  • 「test.asf」をクリックすると、WindowsMediaPlayer が起動し、このページの最初の画面の様にTV映像を受信できます。


参考図書

  • HDDレコーダ・サーバ構築の極意:日経Linux2003年12月号


トップへもどる


Copyright (c) 2004 Hiroshi Nakamura. All rights reserved.