3

VPN経由でアクセスできるリモートLinuxマシンがあり、これにはUSB Webカメラがあります。これをビデオ会議に使用したいのですが、アーカイブ用にストリームを保存したいとも考えています。

ストリーミングの帯域幅は限られているため、ストリーミングされたコンテンツをキャプチャしようとするのではなく、ウェブカメラと同じマシンでストリームをキャプチャし、事後的に rsync する方が理にかなっていますが、これは必然的に低品質になります.

これを達成するために ffmpeg と ffserver を使用しようとしていますが、ほとんど成功していません。インターネット上の記事のほとんどは、ウェブカメラのストリーミング、またはリモート ストリームの再ブロードキャストのいずれかを扱っています。「my_addr->sin_family = AF_INET;」が欠落しているため、ffserver を再コンパイルする必要があることがわかりました。git で修正されて以来、使用していた ffserver.c のバージョンで。

使用しようとしている ffserver.conf は次のとおりです。

Port 43688
BindAddress 127.0.0.1
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -
NoDaemon
<Feed feed.ffm>
ReadOnlyFile /tmp/feed.ffm
FileMaxSize 20M
ACL allow 127.0.0.1
</Feed>
<Stream stream.mp4>
Feed feed.ffm
Format mp4
VideoSize qvga
VideoGopSize 12
VideoHighQuality
Video4MotionVector
VideoCodec libx264
VideoBitRate 100
VideoBufferSize 40
VideoFrameRate 5
VideoQMin 3
VideoQMax 31
AudioCodec libfaac
AudioBitRate 32
AudioChannels 2
AudioSampleRate 22050
ACL allow localhost
</Stream>

これを起動すると、次のエラーが表示されます。

Unable to create feed file '/tmp/feed.ffm' as it is marked readonly

十分に公平ですが、これはドキュメントで暗示されているものではありません。ディレクティブを次のように変更します。

File /tmp/feed.ffm

ffserver が起動し、ffmpeg が接続するのを待っているように見えます。ただし、次のコマンドで ffmpeg を起動すると、次のようになります。

ffmpeg -f alsa -i pulse -r 16000 -f video4linux2 -s qvga -i /dev/video0 -r 5 -f mp4 -vcodec libx264 -sameq -acodec libfaac -ab 32k http://127.0.0.1:43688/feed.ffm

次に、Web カメラが点灯し、ffserver がメッセージで接続を確認します。

New connection: POST /feed.ffm
[POST] "/feed.ffm HTTP/1.1" 200 0

しかし、数秒後に次のエラーが表示されます。

[mp4 @ 0x264b160] muxer does not support non seekable output
Could not write header for output file #0 (incorrect codec parameters ?)

他のさまざまな形式 (mpeg、mpegts、avi) とコーデック (mpeg1video、mpeg2video、mpeg4) を試しましたが、すべて成功しませんでした。

さらに、ffserver はストリーミング用に入力フォーマットをより低い解像度に再エンコードできるという印象を受けましたが、ストリームの解像度がフィードの解像度と一致しない場合、解像度が一致しないというエラーが発生します。

これを正しく機能させることができた人はいますか?このようなことができるvlcについて読んだことがありますが、vlcコマンドラインはほとんど侵入で​​きません。

ありがとう!

ドミニク

4

2 に答える 2

2

問題はmp4です。基本的に Moov-Atoms である mp4 にはストリーミングはありません。mp4 は rtsp URL をラップできますが、ラップすることはできません。したがって、mpegts に切り替えるか、接続の詳細については sdp ファイルで rtsp を使用します。

于 2012-05-18T17:22:51.357 に答える