4

新しいカメラ モジュールが (この場合は) Bambuser に接続された Raspberry Pi があります。ここでストリームを見ることができます。これはオランダの風車からのものです (カメラの位置は数週間以内に改善されます)。

ストリームを正常に実行していますが、入力ストリームの上に画像 (アルファ透明 png) を追加して、ffmpeg にパイプして Bambuser にストリーミングしたいと考えています。

現在、次のコマンド (ユーザー固有の詳細は消去) を使用して、 Slickstreamer による優れたチュートリアルに従って、Raspberry カメラ モジュール (HD とすべてのハードウェア レンダリング) からの入力を Bambuser に正常にストリーミングしています。

raspivid -t 999999999 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg  -i - -vcodec copy -an -metadata title="STREAM NAME" -f flv rtmp://USER_X.fme.bambuser.com/b-fme/USER_STREAM_KEY_X

私は ffmpeg に関するドキュメントに従いましたが、次のように「-vf」コマンドを使用して「movies:」フィルターを適用する必要があるようです。

raspivid -t 999999999 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg  -i - -vf "movie='/home/USER/watermark.png' [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]" -vcodec copy -an -metadata title="STREAM NAME" -f flv rtmp://USER_X.fme.bambuser.com/b-fme/USER_STREAM_KEY_X

'-vf vflip' や '-vf mandelbrot' などのその他のさまざまな -vf コマンド。しかし、ストリームには Raspberry カメラからの直接入力が表示されるだけなので、うまくいかないようです。

これは、次の -vf コマンドで開始したときの出力です。

raspivid -t 999999999 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg -i - -vcodec copy -vf 'movie=0:png:/home/USER/watermark.png [watermark];[in] [watermark]overlay=0:0:1[out]' -an -metadata title="STREAM NAME" -f flv rtmp://USER_X.fme.bambuser.com/b-fme/USER_STREAM_KEY_X
ffmpeg バージョン N-54036-g6c4516d Copyright (c) 2000-2013 the FFmpeg developers
  2013 年 6 月 15 日 XX:XX に gcc 4.6 (Debian 4.6.3-14+rpi1) でビルド
  構成:
  libavutil 52.35.101 / 52.35.101
  libavcodec 55.16.100 / 55.16.100
  libavformat 55.8.102 / 55.8.102
  libavdevice 55.2.100 / 55.2.100
  libavfilter 3.77.101 / 3.77.101
  libswscale 2.3.100 / 2.3.100
  libswresample 0.17.102 / 0.17.102
[h264 @ 0x1917cc0] max_analyze_duration 5000000 マイクロ秒で 5000000 に達しました
'pipe:' から #0、h264 を入力:
  期間: N/A、ビットレート: N/A
    ストリーム #0:0: ビデオ: h264 (高)、yuv420p、960x540、25 fps、25 tbr、1200k tbn、50 tbc
#0、flv を「rtmp://USER_X.fme.bambuser.com/b-fme/USER_STREAM_KEY_X」に出力:
  メタデータ:
    title : ストリーム名
    エンコーダー: Lavf55.8.102
    ストリーム #0:0: ビデオ: h264 ([7][0][0][0] / 0x0007)、yuv420p、960x540、q=2-31、25 fps、1k tbn、1200k tbc
ストリーム マッピング:
  ストリーム #0:0 -> #0:0 (コピー)
フレーム= 2344 fps= 27 q=-1.0 サイズ= 4827kB 時間=00:01:33.72 ビットレート= 421.9kbits/s

上記のように、他の -vf フィルターも Bambuser の出力ストリームに適用されないようです。ここで何か根本的に間違っていると思います。

  1. Raspivid-stream をマップし、その上に画像 'watermark.png' をマップする必要がありますか? それが解決策でしょうか?誰でもこれを経験していますか?

あらかじめご了承いただきますようお願い申し上げます。

4

1 に答える 1

3

フィルターを使用する場合は再エンコードする必要があるため、 / /-vfでストリームをコピーしようとしている場合もffmpeg は無視されます。ストリーム コピーのドキュメントから:-vcodec copy-codec:v copy-c:v copy

デコードやエンコードがないため、ストリーム コピー モードは非常に高速で、品質の低下はありません。ただし、多くの要因により、場合によっては機能しない場合があります。フィルターは圧縮されていないデータに対して機能するため、フィルターを適用することも明らかに不可能です。

その他のもの:単純なフィルターグラフ(1 つの入力、1 つの出力) に
-vf使用され、複雑なフィルターグラフ(1 つ以上の入力、1 つ以上の出力) に使用されます。を使用すると、マルチメディア ソース フィルタをスキップできます。これは、より短く、よりクリーンなコマンドを意味します。-filter_complex-filter_complexmovie

例:

ffmpeg -i video.mp4 -i image.png -codec:v libx264 -preset ultrafast -filter_complex overlay output

これは Raspberry の CPU を使用してエンコードするため、満足のいくパフォーマンスが得られないでしょう。

于 2013-06-16T18:51:44.950 に答える