こんにちは、widevine drm 保護を使用してダッシュ ストリームを再生できるアプリケーションを開発しています。私は exoplayer のサンプルを読みましたが、私の必要性は異なります。私は自分の Web サイトで、ダッシュ URL をクリックすると、exoplayer でストリームの再生が開始されます。exoplayer アクティビティを開くための最初の部分は成功しましたが、exoplayer で drm 保護されたストリームを実行する方法がわかりません。
ストリームと DRM ライセンスの URL を知っています。
私が取り組んでいる簡単なコードを以下に添付します。drmsessionmanager などの追加コードを教えてください。ストリームを実行するには
これは、drmなしでmpdのみをサポートする私のコードです:
public class exoplayer2 extends AppCompatActivity { // Variables
private static final String VIDEO_URI = "http://url.mpd";
private SimpleExoPlayer player;
private SimpleExoPlayerView simpleExoPlayerView;
private Handler mainHandler;
private TrackSelection.Factory videoTrackSelectionFactory;
private TrackSelector trackSelector;
private LoadControl loadControl;
private DataSource.Factory dataSourceFactory;
private MediaSource videoSource;
private Uri uri;
private String userAgent;
private static final DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
// Activity onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_exoplayer);
simpleExoPlayerView = (SimpleExoPlayerView)findViewById(R.id.player_view);
userAgent = Util.getUserAgent(this,"SimpleDashExoPlayer");
createPlayer();
attachPlayerView();
preparePlayer();
}
// Create TrackSelection Factory, Track Selector, Handler, Load Control, and ExoPlayer Instance
public void createPlayer(){
mainHandler = new Handler();
videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
loadControl = new DefaultLoadControl();
player = ExoPlayerFactory.newSimpleInstance(this,trackSelector,loadControl);
}
// Set player to SimpleExoPlayerView
public void attachPlayerView(){
simpleExoPlayerView.setPlayer(player);
}
// Build Data Source Factory, Dash Media Source, and Prepare player using videoSource
public void preparePlayer(){
uriParse();
dataSourceFactory = buildDataSourceFactory(bandwidthMeter);
videoSource = new DashMediaSource(uri,buildDataSourceFactory(null),new DefaultDashChunkSource.Factory(dataSourceFactory),mainHandler,null);
player.prepare(videoSource);
}
// Parse VIDEO_URI and Save at uri variable
public void uriParse(){
uri = Uri.parse(VIDEO_URI);
}
// Build Data Source Factory using DefaultBandwidthMeter and HttpDataSource.Factory
private DataSource.Factory buildDataSourceFactory(DefaultBandwidthMeter bandwidthMeter){
return new DefaultDataSourceFactory(this, bandwidthMeter, buildHttpDataSourceFactory(bandwidthMeter));
}
// Build Http Data Source Factory using DefaultBandwidthMeter
private HttpDataSource.Factory buildHttpDataSourceFactory(DefaultBandwidthMeter bandwidthMeter){
return new DefaultHttpDataSourceFactory(userAgent, bandwidthMeter);
}
// Activity onStop, player must be release because of memory saving
@Override
public void onStop(){
super.onStop();
player.release();
}
}
}