2016-04-06 22 views
2

私はdynamiclyを読んでいるが、私は制限する方法を見つけようとしているOutputing HLS M3U8 TSセグメントPHP-FPM nginxの

#EXTM3U 
#EXT-X-VERSION:3 
#EXT-X-TARGETDURATION:11 
#EXT-X-MEDIA-SEQUENCE:3 
#EXTINF:11.000000, 
2_3.ts 
#EXTINF:8.000000, 
2_4.ts 
#EXTINF:11.000000, 
2_5.ts 
#EXTINF:11.000000, 
2_6.ts 
#EXTINF:8.000000, 
2_7.ts 
#EXTINF:11.000000, 
2_8.ts 

のような基本的にファイルを見

をffmpegのからM3U8のHLSのプレイリストを生成しました単一の接続への接続 は、私は接続と呼ばれる表を持っている:それはストリームID +ユーザIDを保存+ DATE_START & DATE_END &状態

ユーザーが新しいデータの追加ストリーム見始めたら:彼は閉じたら、例

(StreamID : (2) , userID : (3) , Date_Start : Now() , Date_end : Null , status : ON) 

を Nginxは、PHP-FPM & FFmpegの

:接続私は今、()にOFF

エンバイロメント&状態でDATE_ENDを更新したいと思います

プレイリストがシャットダウンを再生された後、問題があるしかし、私は最後の更新

を書くことthe register_shutdown_function('shutdown')を使用していM3U8に何度もコンビを実行した6つのセグメント、それぞれ数秒シャットダウンが再び何度も実行されるが含まれています(デュオチャンクリストが更新された)私はまだ接続を閉じていませんでした。

私は1つの接続がkeeped対象としてプレイリストを処理する方法を探していますので、機能の停止は、プレイリストが

よろしく

答えて

0

を再ロードされている間、クライアントは接続を中止していないときにのみ実行されます単一の持続的な接続を使用しても、PHPスクリプトは各プレイリスト要求に対して実行され、気付いたように、登録されたシャットダウン関数が各実行終了時に呼び出されます。

Date_endを更新する代わりに、ユーザーとストリームIDとともにHTTP要求を即座に記録し、定期的に統計を計算します。例えば。プレイリストがT時間のためにリロードされなかった場合、それは新しいビューセッションです。

また、ユーザーIDをどのように把握しているのか分かりませんが、プレイヤーソフトウェアはセッションを維持できず、情報が要求を超えて保存されないことに注意してください。再生リストとセグメントURLにトラッキング変数を追加することができます。

これは、VODの場合、プレイリストが1回だけロードされるため、ライブプレイリストでのみ機能します。

Webベースのプレーヤーを使用できる場合は、コールバックを介してクライアント側のユーザーをうまく追跡できます。

+0

実際には、ユーザーIDを保持して、終了とダブル接続時にユーザーIDを保持しています。「再生リストがT時間にリロードされなかった場合は、新しい視聴セッションだと思っています。私はそれを解決するための良い方法を見つけることができます – Krasic

+0

ここでは、出力(タイプ+ PID +時間+セグメント)の例ですhttp://pastebin.com/9mkuNjDz – Krasic

+0

同じ再生リストを同じ要求を複数の同時ユーザーがあるどのようにあなたはどちらがどれを知っていますか?各リクエスト/ユーザーを追跡する方法が必要です。プレイリストが 'TARGETDURATION'よりも長い時間要求されなくなったら、セッションが終了したとみなし、' Date_end'を最後のリクエストの時刻で更新します。 – aergistal

関連する問題