まず、videoview を使用して、Samsung galaxt S2 で mp4 形式の hls ビデオを再生する小さなアプリを作成しました。次に、同じ videoview または mediaplayer android を使用して hls ビデオを再生するためのより大きなアプリを作成しました。ビデオを再生すると、SD と HD の品質でビデオが遅れました。
小さなアプリでは、URL を格納するための文字列配列があります。私のアプリでは、ユーザーが URL を選択し、ボタンを押してアクティビティをスローし、videoview を使用してビデオを再生することができます: 小さなアプリで videoview を使用するコード:
VideoView vd = (VideoView)findViewById(R.id.videoView1);
MediaController mc = new MediaController(this);
mc.setAnchorView(vd);
Uri uri = Uri.parse(URL_link);
vd.setMediaController(mc);
vd.setVideoURI(uri);
vd.start();
大きなアプリでは、listfragment を使用してすべての URL を表示します。ユーザーは URL を選択し、videoview を使用してビデオを再生するアクティビティをスローします。アクティビティのコード:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_channel_detail);
TextView tv = (TextView) findViewById(R.id.tvVideoPlayer);
Bundle extras = getIntent().getExtras();
if (extras != null) {
channel_id = extras.getInt(ChannelDetailActivity.CHANNEL_ID);
}
tv.setText("Video is playing...");
}
@Override
protected void onStart() {
super.onStart();
getChannelInfo();
}
private void getChannelInfo( ) {
TimeTVApiCaller.getInstance().getChannel(channel_id, this,
new AjaxCallback<ChannelInfo>() {
@Override
public void callback(String url, ChannelInfo object,
AjaxStatus status) {
if (object != null) {
Urlvideo = object.getChannelUrls().get(0).getPath();
getURLfull(Urlvideo);
}
}
});
}
//get a full URL
protected void getURLfull(String url)
{
TimeTVApiCaller.getInstance().getChannelStream(url, this, new AjaxCallback<String>()
{
@Override
public void callback(String url, String object,
AjaxStatus status) {
String Urlfull = object.replace("\"", "");
Urltoken = Urlfull;
//Using the same videoview
VideoView vd = (VideoView) findViewById(R.id.videoView1);
MediaController mc = new MediaController(ChannelDetailActivity.this);
mc.setAnchorView(vd);
Uri uri = Uri.parse(Urltoken);
vd.setMediaController(mc);
vd.setVideoURI(uri);
vd.start();
//vd.requestFocus();
}
});
}
}
2 つの質問があります。
videoview または mediaplayer play hls video が遅れるのはなぜですか?
videoview または mediaplayer をカスタマイズして hls ビデオをスムーズに再生するにはどうすればよいですか?