gpt4 book ai didi

android - 一个一个播放视频 issue : Android SDK

转载 作者:行者123 更新时间:2023-11-30 04:41:34 25 4
gpt4 key购买 nike

我有一个要求,我想在第一个视频完成后立即播放第二个视频。我已经实现了这个功能,但我看到的问题是视频转换之间出现黑屏。我在 Galaxy S 设备(1 GHZ 处理器,512 MB RAM)上尝试这个。

我用过VideoView、SurfaceView,问题还是没有解决。看起来视频准备很花时间。我使用了推荐的视频格式(比特率约为 500 的 H264 编码视频)。考虑到设备 Galaxy S 1 GHZ 处理器,应该不会发生此问题。

任何相关的指针将不胜感激。

谢谢!尼勒什

代码如下:

这是代码。我有两个视频:video1 和 video2。首先播放后,我正在加载 Video2。这里我使用的是videoview

package com.activity;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.VideoView;

public class FirstActivity extends Activity implements OnCompletionListener
{
/** Called when the activity is first created. */
VideoView video;
Toast toast;
boolean first;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(0, 0);
setContentView(R.layout.main);
video = (VideoView) findViewById(R.id.videoView1);
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/"
+ R.raw.video1);
video.setOnCompletionListener(this);
video.setVideoURI(uri);
video.start();
first=true;
}

public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
if(first){
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/"
+ R.raw.video1);
video.setOnCompletionListener(this);
video.setVideoURI(uri);
video.start();
first=false;
}
else{
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/"
+ R.raw.video2);
video.setOnCompletionListener(this);
video.setVideoURI(uri);
video.start();
first=true;
}
}

public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
ImageView image = new ImageView(this);
image.setBackgroundColor(Color.WHITE);
image.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
toast = new Toast(getApplicationContext());
toast.setView(image);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
return true;
}
}

最佳答案

有什么理由不能在编辑器中将两个视频拼接成一个视频吗?它们必须是单独的文件吗?

此外,您是否尝试过使用多个 VideoView?现在,当 video1 完成时,您告诉 VideoView 从可能需要一些时间的资源中加载 video2。如果您在 Activity 中有两个 VideoView(一个用于 video1,一个用于 video2)并在 onCreate 期间加载它们,您可以隐藏当前未播放的那个。在“onCompletion”中,您无需加载 video2,只需隐藏 video1 的 VideoView 并使 video2 的 VideoView 可见并开始播放。

像这样(未测试):

public class FirstActivity extends Activity implements OnCompletionListener
{
/** Called when the activity is first created. */
VideoView video1;
VideoView video2;
Toast toast;
boolean first;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(0, 0);
setContentView(R.layout.main);

video2 = (VideoView) findViewById(R.id.videoView1);
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/"
+ R.raw.video2);
video2.setOnCompletionListener(this);
video2.setVideoURI(uri);
video2.setVisibility(HIDDEN);

video1 = (VideoView) findViewById(R.id.videoView1);
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/"
+ R.raw.video1);
video1.setOnCompletionListener(this);
video1.setVideoURI(uri);
video1.start();

first=true;
}

public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
if(first){
video2.setVisibility(HIDDEN);
video1.setVisibility(VISIBLE);
video1.start();
first=false;
}
else{
video1.setVisibility(HIDDEN);
video2.setVisibility(VISIBLE);
video2.start();
first=true;
}
}
}

关于android - 一个一个播放视频 issue : Android SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5893785/

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