サーバーでホストされている HLS m3u8 プレイリストがあります。
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:YES
#EXT-X-KEY:METHOD=AES-128,URI="https://myserver/playlist/336385.smil/crypt.key?e=6889c9ad1087852"
#EXT-X-VERSION:2
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10,
http://myserver/playlist/336385.smil/segment1_3_av.ts?e=6889c9ad1087852b
#EXTINF:10,
http://myserver/playlist/336385.smil/segment2_3_av.ts?e=6889c9ad1087852b
#EXTINF:10,
http://myserver/playlist/336385.smil/segment3_3_av.ts?e=6889c9ad1087852b
#EXTINF:10,
http://myserver/playlist/336385.smil/segment4_3_av.ts?e=6889c9ad1087852b
#EXTINF:10,
http://myserver/playlist/336385.smil/segment5_3_av.ts?e=6889c9ad1087852b
#EXTINF:10,
http://myserver/playlist/336385.smil/segment6_3_av.ts?e=6889c9ad1087852b
#EXT-X-ENDLIST
ただし、プレイリストを取得するために必要な追加の URL パラメータがあります。つまり、呼び出しは次のようになります。
http://myserver/playlist/336385.smil/segment1_3_av.ts?e=6889c9ad1087852b¶m1=value1¶m2=value2
setDataSource (コンテキストコンテキスト、Uri uri、Map ヘッダー) でヘッダーをキーと値のペアとして設定しても、少なくとも私が試している方法では機能しません。元の URL パラメータからヘッダーを作成する方法は次のとおりです。
String paramString =playlistUrl.substring( playlistUrl.indexOf("?") + 1);
String paramsSplit[] = paramString.split("&");
HashMap<String, String> headers = new HashMap<String, String>();
for(int i= 0;i<paramsSplit.length;i++)
{
String key = paramsSplit[i].substring(0, playlistUrl.indexOf("="));
String value = paramsSplit[i].substring(playlistUrl.indexOf("=")+1, playlistUrl.length() );
headers.put(key, value);//e.g headers.put("param1", "value1");
}
したがって、パラメータを含む Map (つまり、Map'<'param, value'>') になりますが、これらのヘッダーを追加しても機能しません。
プレイリスト m3u8 自体を調べて、最後に追加のパラメーターを使用してすべての URL 呼び出しを自分で修正すると、プレイリストは次のようになります。
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:YES
#EXT-X-KEY:METHOD=AES-128,URI="https://myserver/playlist/336385.smil/crypt.key?e=6889c9ad1087852b¶m1=value1¶m2=value2"
#EXT-X-VERSION:2
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10,
http://myserver/playlist/336385.smil/segment1_3_av.ts?e=6889c9ad1087852b¶m1=value1¶m2=value2
#EXTINF:10,
http://myserver/playlist/336385.smil/segment2_3_av.ts?e=6889c9ad1087852b¶m1=value1¶m2=value2
#EXTINF:10,
http://myserver/playlist/336385.smil/segment3_3_av.ts?e=6889c9ad1087852b¶m1=value1¶m2=value2
#EXTINF:10,
http://myserver/playlist/336385.smil/segment4_3_av.ts?e=6889c9ad1087852b¶m1=value1¶m2=value2
#EXTINF:10,
http://myserver/playlist/336385.smil/segment5_3_av.ts?e=6889c9ad1087852b¶m1=value1¶m2=value2
#EXTINF:10,
http://myserver/playlist/336385.smil/segment6_3_av.ts?e=6889c9ad1087852b¶m1=value1¶m2=value2
#EXT-X-ENDLIST
プレイリストは正常に動作し、問題なく再生されます! これらのパラメーターを手動で使用して m3u8 を修正することは明らかに理想的ではありません。URL 呼び出しに対してこれらのパラメーターを自動的に設定する方法はありますか?