Logitech C920でのH264のストリーミング


13

Logicool C920ウェブカメラを使用しています。H264でビデオを直接エンコードする機能があります。

Beagleboneで行われたことを再現したいのですが、Raspberry Piを使用して、H264ストリームをネットワークに送信します。Raspberry Piは、RTPでストリームをパケット化するためだけにあり、ビデオ圧縮はWebカメラ自体によって行われます。H264モードは、video4linuxを使用して実施されます。

これまでのところ、最新バージョンのUbuntuで一般的なコンピューターを使用している場合、VLCをサーバーまたはGStreamerとして使用して動作します。たとえば、次のコマンドを使用してRaspberry PiでVLCサーバーを起動した場合:

cvlc --sout=#rtp{sdp=rtsp://:8554/test} 'v4l2:///dev/video0:chroma=H264:width=800:height=600:fps=30'

...そして、別のコンピューターでVLCを使用してストリームを読み取った場合、問題はありません。

ただし、ラズベリーPiを使用してビデオストリームを送信する場合、結果は非常に悪くなります。何かが動くとすぐに画像にたくさんのゴミが。イメージキーは10秒ごとに受信されますが、その間、一般的なコンピューターからのストリームと比較すると十分ではありません。

また、提供された「キャプチャ」ユーティリティを使用してビーグルボーンについて説明し方法を試してみました。実際のコンピューターからストリーミングする場合はOK、Raspberry Piからストリーミングする場合は同じゴミ問題。

ネットワークの問題ではありません。WiresharkとVLCの統計を使用してネットワークチェックをいくつか行いましたが、パケット損失はありません。RaspbianとRaspiのArch Linux(raspbianのgstreamer 0.10、Arch Linuxのgstreamer 1.0)で試しました。

関連するかどうかはわかりませんが、Raspbianのソフトフロートサポートバージョンでもテストしました。3.2カーネルを使用するには、最初に更新を行う必要があります。しかし、同じ問題、ビデオにはゴミがあります。

ビデオ品質を向上させるために何ができるかについてのアイデアはありますか?


フレームレートを下げてみてください。rPiのCPUは非常に貧弱なので、30FPSで800x600の画像を送信するのは多すぎると思います。(USBの代わりに)MIPI / CISコネクタを介して接続された新しいrPIカメラボードのみが、15-30 FPSで1080pをストリーミングします。
マティアス

FPSではありません。PiはPiカメラモジュールを使用して、60FPSでHDを問題なく処理できます。Logitechカメラが既にエンコードされているH264ビデオを送信する場合、Piはパケットを再ブロードキャストする必要があります。実際、最大で6のHD @ 25FPSストリームを再ブロードキャストできます。パケットを破損しているV4Lドライバーである必要があります
Piotr Kula

私はそれが古いスレッドであることを知っていますが、機能する何かをようやく見つけましたか?イムは、類似した何かをしようとしていると立ち往生
Ajith

私はビーグルボーンを使用しましたが、より良く機能しました。問題は、RaspbianのRaspberryPiのUSBドライバーが不良だったためです。覚えている限りでは、後で同じシステムをRaspbianの新しいバージョンでテストしましたが、ゴミの量は少なくなりました。rpi-updateを行った可能性があります(回答の1つで述べたように)が、よく覚えていません。しかし、確かなのは、更新されたファームウェア/オペレーティングシステムを使用した後のパフォーマンスが向上したことです。
ビンセントヒリバレン

ヴィンセント、「v4l2のURLを開けません」というエラーが表示されます。このコマンドは古くなっていますか?
ダランミラー

回答:


5

私は同じ問題を抱えていました。c920の問題ではなく、ハードウェアエンコーダーを検索するときにこのスレッドを見つけました。

それでも、ラズベリーパイのファームウェアアップデートを実行すると、ゴミは消えるはずです

$> sudo rpi-update

私自身はここで解決策を見つけました:http : //wiki.matthiasbock.net/index.php/Logitech_C920,_streaming_H.264#Raspberry_Pi


この質問を閉じるために、私はその答えを受け入れます。問題は、壊れたUSBドライバーが原因で、USB通信でパケット損失が発生しました。更新されたシステム/ファームウェアがこのトリックを行うはずです。
ビンセントヒリバレン

2

FFMPEGを試して使用できます。ただし、問題はリポジトリバージョンが古いため、使用しないことです。本当にうまく機能する分岐バージョンがあります。

5時間ほどかかるコンパイルするか、プリコンパイルされたバイナリをダウンロードする必要があります。

これらの設定を使用して、V4LドライバーからFFMPEGにデータをパイプできます。どこに -i "fifo"ちょうどあるべき-iパイプによるストリームをcaputreすると-f、あなたはどのように出力H264それにダブルチェックする必要があります。FLVはそれをFLVに再パッケージ化し、HTMLプレーヤーで再生できます。

ffmpeg -y \  
  -f h264 \  
  -i "$fifo" \  
  -c:v copy \  
  -map 0:0 \  
  -f flv "$urllocal"   

または私はV4Lを直接ターゲットにしているが、oyu /dev/video* は*が1以上である場所にカメラが存在する必要があることを発見した例

ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 out.avi

-fで出力する形式を示している。それは、それだけでFLV形式に包まれますFLVにH264のようにそれをトランスコードするという意味ではありません。次に、アドレスをクライアントVLCプレーヤーに変更します。例えば-f mpegts udp:192.168.1.19:1234

VLCはPiでうまく機能していないようです。UDPを使用してPi cmaeraモジュールをPCにプッシュしても、ほとんど成功しませんでした。動作しましたが、安定していませんでした。

また、rtmpモジュールを使用してnginxをインストールすることもできます。このガイドをご覧ください。ただし、設定を少し調整する必要があります。次に、VLCプレーヤーをnginx-rtmpストリームに接続すると、チャームのように機能します。


1
どの分岐バージョンがうまく機能しますか?
ブライアン14

1

これは少なくとも私にとってはうまくいくようです... cvlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout="#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/live.ts}" -I dummy


0

ビデオを表示するクライアントでより大きなバッファを試してください。私にとって、1000msバッファと200msバッファには劇的な違いがあります。5000msバッファは1000msバッファよりも良く見えます。

:network-caching = 2000


LAN上で奇妙なジッターが発生する0キャッシュで動作するはずです。Piカメラモジュールを問題なく動作させることができました。
ピョートルクラ

0

V4L2ドライバーからH264をキャプチャするlive555ベースの軽量RTSPサーバーを使用して、可能なソリューションをraspberryフォーラムに投稿しました。github h264_v4l2_rtspserverから入手できます

これはraspicameraに対して行われましたが、H264を提供するV4L2デバイスで動作するはずです。


-1

あなたの状況をよく理解していれば、RaspberryでビデオをH264にトランスコードしたいですか?VLCはソフトウェアエンコーディングを使用しており、Raspberryisはそのタスクに対して強力ではないため、パフォーマンスが低下するのはそのためだと思います。

Gstreamerとgst-omxプラグインを試してみることをお勧めします。Raspberryから適切なサーバーを作成するハードウェアビデオエンコーディングの要素があります。


1
彼が言ったように、LogitechのカメラはすでにH.264を提供しています。したがって、rPiはフレームのみを転送し、エンコードは行いません。
マティアス

彼はトランスコーディングしていません。データを再放送するだけです。ストリームを直接使用します。
ピョートルクラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.