答えて

0

これは、Exomediaライブラリで使用されているokhttpクライアントを設定することで実行できます。

まず、setVideoUri(uri、renderbuilder)メソッドを使用してemvideoviewにカスタムのrenderbuilderを提供する必要があります。

カスタムhlsレンダービルダーを提供するには、HlsRenderBuilderクラスをオーバーライドしてcreateDataSourceメソッドをオーバーライドする必要があります。ここでは、OkHttpDatasource (link)オブジェクトを返す必要があります。

OktthpDatasourceクラスのコンストラクタで設定済みのOkhttpクライアントを提供する必要があります。

okhttpクライアントを設定するためです。 レスポンスインターセプタをこのクライアントに追加し、キャッシュを有効にするために元の応答ヘッダーを追加する必要があります。設定例が可能です。

CacheControl cacheControl = new CacheControl.Builder() 
       .maxStale(22, TimeUnit.DAYS) 
       .maxAge(22, TimeUnit.DAYS) 
       .build(); 

     Response originalResponse = chain.proceed(chain.request()); 

     if (originalResponse.code() == 206 || originalResponse.code() == 200) { 
      if (originalResponse.code() == 200) { 
       Headers newHeader = originalResponse.headers().newBuilder().removeAll("Expires").removeAll("Pragma").build(); 
       originalResponse = originalResponse.newBuilder().code(200).body(originalResponse.body()).headers(newHeader).build(); 
      } else { 
       originalResponse = originalResponse.newBuilder().code(200).body(originalResponse.body()).build(); 
      } 
     } 

     if (isNetworkAvailable(mContext)) { 
      int maxAge = 60; // read from cache for 1 minute 
      return originalResponse.newBuilder() 
        .header("Cache-Control", cacheControl.toString()) 
        .build(); 
     } else { 
      int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale 
      return originalResponse.newBuilder() 
        .header("Cache-Control", cacheControl.toString()) 
        .build(); 
     } 
関連する問題