답변

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(); 
     }