gpt4 book ai didi

java - 使用Videoview或mediaplayer播放http直播流视频是LAG

转载 作者:行者123 更新时间:2023-11-29 08:57:44 27 4
gpt4 key购买 nike

首先,我使用 videoview 构建了一个小应用程序,用于在三星 galaxt S2 上播放 mp4 格式的 hls 视频。标清质量的视频很流畅。但是高清质量的视频有点滞后。然后,我构建了一个更大的应用程序来使用相同的 videoview 或 mediaplayer android 播放 hls 视频。当我播放视频时,SD 和 HD 质量的视频滞后。

在小型应用程序中,我有一个字符串数组来存储 URL。我的应用程序允许用户选择一个 URL 并按下一个按钮来抛出一个使用 videoview 播放视频的 Activity :在小应用程序中使用 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 来显示所有 URls。用户选择一个 URL,然后抛出一个 Activity 来使用 videoview 播放视频。 Activity 中的代码:

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

我有两个问题:

  1. 为什么 videoview 或 mediaplayer 播放 hls 视频有延迟?

  2. 如何自定义videoview或mediaplayer来流畅播放hls视频?

最佳答案

HLS 中的每个段又名 HTTP Live Streaming通常为 10 秒。

播放器会测量获取每个 fragment 所需的时间,如果花费的时间太长,它会在播放前尝试选择一个可以获取 fragment 或更多 fragment 的带宽。最常见的错误是缓冲延迟。您应该查看日志文件以了解播放器在播放内容时正在做什么。

如果以上没有帮助,this可能有帮助。

关于java - 使用Videoview或mediaplayer播放http直播流视频是LAG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19335499/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com