标签: android-videoview

ScrollView中的Android :: VideoView

我有一个在scrollView中的VideoView.当我滚动scrollView时,VideoView不会滚动它.这就像它的位置是固定的.如何通过滚动scrollView中的所有其他元素正确滚动VideoView?

video android scroll scrollview android-videoview

13
推荐指数
2
解决办法
9283
查看次数

在VideoView启动之前Android加载动画

在VideoView开始播放之前,我找不到任何显示加载动画(或只是一个imageView)的解决方案:在视频缓冲期间.

有人有线索吗 ?

谢谢.

android android-videoview

13
推荐指数
3
解决办法
2万
查看次数

VideoView可以在不停止流的情况下分离和重新连接吗?

我正在构建一个应用程序,用户点击按钮以全屏显示视频.最初,视频附加到ViewPager内的视图.为了能够全屏显示,我将其与父项分离,并将其重新连接到根视图.这种方法很好,除非在播放时将视频切换为全屏.当我分离播放VideoView时,它只是停止,我需要重新启动它.这是不可接受的,因为视频在恢复之前开始缓冲.这里是完成分离的代码部分:

    final ViewGroup parent = (ViewGroup) findViewById(R.id.parent);

    final ViewGroup root = (ViewGroup) findViewById(R.id.root);

    Button b = (Button) findViewById(R.id.button);
    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            parent.removeView(mVideoView);

            LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            root.addView(mVideoView, lp);
        }
    });
Run Code Online (Sandbox Code Playgroud)

根据设备,我有一个不同的日志错误.可能是因为实际的视频播放器是由制造商提供的,而不是Android SDK.以下是Nexus 7的错误日志:

10-30 20:26:18.618: D/NvOsDebugPrintf(124): NvMMDecTVMRDestroyParser Begin 
10-30 20:26:18.618: D/NvOsDebugPrintf(124): --------- Closing TVMR Frame Delivery Thread -------------
10-30 20:26:18.678: D/NvOsDebugPrintf(124): ------- NvAvpClose -------
10-30 20:26:18.678: D/NvOsDebugPrintf(124): NvMMDecTVMRDestroyParser Done 
10-30 20:26:18.678: D/NvOsDebugPrintf(124): NvMMLiteTVMRDecPrivateClose Done 
Run Code Online (Sandbox Code Playgroud)

我无法在不停止的情况下分离视频.我尝试使用SurfaceView或TextureView但没有成功.

我也尝试过寻找第三方视频播放器.我发现了一个商业原因(http://www.vitamio.org/),我出于商业原因无法真正使用它.我找到了一个开源的,去年没有更新过(https://code.google.com/p/dolphin-player/).

我目前只在平板电脑上定位Android 4.2或更高版本. …

android ffmpeg vitamio android-videoview

13
推荐指数
1
解决办法
5921
查看次数

为什么Android中的VideoView花费太多时间从http链接加载和播放视频?

以下是我的代码:

  package com.example.videoplayer;
  import android.app.Activity;
  import android.app.ProgressDialog;
  import android.media.MediaPlayer;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.Menu;
  import android.widget.MediaController;
  import android.widget.VideoView;

public class VideoPlayerActivity extends Activity {
    String TAG = "com.example.VideoPlayer";
    ProgressDialog progDailog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_player);

        final VideoView videoView = (VideoView) findViewById(R.id.videoView1);
        videoView.setVideoPath("http://www.ebookfrenzy.com/android_book/movie.mp4");

        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(videoView);
        videoView.setMediaController(mediaController);

        videoView.setOnPreparedListener(new 
                MediaPlayer.OnPreparedListener()  {
            @Override
            public void onPrepared(MediaPlayer mp) {
                progDailog.dismiss();
                Log.i(TAG, "Duration = " + videoView.getDuration());
            }
        });

        videoView.start();
        progDailog = ProgressDialog.show(this, "Please wait ...", "Retrieving data …
Run Code Online (Sandbox Code Playgroud)

android video-streaming android-videoview

13
推荐指数
1
解决办法
4087
查看次数

Android VideoView如何缩放为ImageView缩放类型fitXY?

我在RelativeLayout中放了一个ImageView和一个VideoView.可以缩放ImageView以填充整个布局scaleType="fitXY".但是,VideoView没有类似的缩放属性.顺便说一下,我按设置隐藏视频控件setMediaController(null),只显示视频内容.是否可以在不保持纵横比的情况下缩放VideoView?这是布局示例.

<RelativeLayout
    android:layout_width="280dp"
    android:layout_height="200dp">

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/image"
        android:scaleType="fitXY" />

    <VideoView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/video"
        android:visibility="invisible"
        android:layout_centerInParent="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

android scale android-videoview

13
推荐指数
1
解决办法
1万
查看次数

播放视频时禁用Android的VideoView requestAudioFocus?

我正在构建一个记录和播放视频的应用程序.我想在不影响背景音乐播放的情况下这样做,即如果我开始播放视频,我不想暂停其他应用的音频.但是,在Lollipop上,Android的VideoView类会在VideoView.openVideo()调用私有方法时自动请求音频焦点:

AudioManager am = (AudioManager) super.getSystemService(name);
am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
Run Code Online (Sandbox Code Playgroud)

有关如何绕过这个的任何建议?

android audio-player android-videoview

13
推荐指数
2
解决办法
3972
查看次数

MediaController定位

我正在使用VideoView显示播放本地mp4,我也使用MediaController.媒体控制栏未显示在我的视频剪辑下方,而是显示在屏幕中间.我使用setAnchorView将它附加到我的videoView,但没有任何影响.我如何定位我的mediacontroller直接在我的视频下?

public class VideoDemo extends Activity {
private VideoView video;
private MediaController ctlr;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    getWindow().setFormat(PixelFormat.TRANSLUCENT);
    setContentView(R.layout.main);

    File clip=new File(Environment.getExternalStorageDirectory(),
                                         "test.mp4");

    if (clip.exists()) {
        video=(VideoView)findViewById(R.id.video);
        video.setVideoPath(clip.getAbsolutePath());

        ctlr=new MediaController(this, false);
        ctlr.setAnchorView(video);
        ctlr.setMediaPlayer(video);
        video.setMediaController(ctlr);
        video.requestFocus();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我的布局是

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="400dp"
    android:layout_height="400dp"
    android:background="#fff"
    >
<VideoView 
     android:id="@+id/video" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android mediacontroller android-videoview

12
推荐指数
1
解决办法
5031
查看次数

检测视频何时停止播放

我有这个代码用于播放视频 VideoView

myVideoView = (VideoView) findViewById(R.id.VideoView);
myVideoView.setVideoURI(Uri.parse(path));
myVideoView.requestFocus();
myVideoView.start();
Run Code Online (Sandbox Code Playgroud)

当视频播放完毕后,我收到消息:"抱歉,此视频无法播放".我想缓存视频播放完毕的那一刻.我怎样才能做到这一点?

这是我的代码:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.video);

        Bundle extras = getIntent().getExtras();
        path = extras.getString("path");
        idPlaylist = extras.getString("idPlaylist");
        timer = extras.getString("timer");

        myVideoView = (VideoView) findViewById(R.id.VideoView);
        myVideoView.setVideoURI(Uri.parse(path));
        myVideoView.requestFocus();
        myVideoView.start();

        myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                Intent i = new Intent(getBaseContext(),
                        com.PlayerOrange.ViewPlaylist.class);
                i.putExtra("id", idPlaylist);
                i.putExtra("timer", timer);
                startActivity(i);
                finish();           
                }
          });

    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        System.out.println("Playing "+myVideoView.isPlaying());
        if ((keyCode == KeyEvent.KEYCODE_BACK) && (myVideoView.isPlaying()==true)) {
                //nothing …
Run Code Online (Sandbox Code Playgroud)

android android-videoview

12
推荐指数
1
解决办法
1万
查看次数

流式传输到VideoView只能在使用三星手机时在Wifi上播放

我使用以下库将YouTube视频流式传输到Android应用程序.

http://code.google.com/p/android-youtube-player/source/browse/trunk/OpenYouTubeActivity/src/com/keyes/youtube/OpenYouTubePlayerActivity.java?r=3

我成功地通过3G和Wifi在HTC和摩托罗拉手机上播放视频.但是,在三星Galaxy(Epic 4G)和三星Galaxy II手机上,我只能使用Wifi播放.3G给了我这个错误:"无法播放视频.抱歉,此视频无法播放."

我尝试过强制低质量的YouTube流媒体,但这并没有帮助.我在日志中看到Start()两种情况都被调用(3G/Wifi).这是VideoView的问题吗?有解决方法吗?

编辑2

这些视频来自YouTube API.我尝试使用嵌入式和普通流,以及可用的最低质量流(每个视频不同).此外,我不认为这是一个编码问题,因为相同的视频使用Wifi正确播放.

编辑1

无论使用Wifi还是不使用3G,我都会收到以下输出.

01-30 15:22:38.305: E/MediaPlayer(3831): error (1, -1)
01-30 15:22:38.305: E/MediaPlayer(3831): callback application
01-30 15:22:38.305: E/MediaPlayer(3831): back from callback
01-30 15:22:38.309: E/MediaPlayer(3831): Error (1,-1)
Run Code Online (Sandbox Code Playgroud)

根据这个链接,这些错误意味着以下(我认为):

/*
 Definition of first error event in range (not an actual error code).
 */
const PVMFStatus PVMFErrFirst = (-1);
/*
 Return code for general failure
 */
const PVMFStatus PVMFFailure = (-1);
/*

/*
 Return code for general success
 */
const PVMFStatus PVMFSuccess …
Run Code Online (Sandbox Code Playgroud)

streaming android android-videoview

12
推荐指数
1
解决办法
4997
查看次数

拉伸以填充VideoView,VideoView的宽高比

我尝试拉伸视频以填充视频.目标是创建在设备中看起来像第一张照片的视图(就像它在布局预览中看起来一样).

这个问题的大多数答案都是指这个链接.

我尝试了这个,但我仍然没有填写视频视图.

这是我的布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="@drawable/search_gren_screen">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/go_back"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:onClick="onclick"
            android:text="Try again" />

        <Button
            android:id="@+id/back_to_pick_song"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="Select another song" 
            android:onClick="onclick" />

        <Button
            android:id="@+id/btn_continue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:onClick="onclick"
            android:text="Amazing, continue!" />
    </LinearLayout>

    <FrameLayout 
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
    <VideoView 
        android:id="@+id/videoView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_gravity="center" />
    </FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

在这里,您可以预览我声明的布局:

在此输入图像描述

但是,设备上的结果是不同的:

在此输入图像描述

android aspect-ratio android-videoview

12
推荐指数
2
解决办法
3万
查看次数