逐一播放视频问题:Android SDK

逐一播放视频问题:Android SDK,android,Android,我有一个要求,我想在第一个视频完成后立即播放第二个视频。我已经实现了这个功能,但我看到的问题是在视频转换之间出现黑屏。我正在Galaxy S设备(1GHz处理器,512MB内存)上尝试此功能 我使用了VideoView、SurfaceView,但问题仍未解决。视频准备似乎需要时间。我使用了推荐的视频格式(H264编码视频,约500比特率)。考虑到设备Galaxy S 1 GHZ处理器,不应出现此问题 任何相关的指针将不胜感激 谢谢! 尼利斯 代码如下: 这是代码。我有两个视频:视频1和视频2。在

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

我使用了VideoView、SurfaceView,但问题仍未解决。视频准备似乎需要时间。我使用了推荐的视频格式(H264编码视频,约500比特率)。考虑到设备Galaxy S 1 GHZ处理器,不应出现此问题

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

谢谢! 尼利斯

代码如下:

这是代码。我有两个视频:视频1和视频2。在第一次播放之后,我正在加载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;
    }
}

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

另外,您是否尝试过使用多个视频视图?现在,当video1完成时,您告诉您的VideoView从资源中加载video2,这可能需要一些时间。如果在活动中有两个视频视图(一个用于video1,一个用于video2),并在onCreate期间加载了这两个视图,则可以隐藏当前未播放的视图。在“onCompletion”中,不加载video2,只需隐藏video1的VideoView,使video2的VideoView可见并开始播放

类似于此(未经测试):


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

另外,您是否尝试过使用多个视频视图?现在,当video1完成时,您告诉您的VideoView从资源中加载video2,这可能需要一些时间。如果在活动中有两个视频视图(一个用于video1,一个用于video2),并在onCreate期间加载了这两个视图,则可以隐藏当前未播放的视图。在“onCompletion”中,不加载video2,只需隐藏video1的VideoView,使video2的VideoView可见并开始播放

类似于此(未经测试):


你能把你用的代码贴出来吗?这可能会给我们一个问题的提示。第一个和第二个视频之间的延迟有多长?我也遇到了这个限制,使用内置VideoView或surfaceView无法解决这个问题。尝试使用一些基于C或C++的视频播放器,并使用NDK将它们集成。Delay大约是第二个,但是在视频转换之间是很明显的。嗨,Mudit,你有没有提到Android上使用的C/C++视频播放器库?你能发布你使用的代码吗?这可能会给我们一个问题的提示。第一个和第二个视频之间的延迟有多长?我也遇到了这个限制,使用内置VideoView或surfaceView无法解决这个问题。尝试使用一些基于C或C++的视频播放器,并使用NDK将它们集成。Delay大约是第二个,但是在视频转换之间是很明显的。嗨,Mudit,你有没有提到Android上使用的C/C++视频播放器库?我已经尝试过了,就是使用两个视频视图。这对我不起作用。我不能使用合并视频的方法,因为我的应用程序可能包含15个以上的视频,并且从应用程序可扩展性的角度来看,我需要单独的视频。您好,Nilesh,您是否实现了黑屏问题解决方案?你找到解决方案了吗?我已经试过了,即使用两个视频视图。这对我不起作用。我不能使用合并视频的方法,因为我的应用程序可能包含15个以上的视频,并且从应用程序可扩展性的角度来看,我需要单独的视频。您好,Nilesh,您是否实现了黑屏问题解决方案?你找到解决办法了吗?
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;
        }
    }
}