ホームページ  >  記事  >  バックエンド開発  >  PHPにより安定かつ効率的なライブ配信機能を実現

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

WBOY
WBOYオリジナル
2023-05-22 08:33:211701ブラウズ

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

17e993d2b90af4f5e44807cc318dab9e

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

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

  1. ストリーミングの例

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

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

7081795fc2ace63b2bf58d3901c93d10 $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 までご連絡ください。