PHPプロキシを使用してhttps経由でhttp mjpgをストリーミングする方法
P粉835428659
P粉835428659 2023-09-03 20:54:13
0
2
526
<p>この php スクリプトは、HTTP 経由で mjpg ストリームをロードし、HTTPS 経由で出力することになっています。ただし、生成されるのは壊れた画像だけです: </p> <pre class="brush:php;toolbar:false;"><?php 関数 proxyMjpegStream($url) { $ch =curl_init($url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_BUFFERSIZE, 8192); header("Content-Type: multipart/x-mixed-replace;boundary=myboundary"); curl_exec($ch); カール_クローズ($ch); } // プロキシする MJPEG ストリームの URL を取得します if (isset($_GET['url'])) { $mjpegUrl = $_GET['url']; // URL が有効な HTTP ソースであることを検証します if (filter_var($mjpegUrl, FILTER_VALIDATE_URL) && strpos($mjpegUrl, 'http://') === 0) { proxyMjpegStream($mjpegUrl); 出口; } } // MJPEG URL パラメータが無効または欠落しています header("HTTP/1.0 400 Bad Request"); echo "無効な MJPEG URL"; ?>

P粉835428659
P粉835428659

全員に返信(2)
P粉588152636

これは質問に対する実際の答えではありません。Anas がすでにこれについて説明していますが、とにかく言及する価値があり、コメントには当てはまりません。

次のようなコード ブロックを記述するのは困難になります:

リーリー

エラー状態を最後まで延期し、エラー以外の状態を if(){} ブロックに含めると、2 つの問題が発生します。

  1. エラーを引き起こす条件は、エラー メッセージが生成される場所からますます切り離されていきます。
  2. 「幸福への道」コードは、arrow アンチパターン として知られる、ネストされた if(){} ブロックの奥深くに埋め込まれています。

再フォーマットできます:

リーリー ### に: ### リーリー

これは厳密なルールではありませんが、心に留めておくと、ばらばらのコード ブロックや混乱を招くコード ブロック、またはページの右側にまで広がってしまうコード ブロックの作成を避けることができます。

いいねを押す +0
P粉523625080

いくつかの調査の後、次の関数を使用して、curl でストリームを実行できます:

リーリー

そしてコールバック関数を作成します:

リーリー

コードは正常に動作しますが、curl_setopt($ch, CURLOPT_TIMEOUT, 30);

を設定したため、30 秒後にストリームが終了します。

cURL は主に静的コンテンツを取得する HTTP リクエストを行うように設計されているため、ストリーミング URL には fopen() を使用することをお勧めします。 MJPEG ストリームは動的であり、新しいフレームが継続的に送信されます。

デフォルトでは、cURL はリクエストごとにタイムアウトを設定します。サーバーがフレームを送信するのに長い時間がかかる場合、リクエストがタイムアウトになり、ストリームが中断されたり、エラー メッセージが表示されたりする可能性があります。

最良のエクスペリエンスを得るには、fopen() 関数を使用できます。 以下はストリームと fopen を使用した例です。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート