我正在尝试播放 DASH 视频流,我正在使用 Pallycon 服务来管理密钥。以下代码在drmSessionManager
设置为ExoPlayerFactory.newSimpleInstance
( deprecated
) 实例时工作正常,但是当我drmSessionManager
为媒体源单独设置时,播放器显示空白屏幕。并且在 logcat 中没有显示任何错误。
public class MainActivity extends AppCompatActivity {
private PallyconEventListener pallyconEventListener = new PallyconEventListener() {
@Override
public void onDrmKeysLoaded(Map<String, String> map) {
}
@Override
public void onDrmSessionManagerError(Exception e) {
}
@Override
public void onDrmKeysRestored() {
}
@Override
public void onDrmKeysRemoved() {
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PlayerView playerView = findViewById(R.id.player_view);
String siteId = "XXXX";
String siteKey = "XXXX";
PallyconWVMSDK WVMAgent = null;
try {
WVMAgent = PallyconWVMSDKFactory.getInstance(this);
WVMAgent.init(this, null, siteId, siteKey);
WVMAgent.setPallyconEventListener(pallyconEventListener);
} catch (PallyconDrmException e) {
e.printStackTrace();
} catch (UnAuthorizedDeviceException e) {
e.printStackTrace();
}
// TODO : 2.set content information
UUID drmSchemeUuid = UUID.fromString((C.WIDEVINE_UUID).toString());
Uri uri = Uri.parse("http://www.example.com/index.mpd");
String drmLicenseUrl = "http://license.pallycon.com/ri/licenseManager.do";
String cid = "COOL";
String userId = "lpa";
String ptoken = "";
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null;
try {
drmSessionManager = Objects.requireNonNull(WVMAgent).createDrmSessionManagerByToken(drmSchemeUuid, drmLicenseUrl, uri, userId, cid, ptoken, false);
} catch (PallyconDrmException e) {
e.printStackTrace();
}
DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory("cool");
SimpleExoPlayer exoPlayer = new SimpleExoPlayer.Builder(this, new DefaultRenderersFactory(this)).setTrackSelector(new DefaultTrackSelector(this)).build();
playerView.setPlayer(exoPlayer);
MediaSource mediaSource2 = new DashMediaSource.Factory(dataSourceFactory).setDrmSessionManager(drmSessionManager).createMediaSource(uri);
exoPlayer.prepare(mediaSource2);
exoPlayer.setPlayWhenReady(true);
}
}