RTSPビデオストリームをWebページに表示するにはどうすればよいですか?


98

ライブRTSPビデオストリームを提供するIPカメラがあります。VLCメディアプレーヤーを使用して、次のURLを指定することでフィードを表示できます。

rtsp://cameraipaddress

ただし、フィードをWebページに表示する必要があります。カメラプロバイダーは私が動作するActiveXコントロールを提供しましたが、それは本当にバグがあり、ブラウザーが頻繁にハングする原因になります。

RTSPをサポートする代替のビデオプラグインを知っている人はいますか?

カメラは、H264またはMPEG4のいずれかでストリーミングするように構成できます。


1
私は複数のRTSPカメラでもこの可能性を模索してきましたが、ActiveXコントロールは必要ありません。WebページがJPEG画像を継続的に取得してWebページに表示するカスタムWebサーバーを構築したいと思います。このようにして、Safariなどのブラウザでサポートされ、iPhoneで表示できます。
ジェリーダッジ


@JerryDodge「photo1.jpeg」などの画像ファイル名を文字列として毎秒Webブラウザに送信するJavaWebSocketServerでアイデアを試しました。WebブラウザのJavaScriptは、ファイル名を使用してHTMLsrc<img>タグの属性を設定します。動作しますが、ライブストリーミングビデオのようには見えないため、非常に低速です。あなたはすでにあなたのアイデアを試しましたか?それは速く動作しますか?
Oコナー

@OConnor非常に基本的なレベルの低フレームレートの表示では、サーバーがプッシュするよりもクライアントがプルするのが最適です。TCPとUDPも検討してください。どちらにも長所と短所があります。クライアントが必要なときにいつでも新しい画像を要求するのが最も簡単です。
ジェリーダッジ

回答:


28

VLCには、Webページにフィードを表示できるActiveXプラグインも付属しています。

http://wiki.videolan.org/ActiveX/HTML

<OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
     codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab"
     width="640" height="480" id="vlc" events="True">
   <param name="Src" value="rtsp://cameraipaddress" />
   <param name="ShowDisplay" value="True" />
   <param name="AutoLoop" value="False" />
   <param name="AutoPlay" value="True" />
   <embed id="vlcEmb"  type="application/x-google-vlc-plugin" version="VideoLAN.VLCPlugin.2" autoplay="yes" loop="no" width="640" height="480"
     target="rtsp://cameraipaddress" ></embed>
</OBJECT>

2
ちなみに、この時点で、VLC MediaPlayerは774人の開発者によって構築されました。
ジェリーダッジ

15
2015年9月1日以降、Chromeはnpapiプラグインをブロックしました。動作しなくなりました。
user2988855 2016年

1
axvlc.cabリンクが無効です
hailinzeng 2017年

プラグインが他の利用可能な代替ソリューションをブロックした場合はどうすればよいですか?
naveenkumar.s

18

広いインターネット帯域幅と主要なブラウザと互換性のある優れたビデオプレーヤーが必要なため、IPカメラからのライブビデオストリームをWebページに表示するのは簡単ではありません。

しかし幸いなことに、私たちのためにこの仕事をすることができるいくつかのクラウドベースのサービスがあります。最高の1つはIPCamLiveです。このサービスは、IPカメラからRTSP / H264ビデオストリームを受信し、視聴者にブロードキャストできます。IPCamLiveには、PC、MAC、タブレット、またはモバイルでビデオを表示するFlash / HTML5ビデオプレーヤーコンポーネントがあります。最大の利点は、このサイトが次のようにライブビデオを埋め込むために必要なHTMLスニペットを生成することです。

<iframe src="http://ipcamlive.com/player/player.php?alias=szekesfehervar" width="800px" height="600px"/>

したがって、変更せずにHTMLファイルにコピーアンドペーストする必要があります。


1
これはすごいです。非常に必要なソリューション。
Zakir HC 2015

更新:どうやら今は動作しません。これを示しています:「このカメラは埋め込むことができません。埋め込むには、標準パッケージまたはプロフェッショナルパッケージに切り替えてください。」
muglikar 2017

1
カメラをStandard / Professionalパッケージにアップグレードするだけで、カメラをWebページに埋め込むことができます。
Adorjan Princz 2017

17

WebページにRTSPビデオストリームを表示するには、大まかに3つの選択肢があります。

  1. リアルプレーヤー
  2. Quicktimeプレーヤー
  3. VLCプレーヤー

あなたはグーグル検索を介してActiveXを埋め込むためのコードを見つけることができます。

私の知る限り、各プレイヤーにはいくつかの制限があります。

  1. RealplayerはH.264ビデオをネイティブでサポートしていません。H.264デコードを実現するには、RealplayerのQuickTimeプラグインをインストールする必要があります。
  2. QuicktimeプレーヤーはRTP / AVP / TCPトランスポートをサポートしておらず、RTP / AVP(UDP)トランスポートにはNATホールパンチングが含まれていません。したがって、実行可能な唯一のトランスポートは、WAN展開でのHTTPトンネリングです。
  3. VLCは、RTP / AVPトランスポートのNATホールパンチングもサポートしていませんが、RTP / AVP / TCPトランスポートは使用できます。

2
Quicktime Playerの最近のバージョンでは、Mavericks以降のRTSPサポートが廃止されました。
マイク

linux / ubuntuのトーテムはrtspストリームもサポートしています
Oki Erie Rinaldi

8

RTSPをWebページに直接ストリーミングしたい場合は、カメラに付属のActiveXコントロールビューアを使用するしかありません。これは直接接続のIPカメラ->ビューアであり、実際に最速である必要があります。問題が発生している理由がわかりません。AxisActiveXは私にとってかなりうまく機能します。

ただし、このオプションは実際には帯域幅効率が高くなく、複数の同時ビューアにサービスを提供することはできません(ほとんどのIPカムには10のビューア制限があります)。より良いオプションは、単一のRTSPストリームを中央でホストされているストリーミングサーバーにアップロードすることです。これにより、ストリームがRTMP / MPEG-TSに変換され、Flashプレーヤー/セットトップボックスに公開されます。

Wowza、Erlyvideo、Unreal Media Server、Red5がオプションです。


これは間違いなく行く方法です。帯域幅管理が改善され、フラッシュプレーヤー用のRTMPなどのWebに適した形式にトランスコードされます。上記のメディアサーバーのいずれかを使用した経験があり、セットアップの容易さ、パフォーマンス、遅延などについて詳しく説明できる人はいますか?Red 5を試してみましたが、動作させるのに少し注意が必要なことがいくつかありました。
elMarquis 2012年

8

WebプラグインのVLC公式ドキュメントからシンプルで実用的なソリューションを見つけました

https://wiki.videolan.org/Documentation:WebPlugin/

コードを少し変更して、機能させました。これが私のコードです-

<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" autoplay="yes" loop="no" width="300" height="200" target="rtsp://10.20.50.15:554/0/888888:888888/main" />
<object classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab" style="display:none;"></object>

注:上記のスニペットは、rtsp私のIPカメラでサポートされているURL形式を使用しています。だからあなたはあなたのカメラのために同じものを手に入れる必要があります。この情報は、カメラベンダーのサポートに相談して入手できます。また、Chromeでテストし(Chrome用のActiveXプラグインを使用)、他のブラウザー(携帯電話のブラウザーを含む)がサポートされていない可能性があることにも注意してください。


3
一部のウィンドウはactiveXがらくたであり、いわゆる「ソリューション」ではなく、他のWindows(実際のOS、モバイル、コンソールなど)では機能しないことに注意してください。
ノンチップ2016

@nonchipああ、まあ、私はあなたが問題のより良い解決策を持っていると思います。さらに、私はAndroidスマートフォンでもプラグインをテストしたので、Windowsだけでありません。とにかく、CCTVカメラからのフィードを表示するためにどのクロスプラットフォームの代替案を考えているのか本当に知りたいです。
Swastik Padhi 2016

申し訳ありませんが、それはうそです。埋め込むActiveXは、定義によれば、勝つだけです。androidのchromeが行うことは、を認識しx-vlc-plugin、独自のものを無視して、vlcアプリの意図をプッシュすることです。また、あなたが言及したクロスプラットフォームの代替案について:現在の唯一の解決策は、Webサーバーでffmpeg / avconv / etcを使用して、rtspストリームをhttp / websocket / webrtcに再パックすることです。次に、<video>タグを追加するだけで完了です。
ノンチップ2016

1
ストリームが再生されていません。この問題の可能性があります(コードベース)http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab404が見つかりません
Vara Prasad 2017

7

また、オープンソースのWebRTC Media ServerKurentoを試すこともできます

RTSPビデオストリームを再生してWebRTCに送信したり、RTMPにトランスコードしたり、サーバーに保存したりできます。

以下の場合に本番環境で使用しています。

 -WebRTCからWebrtc(多対多)
 -WebRTCからRTMP
 -RTSPからWebRTCへ

1
リンクはもう機能していません、とにかく情報をありがとう。
medskill 2018

リンクがアップ@medskill帰ってきた
activedecay

5

Wowza

  1. RTSPをRTMP(Flash Player)に再ストリーミングするAndroid ChromeまたはFFでは機能しません(Flashはサポートされていません)
  2. RTSPをHLSに再ストリーミングする

Webコールサーバー(Flashphoner)

  1. RTSPをWebRTCに再ストリーミング(AndroidまたはデスクトップのいずれかでのChromeおよびFFのネイティブブラウザー機能)

  2. RTSPをWebsocketに再ストリーミングする(iOSSafariおよびChrome / FFデスクトップ)

この記事を見てください


それは本当に素晴らしい記事です。Flashphonerは有望なソリューションに見えます。
elMarquis 2015

3

この投稿は古いことは知っていますが、先日非常によく似たものを探していました(IPカムのRTSPビデオフィードを、派手なActiveXプラグインのない単純なhtmlページで表示してください)。幸運なことに、私は解決策を見つけました!これは、ffmpeg、NodeJS、NGINX(必須ではありませんが便利です)およびNode MediaServerに基づいています

リンクの説明は詳細でわかりやすいですが、動作させる前に対処する必要のある調整がいくつかありました(NodeJSサーバー上のエンドポイントに関して)。私はそれについて独自の質問をし、良い実用的な答えを得ました。


3

QuickTime Playerをお試しください!Webページに埋め込みオブジェクトを生成してストリームを再生するJavaScriptは次のとおりです。

//SET THE RTSP STREAM ADDRESS HERE
var address = "rtsp://192.168.0.101/mpeg4/1/media.3gp";

var output = '<object width="640" height="480" id="qt" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab">';
    output += '<param name="src" value="'+address+'">';
    output += '<param name="autoplay" value="true">';
    output += '<param name="controller" value="false">';
    output += '<embed id="plejer" name="plejer" src="/poster.mov" bgcolor="000000" width="640" height="480" scale="ASPECT" qtsrc="'+address+'"  kioskmode="true" showlogo=false" autoplay="true" controller="false" pluginspage="http://www.apple.com/quicktime/download/">';
    output += '</embed></object>';

    //SET THE DIV'S ID HERE
    document.getElementById("the_div_that_will_hold_the_player_object").innerHTML = output;

ありがとう。私はquicktimeオプションを検討しましたが、それには本当に悪い待ち時間がありました。
elMarquis 2010年

これは、QuickTimeの3秒のバッファが原因です...それも私を悩ませます...他に機能するものを見つけたら、ここに投稿してください!さようなら!
Cipi 2010年

2
こんにちは、バグがあります。後で「address」のスペルが「asdress」になります。乾杯
クリントングリーン

3
なぜこれがJavaScriptで書かれているのですか?
トーマスベネット

@Clinton:修正されました。
AlastairG

2

メディアソース拡張を中継するAxisによるメディアストリームライブラリを確認します

JSのGstreamerと同様のパイプラインを実装し、h264デペイを使用します。注:jsで消費されるストリーミングは直接rtspではなく、node.jsrtsp-websocketプロキシ上のライブラリ自体によってws://にカプセル化されます。


2

プラグインを必要とせずにIP /ネットワークカメラをWebブラウザにリアルタイムでストリーミングするのに役立つプロジェクトをGithubに公開しました。これは、MITライセンスの下で、ニーズに合ったオープンソースプロジェクトに貢献しました。

NodeJSを使用したWebブラウザでのIP /ネットワークカメラのストリーミング

フレームワークの完全なパッケージはまだありませんが、それはあなたにさらに進む方法を与えるかもしれないキックスタートです。
学生として、これがお役に立てば幸いです。このプロジェクトに貢献してください。


2

1つのオプションは、ある種のストリーミングサーバー/ゲートウェイを使用することです。私はさまざまなソリューション(vlc、ffmpeg、その他いくつか)を試しましたが、私にとって最も効果的なのはJanusWebRTCサーバーでした。セットアップはやや難しく、ソースからコンパイルする必要があります(UbuntuリポジトリのバージョンはRTSPをサポートしていませんでした)が、詳細なコンパイル手順ドキュメントがありますすべてをセットアップする方法に関するがあります。

ローカルネットワーク上の3台のFullHDカメラからほとんど遅延なくビデオとオーディオのフィードを取得することができました。DahuaおよびHikvisionカメラで動作することを確認できます(すべてのモデルかどうかはわかりません)。

私が使用したのは、ApacheWebサーバーを実行しているUbuntuServer 18.04と、ブラウザーとしてのChromeでした(デフォルトではFirefoxでは機能しませんでしたが、おそらく回避策があります)。


1

Microsoft Mediaplayerは、必要なすべてを実行できます。2003/2008サーバーのMSMediaservicesを使用して、ビデオをブロードキャストおよびユニキャストストリームとして配信しています。このサービスは、カムからストリームを取得してブロードキャストすることができます。すべてのOSシステムのすべてのブラウザでその画像を「表示」する問題が「唯一」あるより

ヒント:プラグインをロードするよりも、まずOSを確認してください。Windowsでは簡単です-WMPを取り、他の場合はMSSilverligtを取ります..


1

このような目的のために、私はVLCを再配布サーバーとして使用します。あなたはVLCでビデオをキャッチできると言いましたか?VLCでメディアを右クリックし、[ストリーム]を選択して、オプションを選択します。コマンドラインを使用してこれを行うこともできます。これにより、さまざまなオプション(トランスコーディング、スケーリング、圧縮、インターレース解除)の潜在的な利点が得られます。これは、ソースから独自の555ポートへのVLC配布を開始するバッチです(したがって、ストリームを取得するには、Webページのsrcオプションにrstp:// myvlcserveripaddress:555と入力する必要があります)

cd \
cd C:\Program Files (x86)\VideoLAN\VLC\

vlc --logo-file C:\logo.png --logo-position 5 --logo-opacity 200 --logo-x 900 --logo-y -2 "mmsh://typeyoursourceIPhere:554" :sout=#transcode{vcodec=div3,vb=800,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=rtp{mux=ts,sdp=rtsp://:555/stream}} :sout-all :sout-keep

ここに、プレーヤーを埋め込んだWebページのサンプルがあります(VLCプラグインに基づく)。


-7

上記のすべてのソリューションは、もはや機能しないか、理解するのに時間がかかりすぎます。

これが究極の答えです。あなたはあなたのウェブサイトにrtspリンクを埋め込むことができます。

以下のコードをhtmlエディターにコピーします。

<!--- BEGIN PLAYER --->

<!-- webbot bot="HTMLMarkup" startspan ---->

<object ID="MediaPlayer" WIDTH="320" HEIGHT="270" CLASSID="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95" STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject" CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112">

<param name="autoStart" value="True">

<param name="filename" value="rtsp://xxx.xxx.xxx:xxxx">

<param NAME="ShowControls" VALUE="False">

<param NAME="ShowStatusBar" VALUE="False">

<embed TYPE="application/x-mplayer2" SRC="rtsp://xxx.xxx.xxx:xxxx" NAME="MediaPlayer" WIDTH="320" HEIGHT="270" autostart="1" showcontrols="0"></embed></object>

<!-- webbot bot="HTMLMarkup" endspan ---->

<!--- end PLAYER --->

これがすべて複雑すぎてそれでも解決しない場合は、私がお手伝いします。

私はクライアントのためにこれを行いました。

ここをクリックhttp://www.mhcreative.com.my/ipcameratowebsite/


奇妙なことに、VLC Media Playerが埋め込まれることになります。これは、VLCがWebページの「デフォルトのメディアプレーヤー」と見なされているためですか。
ジェリーダッジ

待ってください、それはWMPです。これはWindowsでのみ機能すると思います。
ジェリーダッジ

2
あなたのサイトの実装はあなたがあなたの答えで説明したものではありません。click2streamサービスをご利用ですが、時間を無駄にしておりますので、回答を変更してください。あなたは機能しない他の人について言いますが、あなたの解決策は存在しません。
stefan2410 2014年

3
あなたが書くのは奇妙です:「これが究極の答えです。」謙虚であることはどうですか、特にそのような質の欠如で答えを落とすときはどうですか?
ピル2015年

1
このアプローチでは、アクティブXコントロール(IE 10以下の場合)を使用してから、他のブラウザー用の別のプラグインに戻ります。前述のように、ほとんどの場合、VLCメディアプレーヤーが組み込まれているようです。これはひどいアプローチではありませんが、ユーザーにプラグインをインストールさせることは、常にちょっとした失敗に終わります。一方、オーディエンスが限られていて、セットアップを指示できる場合は、このアプローチで問題ない可能性があります。
elMarquis 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.