2.0.6 (2022.02.08)
TimeShiftする際のcurrent positionとdurationエラーを修正
進捗率にVolume, Playrate関連スペックを追加
prepareAsync 重複リクエストによりバッファリング時間がマイナスにリターンされる問題を修正
releaseバージョンでProguardを適用した際にCrashする問題を修正
lmsに置換子 {PLAY_BLOCK_JSON}を使用する際のデータエラーを修正
2.0.5 (2021.11.22)
バグ修正: ExoPlayer seekする際のcomplete notifyする時点を変更
- 一般的にシーク動作がリクエストされると、Playerは最も近いキーフレームに移動します。
- 例)動画の10秒時点にキーフレームがあって、11秒時点をシークするようにリクエストされた場合、シーク動作後の実際の場所は10秒になります。
※全てのVideo Playerはこの方式で動作します。
- 例)動画の10秒時点にキーフレームがあって、11秒時点をシークするようにリクエストされた場合、シーク動作後の実際の場所は10秒になります。
- バグ修正前
- 例)11秒時点にシークをリクエストされた場合に10秒時点にキーフレームがあると上記動作のようにPlayerは10秒に移動するが、シーク動作に対するリターン値は11秒になる。
実際再生には影響がなくても、LMS Callbackなどに影響する可能性あり。
- 例)11秒時点にシークをリクエストされた場合に10秒時点にキーフレームがあると上記動作のようにPlayerは10秒に移動するが、シーク動作に対するリターン値は11秒になる。
- バグ修正後
- シーク動作のリターン値が、実際シーク関数が完了された時点(10秒)と一致する。
- 一般的にシーク動作がリクエストされると、Playerは最も近いキーフレームに移動します。
スペック変更: setBandwidth動作変更
- 変更前
- "setBandwidth"関数をリクエストしても、exoPlayerはバッファされたストリームサイズが25秒未満にならない限り、ビットレートを変更しない。
- 変更後
- "setBandwidth"関数をリクエストすると、exoPlayerはバッファされたストリームサイズを無視し、関数がリクエストされた直後にビットレートを変更する。
- 変更前
Forensic Video Watermark関連のAPIを追加
/**
* ForensicWatermarkViewを設定する関数。SurfaceViewまたはSurfaceを入れた状態でリクエストしてください。
* フォレンジックビデオウォーターマークに対応する場合、必須で設定してください。
*
* @param view
*/
public void setForensicWatermarkView(ForensicWatermarkView view);/**
* フォレンジックウォーターマークを表示するView、最上位のViewGroupにてaddViewしてください。
* @param context
* @param storage
* @param key 発行されたキー
* @param expireDate 発行されたキーの有効期限
* @param isDownload ダウンロードコンテンツかどうか
*/
public ForensicWatermarkView(Context context, KollusStorage storage, String key, String expireDate, boolean isDownload);
2.0.4 (2021.10.28)
MediaPlayerに以下のAPIを追加しました。
/**
* 再生を開始するBandwidthを設定する関数となります。0に設定するとbandwidthリストの最上段項目から再生を開始します。
* 0より大きい値を設定すると、設定された範囲内で最も高いbandwidthで開始します。
* prepareAsyncする前にリクエストしてください。
* @param bandwidth
*/
public void setInitialBandwidth(int bandwidth);
/**
* 上位bandwidthに転換する際に、残っているバッファ容量が設定値以上の場合のみに適用されるように設定する関数となります。
* デフォルト値は10秒です。
* prepareAsyncする前にリクエストしてください。
* @param msec
*/
public void setMinDurationForQualityIncreaseMs(int msec);MediaPlayerから以下のAPIを削除
public void setBufferDurationsMs(int minBufferMs, int maxBufferMs);
理由: 設定されたサイズだけ必ずバッファリングするため、円滑なABR動作を妨害するMulti DRM コンテンツのストリーミング再生終了後、キャッシュフォルダを削除
2.0.3 (2021.10.21)
- サムネイルダウンロード完了及びABRの画質が変更する際のデバッグログを追加
→バッファリングに時間が掛かる区間を確認するサムネイルダウンロードログを追加
→初期画質変更の際の遅延を確認するためのログを追加 - ログサーバーとの通信をリクエストされたプロトコルに合わせて動作するように修正
→httpsでリクエストした際に、SDK内部で行われるhttp通信はlocal proxyを除いて全て削除 Multi DRMサムネイルダウンロード方式を、非同期方式で動作できるオプションを追加
→サムネイルダウンロードに掛かる時間がバッファリングに影響を与えるため、この動作方式を同期→非同期に変更
→関連インターフェースpublic interface KollusPlayerThumbnailListener { void onCached(int index, int nErrorCode, String savePath); } - KollusStorageに追加されたAPI /** * KollusPlayerThumbnailListener 登録関数 * @param listener */ public void setKollusPlayerThumbnailListener(KollusPlayerThumbnailListener listener); - KollusContentに追加されたAPI /** * SDK内部で使用 * @param enable サムネイル有効化有無を設定 */ public void setThumbnailEnable(boolean enable); /** * サムネイル有効化有無 * @return */ public boolean isThumbnailEnable(); /** * SDK内部で使用 * @param bThread サムネイルダウンロードがスレッド方式かどうかを設定 */ public void setThumbnailThread(boolean bThread); /** * load する時にサムネイルダウンロードが Sync(no thread)かどうかを取得 * @return */ public boolean isThumbnailDownloadSync();
アプリ側では上記のように作業してサムネイルダウンロードが完了されるまでには表示されないようにUI側で処理が必要
他にこの機能の制御はトークンで行います。
https://support.catenoid.net/display/SUPJP/JWT
上記の内容の中、thumbnailのthreadをtrueに指定します。- small thumbnailに対応
サムネイルサイズは、254*108, 50*50の2つとなり、オプション処理でsmallサイズでダウンロードすることが可能
関連オプションは
https://support.catenoid.net/display/SUPJP/JWT
上記の内容の中、thumbnailのtypeをsmallに指定します。
2.0.2 (2021.10.17)
- 再生開始後、終了する際に落ちる問題を修正
→ネットワークに接続をトライする際に終了されるとANRが発生する可能性あり
SDK内部でcurlを使用しているため、ネットワークに接続をトライする際には止める手段がないため弱電界でのANRは回避が不可能 - DASH, HLSの場合、UserAgentが間違って取得される問題を修正
→ログ取得プロセスに問題があったため、顧客サービスには関係ない内容 - MediaPlayerにて以下のAPIを追加
/**
* バッファリング時間を設定する関数、prepareAsyncの前にリクエストする。DASH, HLSのみで動作
* @param minBufferMs
* @param maxBufferMs
*/
public void setBufferDurationsMs(int minBufferMs, int maxBufferMs);
→低画質から高画質に転換されるまで30秒が掛かるということで、loadControlが効かない可能性があると判断し、
loadControlのsetBufferDurationMs因子の1番、2番目因子の値をそれぞれ6秒、12秒で固定していたものを、外部から取得した値で設定できるようなAPIを追加しました。※ネットワーク状態によって既にバッファリングされたものや最高画質再生に至らない回線速度の場合、バッファリングのstart, endがなくても30秒以上掛かる可能性があります。
2.0.1 (2021.10.07)
- load途中で再生終了する時にANRを防止(for ExoPlayer)
- intro映像、またはseekableがfalseの場合ブックマークを取得しないように修正(for ExoPlayer)
- 再生中エラーの時にエラーレポートが抜ける問題を修正 (for ExoPlayer)
- ABR 画質を選択する際に画質を固定しないで、該当画質までABRするように変更 (for ExoPlayer)
- ABR Playlistの最初項目を再生するように修正 (for ExoPlayer)
- 画質選択APIを以下のように変更
- 変更前
public void setBandwidth(String bandWidthName);
- 変更後
public void setBandwidth(int bandWidth);
public void setBandwidthName(String bandWidthName); - Utilsクラスの以下のAPIを変更
- isTablet アクセサ privateに変更
- public static @DEVICE_TYPE int getDeviceType(Context context)を追加
2.0.0 (2021.08.31)
- forensic watermark追加
- KollusContentにて以下のAPIを変更
- public void setHasWaterMark(boolean hasWaterMark) --> public void setAudioWaterMark(String waterMark)
- public boolean getHasWaterMark() --> public boolean hasAudioWaterMark()
- KollusContentにて以下のAPIを追加
- public String getAudioWaterMark()
- public void setForensicWaterMark(String waterMark)
- public String getForensicWaterMark()
- public boolean hasForensicWaterMark()
- ライブストリーミング(HLS, Mpeg-Dash)がエラーになった際、リトライと終了、衝突防止
- 保存場所を読み込む際にNullPointerExceptionを防止
- 終了する際に、フリーズする現象を防止(弱電界にて発生する可能性)
ExoPlayer 更新(2.10.3 -> 2.13.2)
MultiDRM ライブラリ開発環境が2.13.2
build.gradleにて以下の内容を追加defaultConfig { ... multiDexEnabled true } dependencies { ... implementation 'androidx.multidex:multidex:2.0.1' implementation 'com.google.guava:guava:27.1-android' }
- Multi DRM 2.1.3ライブラリを適用
- AndroidManifestにてorg.apache.http.legacyの使用を除去
2021.06.14
- コンテンツ DurationがLMSのブロック数より大きい場合の防御コードを追加
- MP4ボックスエラーの防御コードを追加 (ExoPlayer)
- MP4ボックスのコーデック情報と実際のコーデック情報が異なる場合の防御コードを追加 (AwesomePlayer)
- マルチダウンロード途中に同一なリストを再度リクエストした際に download completeになる不具合を修正
- KollusContentにて以下のオーディオファイル確認関連APIを追加
/**
* SDK 内部で使用
* @param bAudioFile AudioFile
*/
public void setAudioFile(boolean bAudioFile);/**
* オーディオコンテンツかどうかを取得する関数
* @return オーディオファイル可否
*/
public boolean isAudioFile() ; - テルテンエミュレータチェックライブラリを適用
- KollusContentにてAPIを追加
/**
* SDK 内部で使用
* @param block
*/
public void setBlockEmulator(boolean block);/**
* エミュレータ使用中かどうか
* @return
*/
public boolean useBlockEmulator(); - EmulatorCheckerListenerにてAPIを追加
- public void onDetectRooting();
- AndroidManifest.xmlにて <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> permissionを追加
- KollusContentにてAPIを追加
- 再生開始後すぐにクラッシュする不具合を修正
- prepare 途中に ExoPlayerが生成されずdestroyDisplayした際にNullPointerExceptionが発生
- 弱電系状態での -8403エラーを修正
- ExoPlayerの timeout(8秒)によってリトライするとproxy側では既にclientが存在することに判断されたため発生
- 500ms sleep 後、connectionがない場合には正常処理
2021.02.05
再生開始直後に終了する現象を修正
* 終了の際にURLをnull処理する際に、prepareのURL値がnullだったため発生。Lockerを追加
NDK Codecで発生するCashの疑いがある要素を修正
ExoPlayerでTrackInfoの取得ができるように修正
Proxy Server セキュリティ強化
外部メモリにダウンロードしている途中に分離される場合、-8623で処理される現象を修正
チャット関連事項を追加
KollusContent 以下の要素を追加
/**
* SDK 内部で使用
* @param info チャット関連情報
*/
public void setChattingInfo(ChattingInfo info);
/**
* チャット設定に必要な情報を取得する関数
* @return チャット情報
*/
public ChattingInfo getChattingInfo();
public class ChattingInfo {
public String mainUrl;
public String kind;
public String position;
public boolean isVisible;
public boolean isAdmin;
public boolean bDisableDefaulProfilePhoto;
public String roomId;
public String chatServer;
public String helloMessage;
public String userName;
public String userId;
public String photoUrl;
}
2020.12.09
1. intro動画で正確なSeekを繰り返した際に落ちる問題修正
----------------------------------------------------------------------------------------
2020.11.30
1. User Agent 規則変更 (pc, mobile, tablet 区別)
2. KollusContentに最大倍速関連APIを追加
/**
* SDK 内部で使用
* @param rate
*/
public void setMaxPlaybackRate(int rate);
/**
* 最大倍速を取得する関数
* @return
*/
public int getMaxPlaybackRate();
----------------------------------------------------------------------------------------
2020.11.12
1. KollusStorageに以下のAPIを追加
* public void sendStoredLMS(StoredLMSListener listener);
2. KollusStorageのリスナー関連、API変更及び追加
1. OnKollusStorageListener 関連事項
* setOnKollusStorageListener -> registerKollusStorageListener に変更
* unregisterKollusStorageListener 追加
2. KollusPlayerDRMListener 関連事項
* setKollusPlayerDRMListener -> registerKollusPlayerDRMListener に変更
* unregisterKollusPlayerDRMListener 追加
3. KollusPlayerLMSListener 関連事項
* setKollusPlayerLMSListener -> registerKollusPlayerLMSListener に変更
* unregisterKollusPlayerLMSListener 追加
4. KollusPlayerThumbnailListener 関連事項
* setKollusPlayerThumbnailListener -> registerKollusPlayerThumbnailListener に変更
* unregisterKollusPlayerThumbnailListener 追加
5. KollusPlayerCallbackListener 関連事項
* setKollusPlayerCallbackListener -> registerKollusPlayerCallbackListener に変更
* unregisterKollusPlayerCallbackListener 追加
/**
* 保存されたLMSデータをPlayerではなく別途APIで取得する際に、
* 結果がリターンされるリスナー
*/
public interface StoredLMSListener {
/**
* 保存されたLMSデータを全て転送してから取得する関数
* @param successCount 転送成功件数
* @param failCount 転送失敗件数
*/
void onSendComplete(int successCount, int failCount);
}
3. ライブ再生中、重複再生遮断に必要な情報が抜けていた問題を修正
----------------------------------------------------------------------------------------
2020.11.02
1. Current Position エラー修正
2. Rollypop以前の場合、Pallycon Agentを生成しない
----------------------------------------------------------------------------------------
2020.10.19
1. 再生初期バッファリング時間reportingを間違ったURLに送る問題を修正
2. 再生初期バッファリング時間reportingをASyncするように変更
3. ダウンロードするためにコンテンツがLoadされたかを確認するAPIを追加
* KollusContentに以下のAPIを追加
* public void setLoaded(boolean bLoaded);//内部のみ使用
* public boolean isLoaded();
4. prepare 完了される前に再生終了した際に落ちる問題を修正 (マーケットの一部NullPointExceptionと関連)
* prepare直後に終了した際に、uriがnullのため落ちる
* prepare後、onPrepared リクエストする時点に終了した場合、コンテンツ情報がnullのため落ちる
5. ライブPlaycallback resultが 0の場合、エラーメッセージがないと間違ったエラーコードが上がる問題を修正
6. 内部で管理するダウンロードリストに存在しないmckでdowload apiをリクエストした際に落ちる問題を修正
* ダウンロードするためにloadし、削除してからdowload apiをリクエストすると判断
7. ブックマークタイトルが抜ける問題を修正(for ExoPlayer)
----------------------------------------------------------------------------------------
2020.08.10
1. 2020.06.08_r1 Base
2. ネットワークが断絶されていてもタイムアウトが適用されるように修正
3. introで、Audio watermarking映像を再生し、次にAudio watermarkingが適用されてない映像を再生した際に落ちる問題を修正
4. ExoPlayer リピート再生するときにバッファリング表示になる問題を修正
* リピート再生の時に、暫くバッファリング状態になる可能性があるため、リピート再生中にはバッファリング表示をしないように修正することを推奨します。
5. disable_nscreenが trueのダウンロードコンテンツにnscreen情報が出る問題を修正
6. オフラインブックマークタイトルが抜ける問題を修正
7. Multi DRM ダウンロード機能を追加
* KollusContentにpublic @ContentType int getContentType(); 追加
* KOLLUS_CONTENT, EXT_DRM_CONTENT
* ダウンロード中にはファイルサイズ情報が正確に取得できない可能性があります。
8. User Agent 規則変更
9. ライブLMSデータのエラーを修正
10. ライブにVideo watermark表示されない問題を修正
----------------------------------------------------------------------------------------
2020.08.03
1. オフラインブックマークタイトルが抜ける問題を修正
2. オフラインブックマークの追加を連打すると落ちる問題を修正
----------------------------------------------------------------------------------------
2020.07.21
1. 2020.03.20_r1にロールバック
2. VMチェック不具合エラーが報告されない時点(2019.04.09_r1)に適用
3. OnInfoListenerに以下の関数を追加
* void onCodecInitFail(String componentName);
4. disable_nscreenがtrueのダウンロードコンテンツにnscreen情報が出る問題を修正
----------------------------------------------------------------------------------------
2020.06.08
1. OnInfoListenerに以下の関数を追加
* void onCodecInitFail(String componentName);
2. No Kollus VOD 字幕対応
3. No Kollus VOD Playcallback対応
4. No Kollus VOD ネットワークタイム適用
5. VMチェックするに変更
6. Utilsの関数変更
* public static String createUUIDSHA1(Context context)からpublic static String getPlayerId(Context context)に変更
* public static String createUUIDMD5(Context context)からpublic static String getPlayerIdMd5(Context context)に変更
* public static String getPlayerId(Context context)からpublic static String getPlayerIdSha1(Context context)に変更
7. HLS 終了した際に落ちる問題を修正
----------------------------------------------------------------------------------------
2020.04.22
1. ExoPlayer 適用
* JellyBean MR2(18)以上、AudioWatermarkがない場合、デフォルトPlayerをExoPlayerに変更
* appのbuild.gradleに追加
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
* AndroidManifest.xmlのapplicationタグ
* android:usesCleartextTraffic="true" 追加
* <uses-library android:name="org.apache.http.legacy" android:required="false" />
* port number の設定が必要
2. OnInfoListenerに以下の関数を追加
* void onDetectBandwidthList(MediaPlayer mp, List<BandwidthItem> list);
* void onChangedBandwidth(MediaPlayer mp, BandwidthItem item);
3. MediaPlayerに以下の関数を追加
* public void setBandwidth(String bandwidthName);
4. introがある映像で、本映像にPlayCallbackでエラーが発生した際にhangになる問題を修正
5. MediaPlayerのsetCencProxyPath関数を除去 (MediaInfoを使用)
----------------------------------------------------------------------------------------
2020.03.20
1. Audio watermarkingが適用されている場合、全体リピート再生した際に画面更新されない問題を修正
----------------------------------------------------------------------------------------
2020.02.18
1. Seekする際に次の区間まで字幕が表示されない問題を修正
2. onPrepared以降に字幕が出るように修正
----------------------------------------------------------------------------------------
2020.01.18
1. ToolChain 及びビルドスクリプトを変更
2. CpuInfoにisSupportDevice関数を追加
3. 外部からPlayer IDを設定する場合、重複再生遮断ができない問題を修正
4. OMXCodecにて、連続でSeekするとき落ちる問題を修正
5. Seekする際に次の区間まで字幕が表示されない問題を修正
6. onPrepared以降に字幕が出るように修正
----------------------------------------------------------------------------------------
2019.12.10
1. LMS データに置換子 TIMEMAP_DATA 追加
2. エミュレータチェックロジックを変更
----------------------------------------------------------------------------------------
2019.11.13
1. SW コーデックにて、まれに落ちる問題を修正
2. DRM Callback/Play Callback 動的因子追加で以下の項目を修正
. KollusStorage
既存 : public int load(String path, KollusContent content);
修正 : public int load(String path, String extraDrmParam, KollusContent content);
. MediaPlayer
既存
public void setDataSourceByUrl(String path);
public void setDataSourceByKey(String mediaContentKey);
修正
public void setDataSourceByUrl(String path, String extraDrmParam);
public void setDataSourceByKey(String mediaContentKey, String extraDrmParam);
3. ブックマーク追加した際にラベルも取得できるように修正
MediaPlayer
既存 : public void updateKollusBookmark(int position);
修正 : public void updateKollusBookmark(int position, String label);
4. Mpeg Dash ABR 追加