5

DVR m3u8 ではなく、ライブ m3u8 ファイルを取得したいと考えています。後者にはセグメントが多すぎて (4 時間)、遅く、ダウンロードして処理するのが不便だからです。

たとえば、空のニュースのライブ チャンネル

www.youtube.com/watch?v=y60wDzZt8yg

私がやった事:

ユーザー エージェント文字列を iPad に変更するか、アクセスします

www.youtube.com/get_video_info?&video_id=y60wDzZt8yg

私は次のようなものを得ることができました

manifest.googlevideo.com/api/manifest/hls_variant/playlist_type/DVR/signature/11D1EE619ACDCA91661CB6F42597F96F0C86CC1F.742A7B383F4B10A099B1C7AAEF1E15DCD2F160C6/ipbits/0/fexp/9416126%2C9420452%2C9422596%2C9423459%2C9423661%2C9423662/source/yt_live_broadcast/id/y60wDzZt8yg.2/サーバー/3/キー/yt6/upn/0y8ab4RaX_U/expire/1454380402/sparams/gcr%2Cid%2Cip%2Cipbits%2Citag%2Cmaudio%2Cplaylist_type%2Cpmbypass%2Csource%2Cexpire/ip/86.172.63.152/itag/0/pmbypass/はい/maudio/1/gcr/gb/file/index.m3u8

複数の解像度のサブ m3u8 ファイルが含まれています。

この720p sub-m3u8ファイルを開くと

manifest.googlevideo.com/api/manifest/hls_playlist/id/y60wDzZt8yg.2/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/gir/yes/dg_shard/eTYwd0R6WnQ4eWcuMg. 95/hls_chunk_host/r7---sn-cu-n1qe.googlevideo.com/playlist_type/DVR/pmbypass/yes/gcr/gb/mm/32/mn/sn-cu-n1qe/ms/lv/mv/u/ pcm2cms/はい/pl/24/dover/3/fexp/9416126,9420452,9422596,9423459,9423661,9423662/sver/3/upn/0y8ab4RaX_U/mt/1454358580/ip/86.172.63.152/ipbits/0/expire/ 1454380402/sparams/ip,ipbits,expire,id,itag,source,requiressl,ratebypass,live,cmbypass,gir,dg_shard,hls_chunk_host,playlist_type,pmbypass,gcr,mm,mn,ms,mv,pcm2cms,pl/signature/ 86FCD06C0400556C7F94B21019707B2501F98308.659A34C0F8A2DC70CC8DC411CD5D723C55146DD3/キー/dg_yt0/プレイリスト/index.m3u8

最近の 4 時間の ts セグメントが含まれており、処理が非常に遅く、それ以上のことを行うことができません。クエリ文字列を追加するとわかりました

?start_seq=344610

上記のリンクにアクセスすると、この特定のシーケンスで始まるはるかに短い m3u8 ファイルを取得できました。ただし、ファイル内のシーケンスの数は、start_seq パラメーターを同時に増加させない限り、時間とともに増加します。

対照的に、チャンネル プロバイダーによって再生が有効にされていないライブ ストリームの場合、YouTube は、1 分未満のシーケンスのみを含むライブ m3u8 ファイルを自動的に返します。リンクの最も顕著な違いは、

プレイリスト_タイプ/ライブ

それよりも

プレイリスト_タイプ/DVR

プロバイダが再生を許可している YouTube ライブ ストリーム用の LIVE m3u8 ファイルを取得できるかどうか疑問に思っています。「start_seq=XXX」に似たパラメータがいくつかあるのではないでしょうか? または、ライブ m3u8 リンクを直接返すことができる API がありますか? どうもありがとうございました。

4

1 に答える 1

0

これがまさにあなたの望むものかどうかはわかりませんが、Firefox で Charles Proxy を使用し、iOS でユーザー エージェントを Safari に設定すると、DVR リンクを含む m3u8 プレイリストを取得できました。

HTTP GET: https://manifest.googlevideo.com/api/manifest/hls_variant/upn/wLKv6OL3J1A/sparams/gcr%2Cid%2Cip%2Cipbits%2Citag%2Cplaylist_type%2Cpmbypass%2Cratebypass%2Csource%2Cexpire/expire/1454656348/signature/D1ADDA66092157D87C5DBAB0ECD81AB1D4467291.646FFD703F6ADA2C2E9769F7F3590274C9555148/id/y60wDzZt8yg.2/key/yt6/ip/209.122.120.50/ratebypass/yes/pmbypass/yes/gcr/us/itag/0/ipbits/0/fexp/9405349%2C9408491%2C9418223%2C9419543%2C9420452%2C9421886%2C9422596%2C9422780%2C9423661%2C9424135%2C9424163%2C9425065%2C9425200%2C9425744%2C9426402%2C9427000%2C9427753/playlist_type/DVR/source/yt_live_broadcast/sver/3/keepalive/yes/file/index.m3u8?cpn=OjahYpsGmZq6lLAS

ヘッダー付きの完全な curl コマンド:

curl -H "Host: manifest.googlevideo.com" \
-H "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16" \
-H "Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5" \
-H "Accept-Language: en-US,en;q=0.5" \
-H "Range: bytes=0-" \
-H "Referer: https://m.youtube.com/watch?v=y60wDzZt8yg" \
https://manifest.googlevideo.com/api/manifest/hls_variant/upn/wLKv6OL3J1A/sparams/gcr%2Cid%2Cip%2Cipbits%2Citag%2Cplaylist_type%2Cpmbypass%2Cratebypass%2Csource%2Cexpire/expire/1454656348/signature/D1ADDA66092157D87C5DBAB0ECD81AB1D4467291.646FFD703F6ADA2C2E9769F7F3590274C9555148/id/y60wDzZt8yg.2/key/yt6/ip/209.122.120.50/ratebypass/yes/pmbypass/yes/gcr/us/itag/0/ipbits/0/fexp/9405349%2C9408491%2C9418223%2C9419543%2C9420452%2C9421886%2C9422596%2C9422780%2C9423661%2C9424135%2C9424163%2C9425065%2C9425200%2C9425744%2C9426402%2C9427000%2C9427753/playlist_type/DVR/source/yt_live_broadcast/sver/3/keepalive/yes/file/index.m3u8?cpn=OjahYpsGmZq6lLAS

このリンクcpnは、Channel Privacy Number であるパラメーターを取ります。これは、オプションであると思われる URL 要求に追加されたパラメーターでした。

于 2016-02-05T01:19:43.110 に答える