ホームページ バックエンド開発 PHPチュートリアル PHPにより安定かつ効率的なライブ配信機能を実現

PHPにより安定かつ効率的なライブ配信機能を実現

May 22, 2023 am 08:33 AM
php ライブ配信機能 安定して効率的

インターネット技術の発展に伴い、ライブブロードキャストは非常に人気のあるエンターテイメント方法となり、人々のエンターテイメントのニーズを満たすだけでなく、商業マーケティングや教育訓練などのさまざまな目的を達成することもできます。安定した効率的なライブ ブロードキャスト機能を実現したい場合は、特定の技術サポートに依存する必要があります。数多くのライブ ブロードキャスト テクノロジの中でも、サーバーサイド プログラミング言語として人気のある PHP を使用すると、安定した効率的なライブ ブロードキャスト機能を実現できます。この記事では、PHP を使用して安定かつ効率的なライブ ブロードキャスト機能を実現する方法を紹介します。

1. ライブ ブロードキャストの基礎知識

ライブ ブロードキャストとは、ライブ映像、音声などの信号をネットワークを介して指定された受信端末に送信し、ライブ配信を行うリアルタイム伝送技術のことです。ユーザーはビデオとオーディオをリアルタイムで見たり聞いたりすることができます。ライブ ブロードキャストに関連する基本概念には、ビデオ ソース、プッシュ フロー、プル フロー、トランスコーディング、CDN などが含まれます。

ビデオ ソースとは、ライブ ブロードキャストが依存するビデオ コンテンツ ソースを指し、カメラまたは既存のビデオ ファイルから生成できます。

プッシュ ストリーミングとは、ビデオ ソースをネットワーク経由でサーバーに送信するプロセス、つまりライブ ブロードキャスト ソースを指します。これは、RTMP や HLS などのプロトコルを通じて実現できます。

プル ストリーミングとは、ユーザーがサーバー上のビデオ ソースを取得して表示するプロセスを指します。リアルタイムでビデオ ストリームを取得するには、ユーザーは URL リンクを通じてアクセスする必要があります。

トランスコーディングとは、さまざまな端末やネットワーク環境に合わせてビデオ ストリームをエンコードおよび変換することを指します。ビデオ ストリームの一般的なエンコード形式には、H.264、H.265 などが含まれます。

CDN (Content Delivery Network) はコンテンツ配信ネットワークを指し、主にネットワークのボトルネックによって引き起こされるネットワークの輻輳問題を解決します。 CDN は世界中のノードにコンテンツを展開し、高速で安定したアクセス エクスペリエンスを提供します。

2. ライブ ブロードキャスト サーバーの構築

ライブ ブロードキャスト サーバーを構築するには、サードパーティのサービス プロバイダーが提供するクラウド ソリューションを使用するか、独自のサーバーを構築するかを選択できます。 。実際のニーズに応じて自社構築サーバーを展開し、カスタマイズされた開発と管理を容易にすることができます。

以下では、Linux システムを例として、ライブ ブロードキャスト サーバーの構築方法を紹介します。

  1. Nginx、PHP、FFmpeg などの依存コンポーネントをインストールします。

sudo apt-get update
sudo apt-get install -y build-essential libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev
sudo apt-get install -y nginx-full nginx- common php-fpm php php-mysql php- cli ffmpeg

  1. RTMP プロトコルをリッスンし、HTTP リクエストを PHP サービスに転送するように Nginx を構成します

次のコードを追加しますNginx 設定ファイル /etc/nginx/nginx.conf に次のように追加します。

rtmp {

server {
    listen 1935; # 监听1935端口,使用RTMP协议传输流媒体
    application live {
        live on; # 开启直播
        # 访问URL为:rtmp://ip:port/live/channelname
    }
}
ログイン後にコピー

}
server {

listen 80;
server_name localhost; # 服务器名或IP
root /var/www/html; # 根目录
index index.html index.htm index.php; # 默认文档
location / { # 网站根目录的访问规则
    try_files $uri $uri/ /index.php?$query_string; # 转发到PHP服务处理
    autoindex on; # 显示目录列表
}
location ~ .php$ { # PHP文件的访问规则
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # PHP-FPM的监听地址
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
ログイン後にコピー

}

  1. PHP サービスの構成

/etc/php/7.0/fpm/pool.d/www.conf ファイルで次の構成を変更します:

listen = /var/run /php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

  1. サービスの開始

sudo service nginx start
sudo service php7.0-fpm start

上記の手順により、RTMP プロトコルをサポートし、HTTP を転送するライブ ブロードキャスト サーバーを簡単にデプロイできます。 PHP サービスへのリクエスト。

3. PHP はライブ ブロードキャスト機能を実現します

PHP はサーバーサイド プログラミング言語として、FFmpeg や SRS などのオープンソースのライブ ブロードキャスト フレームワークを通じてライブ ブロードキャスト機能を実現できます。以下では、FFmpeg を例として、PHP を使用してライブ ブロードキャスト機能を実装する方法を紹介します。

  1. FFmpeg の概要

FFmpeg は、複数のマルチメディア形式のエンコード、デコード、処理、変換をサポートするオープンソースのクロスプラットフォーム マルチメディア ソリューションです。 FFmpeg は、ライブ ストリーミング メディアのプッシュおよびプルに使用できる豊富なコマンド ライン ツールを提供します。

  1. プッシュ ストリーミングの例

ストリーミングの例では、ローカル ビデオ ソースが FFmpeg を通じてサーバーにプッシュされ、プッシュ アドレスがインターフェイスを通じて取得されます。ライブブロードキャスト用にPHPによって提供されています。

最初にプッシュ アドレスを取得するための PHP ファイルを作成します:

header("Content-Type: application/json;charset=utf-8");

$channelName = $_POST['channelName'];

$rtmpUrl = "rtmp://ip:1935/live"; // サーバーアドレス
// パラメータに時間を追加しますURL の重複を避けるためのスタンプ
$streamKey = $channelName . "?time=" . time(); // プッシュストリーム名

$url = $rtmpUrl . '/' . $streamKey;

$res = array("code" => 0, "message" => "success", "url" => $url);

echo json_encode($res );
?>

次に、FFmpeg Push コマンドを使用してライブ ストリームをプッシュします:

ffmpeg -re -i test.mp4 -vcodec copy -acodec copy -f flv "rtmp: //ip:1935/live/channelname"

  1. ストリーミングの例

ストリーミングの例では、ライブ ストリーム アドレスは、PHP が提供するインターフェイスを通じて取得されます。次に FFmpeg を介してストリーミング処理を実行し、ビデオ ストリームをローカルに出力します。

最初に、ライブ ストリーム アドレスを取得するために PHP ファイルを作成します。

header("Content-Type: application/json;charset=utf-8");

$channelName = $_POST['channelName'];

$rtmpUrl = "rtmp://ip:1935/live"; // サーバーアドレス
$streamKey = $channelName ;

$url = $rtmpUrl . '/' . $streamKey;

$res = array("code" => 0, "message" => "success", " url " => $url);

echo json_encode($res);
?>

次に、FFmpeg pull stream コマンドを使用してライブ ストリームを処理します:

ffmpeg -i "rtmp://ip:1935/live/チャンネル名" -threads 0 -f mpegts -y out.ts

上記の操作により、簡単なライブプッシュおよびプルストリーミング機能を実装できます。

4. まとめ

PHP によって安定的かつ効率的なライブ配信機能を実現することで、ライブ配信のエクスペリエンスを向上させ、ユーザーの視聴率を向上させることができます。この記事の導入により、PHP を使用してライブ ブロードキャスト サーバーを構築し、ライブ プッシュおよびプル ストリーミング機能を実装する方法については、皆さんも予備的に理解できたと思います。お役に立てれば幸いです。

以上がPHPにより安定かつ効率的なライブ配信機能を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles