H5 ライブビデオ放送

May 28, 2017 am 10:56 AM
ライブビデオ

トレンドに追いつくために、この記事では、ビデオライブ ブロードキャストにおける基本的なプロセスと主要な技術ポイントを紹介します。これにはフロントエンド テクノロジーも含まれますが、これに限定されません。

1 H5 はライブビデオストリーミングを行うことができますか?

もちろん、H5 は長い間人気があり、テクノロジーのあらゆる側面をカバーしています。

ビデオ録画には、強力な webRTC (Web Real-Time Communication) を使用できます。これは、Web ブラウザーでリアルタイムの音声会話やビデオ会話をサポートするテクノロジーです。欠点は、PC でのみサポートされていることです。 chr一部、モバイルのサポートは理想的ではありません。

ビデオの再生には、HLS (HTTP Live Streaming) プロトコルを使用してライブ ストリームを再生できます。設定は単純で、video タグを直接使用するだけです。

webRTC 互換性:

ビデオタグ再生 HLS プロトコルビデオ: 3

4


<ビデオコントロール


自動再生

>


src

=」 77:8080/hls/mystream.m3u8" type="application/vnd.apple.mpegurl" />

<p クラス=「警告」>あなたのブラウザサポートしていません HT ML5

ビデオ

/ p> </ビデオ>


2 HLS プロトコルとは正確には何ですか?

簡単に言うと、ストリーム全体が小さな HTTP ベースのファイルに分割され、毎回ダウンロードされるのは少数だけです。前述したように、H5 でライブビデオを再生すると、.m3u8 ファイルが導入されます。 HLS プロトコルに基づいており、ビデオ ストリームのメタデータを保存するファイルです。

各 .m3u8 ファイルは複数の ts ファイルに対応しており、これらの ts ファイルはビデオを保存する実際のデータであり、ビデオの再生時に .m3u8 ファイルの構成情報と関連パスのみが保存されます。変更すると、ビデオ タグはこのファイルを解析し、対応する ts ファイルを見つけて再生するため、通常は高速化するために、.m3u8 が Web サーバーに配置され、ts ファイルが cdn に配置されます。

.m3u8 ファイルは実際には UTF-8 でエンコードされた m3u ファイルであり、再生情報のテキスト ファイルが保存されるだけです:


以上がH5 ライブビデオ放送の詳細内容です。詳細については、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)

Workerman 開発: WebSocket プロトコルに基づいたビデオ ライブ ブロードキャスト システムを実装する方法 Workerman 開発: WebSocket プロトコルに基づいたビデオ ライブ ブロードキャスト システムを実装する方法 Nov 07, 2023 am 11:25 AM

Workerman は、非同期ノンブロッキング I/O を通じて数千万の同時接続を実現できる高性能 PHP フレームワークで、リアルタイム通信、同時実行性の高いサーバー、その他のシナリオに適しています。この記事では、Workerman フレームワークを使用して、サービスの構築、ライブ ビデオ ストリームのプッシュと受信の実装、フロントエンド ページの表示などを含む、WebSocket プロトコルに基づくライブ ビデオ システムを開発する方法を紹介します。 1. サーバーを構築します。 1. Workerman 依存関係パッケージをインストールします。 次のコマンドを実行して Work をインストールします。

Go 言語フレームワークを使用して Websocket ビデオ ライブ ブロードキャストを実装する方法 Go 言語フレームワークを使用して Websocket ビデオ ライブ ブロードキャストを実装する方法 Jun 05, 2023 pm 09:51 PM

インターネット技術の急速な発展に伴い、ライブビデオは重要なオンラインメディア手段となり、ますます多くのユーザーを魅了しています。 Websocket テクノロジは、リアルタイム通信をサポートするための鍵の 1 つであり、Go 言語フレームワークを使用して Websocket ビデオ ライブ ブロードキャストを実装することが、多くの開発者の研究方向となっています。この記事では、Go 言語フレームワークを使用して Websocket ビデオ ライブ ブロードキャストを実装する方法を紹介します。 1. Websocket の概要 Websocket は、TCP 接続に基づく全二重通信プロトコルです。

Java言語とYoupai Cloudを使用してライブビデオプラットフォームを構築する方法 Java言語とYoupai Cloudを使用してライブビデオプラットフォームを構築する方法 Jul 07, 2023 pm 01:30 PM

Java 言語と Youpai Cloud を使用してライブ ビデオ プラットフォームを構築する方法 ライブ ビデオ プラットフォームの構築は、現在のインターネット分野で注目されているテクノロジーであり、リアルタイムのビデオ ストリームをユーザーのデバイスに送信して、リアルタイムの視聴とインタラクションを実現できます。この記事では、Java言語とYoupai Cloudを使って簡単な動画ライブブロードキャストプラットフォームを構築する方法を紹介します。ステップ 1: Upyun アカウントを登録する. まず、Upyun (upyun.com) で開発者アカウントを登録する必要があります。アカウントにログインすると、サービス名などの必要な情報を取得できます。

PHP と Youpai Cloud API を使用してライブビデオストリーミングを実装する方法 PHP と Youpai Cloud API を使用してライブビデオストリーミングを実装する方法 Jul 06, 2023 pm 01:45 PM

PHP と Youpai Cloud API を使用してライブ ビデオ ストリーミングの機能を実現する方法 現在、ネットワーク技術の継続的な発展と普及に伴い、ライブ ビデオ ストリーミングは人々が情報やエンターテイメントを入手する重要な方法の 1 つとなっています。 Web 開発で広く使用されているスクリプト言語である PHP を Youpaiyun API と組み合わせると、ライブ ビデオ ストリーミング機能を簡単に実装できます。 Youpaiyun は有名なクラウド ストレージおよびコンテンツ配信ネットワーク (CDN) サービス プロバイダーであり、ライブ ビデオ ブロードキャストに関連する機能と API を提供しています。そのサービスは安定していて信頼性が高く、技術サポートも充実しています。

PHP WebSocket 開発ガイド: ライブビデオ機能を実装する手順の分析 PHP WebSocket 開発ガイド: ライブビデオ機能を実装する手順の分析 Sep 12, 2023 pm 02:49 PM

PHPWebSocket 開発ガイド: ライブ ビデオ機能を実装する手順の分析 はじめに: インターネット技術の継続的な発展に伴い、ライブ ビデオは人々の生活に不可欠な部分になりました。ライブビデオ機能を実装する効果的な方法は、WebSocket テクノロジを使用することです。この記事では、PHPを使用してライブビデオブロードキャストの機能を実現するWebSocketを開発する方法を紹介します。ステップ 1: WebSocket テクノロジーを理解する WebSocket は、TCP に基づく全二重通信です。

Pythonを使用してTencent Cloudインターフェースに接続し、ライブビデオ機能を実装します Pythonを使用してTencent Cloudインターフェースに接続し、ライブビデオ機能を実装します Jul 05, 2023 pm 04:45 PM

タイトル: Python を使用して Tencent Cloud インターフェイスに接続し、ライブ ビデオ機能を実現する 要約: この記事では、Python プログラミング言語を使用して Tencent Cloud インターフェイスに接続し、ライブ ビデオ機能を実現する方法を紹介します。 Tencent Cloud が提供する SDK と API を通じて、ライブ ストリーミングと再生機能を迅速に実装できます。この記事では、具体的なコード例を使用して、Python を使用してライブ ストリーミングおよび再生操作を行う方法を詳しく紹介します。 1. 準備作業 コードを書き始める前に、いくつかの準備作業を行う必要があります。 Tencent Cloudアカウントを登録する

Workerman を使用して高性能ビデオ ライブ ブロードキャスト プラットフォームを構築する Workerman を使用して高性能ビデオ ライブ ブロードキャスト プラットフォームを構築する Aug 08, 2023 am 11:33 AM

Workerman を使用して高性能ライブ ビデオ プラットフォームを構築する 要約: 最新のテクノロジーの発展に伴い、ライブ ビデオはエンターテイメントの形式としてますます人気が高まっています。ただし、ライブ ブロードキャスト プラットフォームは、多数の同時接続と高帯域幅の要件を処理する必要があるため、高性能のソリューションが必要です。この記事では、PHP のネットワーク通信ライブラリ Workerman を使用して、高性能なビデオ ライブ ブロードキャスト プラットフォームを構築する方法を紹介します。はじめに: ネットワーク帯域幅の向上とモバイル端末デバイスの普及により、ライブ ビデオは非常に人気のあるエンターテイメントになりました。

PHP を使用して CMS でライブビデオおよびライブブロードキャスト管理モジュールを開発する方法 PHP を使用して CMS でライブビデオおよびライブブロードキャスト管理モジュールを開発する方法 Jun 21, 2023 am 09:15 AM

ライブ ビデオの発展に伴い、ライブ ビデオを CMS (コンテンツ管理システム) に組み込む必要がある Web サイトがますます増えています。 PHP は、学習と使用が簡単なため、Web 開発で広く使用されている人気のあるサーバーサイド スクリプト言語です。この記事では、PHP を使用して CMS でライブビデオおよびライブブロードキャスト管理モジュールを開発する方法を紹介します。開始する前に、次のものを準備する必要があります: PHP を実行している Web サーバー、ライブ ビデオ プラットフォーム (Bilibili または Tencent Cloud Live を推奨)、ライブ ビデオ プラグイン (

See all articles

1

2

3

4

5

6

7


#

EXTM3U

#外部-

X

-メディア- SEQUENCE 最初の TS シャードのシーケンス番号#EXT-

X

- TARGETDURATION 各シャード TS 最大期間 #EXT

-

X-ALLOW-CACHE キャッシュ #EXT

-XX

-NENDLISTextinf(秒単位)は、それに続くuriに対してのみ有効です。 ts


ts ファイル:

HLS リクエストプロセスは:
1 http リクエスト m3u8 URL。
2 サーバーは m3u8 プレイリストを返します。このプレイリストはリアルタイムで更新されます。通常、一度に 5 つのデータ URL が与えられます。 3 クライアントは m3u8 プレイリストを解析し、各セグメントの URL を順番にリクエストして ts データ ストリームを取得します。
簡単なプロセス:

3 HLS ライブ ブロードキャストの遅延

hls プロトコルは、ダウンロードと再生のためにライブ ストリームを短いビデオに分割することがわかっているため、リストに 5 つの ts ファイルが含まれていると仮定すると、各 TSファイルには 5 秒のビデオ コンテンツが含まれているため、全体の遅延は 25 秒になります。これらのビデオを見るときには、ホストがすでにビデオを録画してアップロードしているため、これによって遅延が発生します。もちろん、リストの長さと 1 つの ts ファイルのサイズを短くして、極端にリストの長さを 1 に、ts の期間を 1 秒に減らすこともできます。ただし、これにより数値は増加します。ネットワーク速度が遅い場合、タイミングによってバッファリングが増加するため、Apple が公式に推奨する ts 期間は 10 秒であるため、これにより 30 秒の遅延が発生します。参考:

https://

developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html4 ライブビデオストリーミングの全体的なプロセスは何ですか?

ライブビデオは大きく分けて次のとおりです:

1 ビデオ録画終了: 通常、コンピューターのオーディオおよびビデオ入力デバイス、または携帯電話のカメラまたはマイクが現在、携帯電話のビデオが主です。

2 ビデオプレーヤー: コンピューター上のプレーヤー、携帯電話上のネイティブプレーヤー、または h5 ビデオタグなどがあります。現在、携帯電話上のネイティブプレーヤーがメインです。

3 ビデオサーバー: 通常は nginx サーバーで、ビデオ録画側から提供されるビデオ ソースを受け入れ、ビデオ プレーヤー側にストリーミング サービスを提供するために使用されます。

簡単なプロセス:

5 音声とビデオを収集するには?

最初にいくつかの概念を明確にします:

ビデオエンコーディング: いわゆるビデオエンコーディングは、特定の圧縮技術を通じて特定のビデオ形式ファイルを別のビデオ形式ファイルに変換する方法を指します。ビデオは、クライアントのプレーヤーで実際に再生できる前に、エンコード、アップロード、およびデコードする必要があります。

コーディングおよびデコーディング規格: ビデオストリーミング伝送で最も重要なコーディングおよびデコーディング規格には、ITU の H.261、H.263、および H.264 が含まれ、その中で HLS プロトコルは H.264 形式のエンコーディングをサポートしています。

オーディオ

エンコーディング: ビデオのエンコーディングと同様に、元のオーディオ ストリームは、特定の標準に従ってエンコード、アップロード、デコードされ、プレーヤーで再生されます。もちろん、オーディオには、PCM エンコーディング、WMA エンコーディングなどの多くのエンコーディング標準があります。 、および AAC エンコーディング。お待ちください。ここでの HLS プロトコルでサポートされているオーディオ エンコーディング方式は AAC エンコーディングです。
以下では、iOS 上のカメラを使用してオーディオとビデオのデータを収集します。これは主に次の手順に分かれています:

1 オーディオとビデオの収集、iOS では、AVCapture

Session

を使用して収集できます。および AVCaptureDevice 元のオーディオおよびビデオ データ ストリーム。

2 ビデオの場合は H264 エンコード、オーディオの場合は AAC エンコード iOS には、オーディオとビデオをエンコードするためのカプセル化されたエンコード ライブラリがあります。 3 エンコードされたオーディオおよびビデオ データをパケットに組み立てます。 4 RTMP 接続を確立し、サーバーにプッシュします。


追記: ほとんどのコーディング ライブラリは

C 言語

で記述されているため、iOS の場合は、既にコンパイルされたコーディング ライブラリを使用できます。

x264 エンコード: https://github.com/kewlbear/x264-ios

faac エンコード: https://github.com/fflydev/faac-ios-build ffmpeg エンコード: https:// github.com/kewlbear/FFmpeg-iOS-build-script

フィルターの追加など、ビデオに特殊効果を追加したい場合は、通常、エンコード前にフィルター ライブラリを使用しますが、これにより、これにより、ビデオ データのアップロードにある程度の遅れが生じます。

簡単なプロセス:

6 前述の ffmpeg とは何ですか?

以前の x264 と同様に、ffmpeg は実際にはエンコード ライブラリのセットです。Xvid と同様に、Xvid は MPEG4 プロトコルに基づくコーデック、x264 は H.264 プロトコルに基づくエンコーダーであり、ffmpeg はさまざまなオーディオ、ビデオを統合します。エンコードとデコードのプロトコルをパラメータを設定することで、MPEG4、H.264 などのプロトコルに基づいたエンコードとデコードを実行できます。ここでのデモでは、x264 エンコード ライブラリを使用します。

7 RTMP とは何ですか?

Real Time Messaging Protocol (略して RTMP) は、Macromedia によって開発され、現在は Adob​​e に属しているビデオ ライブ ブロードキャスト プロトコルのセットです。 HLS と同様に、ライブ ビデオ ブロードキャストに適用できます。違いは、RTMP は Flash に基づいており、iOS ブラウザでは再生できないことですが、リアルタイム パフォーマンスは HLS よりも優れています。したがって、このプロトコルは通常、ビデオ ストリームをアップロードするために使用されます。つまり、ビデオ ストリームがサーバーにプッシュされます。

これが hls と rtmp の比較です:

8 プッシュ ストリーミング

いわゆるプッシュ ストリーミングとは、エンコードしたオーディオとビデオ データをビデオ ストリーミング サーバーに送信することです。一般的には rtmp です。ストリーミングには、サードパーティのライブラリ librtmp-iOS を使用できます。 librtmp は、ユーザーが呼び出せるようにいくつかのコア api をカプセル化します。それが面倒な場合は、既製の iOS ビデオ ストリーミング SDK を使用できます。これも rtmp に基づいています。 https://github.com/runner365/LiveVideoCoreSDK

9 ストリーミング サーバーのセットアップ

アップロードするビデオ ストリームは rtmp プロトコルに基づいているため、サーバーは次のようにする必要があります。 rtmp もサポートしています。おそらく次の手順が必要です。

1 nginx サーバーをインストールします。

2 nginx の rtmp 拡張機能をインストールします。現在、最も一般的に使用されているのは https://github.com/arut/nginx-rtmp-module

3 nginx conf ファイルを構成します。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17


rtmp

サーバー{

聞いてください 1935;

#リスニングポート

チャンク_size 4000;

Application

hls{rtmpプッシュリクエストパスpath

usr

/local/var/www /hls;

}


4 インスタンスを表します。つまり、将来生成されるファイル名を自分で設定できます。詳しい設定については、https://github.com/arut/nginx-rtmp-module/wiki/

を参照してください。 基本的に、rtmp をサポートするビデオサーバーは上記の手順に基づいて実装されています。

10 HTML5 ページでライブビデオを再生しますか?

簡単に言うと、video タグを使用して HLS プロトコルのライブビデオを直接再生できます: 4


<ビデオ自動再生

ウェブキット
-

プレイシンライン

>


<source src="http: // 10.66.69.77:8080/hls/mystream.m3u8" type="application/vnd.apple.mpegurl" />

<p class="warning">あなたの ブラウザ ではありません サポート HTML5

ビデオ. </p> </ビデオ> ;


webkit-playsinline 属性 が video タグに追加されることに注意してください。この属性は、iOS の uiwebview でビデオを全画面表示せずに再生できるようにするためのものです。全画面表示では、uiwebview に allowedInlineMediaPlayback= を設定する必要があります。 Videojs は業界で比較的成熟しており、たとえば、iOS ではビデオ タグを使用し、PC ではフラッシュを使用するなど、さまざまなプラットフォームに応じてさまざまな戦略を選択できます。

11 落とし穴のまとめ

Jian 上記の手順に基づいて、著者は iOS ビデオの録画、収集、アップロード、ライブ ストリームを配信する nginx サーバー、ライブ ビデオを再生するための h5 ページの実装までのデモを作成しました。 、プロセスの完全なセット、要約 以下にいくつかの落とし穴があります:

1 AVCaptureSession を使用してビデオをキャプチャする場合、AVCaptureVideoDataOutputSampleBufferDelegate プロトコルを実装する必要があり、同時に - (void)captureOutput:(AVCaptureOutput *)captureOutput DidOutputSampleBuffer: (CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection ビデオ ストリームをキャプチャする場合、didOutputSampleBuffer メソッドは、didDropSampleBuffer メソッドではなく、その時点で一度だけトリガーされることに注意してください。メソッド呼び出しが間違っていることがわかるまでに長い時間がかかりました。

2 rtmp を使用してストリームをプッシュする場合、rmtp アドレスは rtmp:// で始まる必要があり、IP アドレスは localhost ではなく実際の IP アドレスを記述する必要があります。同時に、localhost であるため、ポート番号を追加する必要があります。携帯電話からアップロードすると認識されません。

将来いくつかの落とし穴が追加され、コードを貼り付ける必要があるものもありますが、これらはここにリストされています。

12 業界サポート

現在、Tencent Cloud、Baidu Cloud、Alibaba Cloud には、ビデオ録画からビデオ再生、ストリーミングまで、一連の SDK があり、ビデオ ライブ ブロードキャストに基づいたソリューションが提供されています。欠点は、手数料がかかること、そして可能であれば自分で導入するのは難しくないことです。

デモアドレス: https://github.com/lvming6816077/LMVideoTest/