Android videoView播放网络视频,求大神能给我一个demo,告诉我做也行~~~~(>_<)~~~~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android videoView播放网络视频,求大神能给我一个demo,告诉我做也行~~~~(>_<)~~~~相关的知识,希望对你有一定的参考价值。

参考技术A

我这有个播放本地视频的demo,其实播放网络视频一样的

只要你把那个输入流inputStream改成网络response.getInputString()的输入流就行了


追问

有没有那种已经实现的,像优酷一样的,可以暂停,全屏等

追答

那个没有,自己改吧,改动很大的,你出多少$?

本回答被提问者采纳

Android videoview控件不显示视频,只播放音频

【中文标题】Android videoview控件不显示视频,只播放音频【英文标题】:Android videoview control is not displaying video, only audio is played 【发布时间】:2012-12-13 16:24:25 【问题描述】:

我正在尝试从 android 中的 url 播放视频,为此我在片段类中使用 videoview 控件,但是在播放时没有视频输出,只有音频输出,视频为 .mp4 格式。我是通过以下方式完成的-

  VideoView vv;
  vv=(VideoView)view.findViewById(R.id.videoView1);
  String src="video path";
  Uri uri=Uri.parse(src);   
  getActivity().getWindow().setFormat(PixelFormat.TRANSLUCENT);     
  MediaController mc=new MediaController(getActivity());
  mc.setMediaPlayer(vv);
  vv.setMediaController(mc);
  vv.setVideoURI(uri);
  vv.requestFocus();
  vv.start();

这是我的 xml 代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:background="#303040" >

    <RelativeLayout
        android:layout_
        android:layout_ >

        <TextView
            android:id="@+id/headLine"
            android:layout_
            android:layout_
            android:layout_marginLeft="100dp"
            android:layout_marginTop="5dp"
            android:textColor="#AFDEFE"
            android:textSize="14sp"
            android:textStyle="italic"
            android:typeface="serif" />

        <com.facebook.widget.ProfilePictureView
            android:id="@+id/fbPic"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="20dp" >
        </com.facebook.widget.ProfilePictureView>
    </RelativeLayout>

    <com.facebook.widget.LoginButton
            android:id="@+id/loginButton"
            android:layout_
            android:layout_
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="30dp" />

    <Button
        android:id="@+id/settingsButton"
        android:layout_
        android:layout_
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="32dp"
        android:text="Play" />

    <VideoView
        android:id="@+id/videoView1"
        android:layout_
        android:layout_
        android:layout_marginLeft="60dp"
        android:layout_marginTop="10dp"
        android:keepScreenOn="true" />

</LinearLayout>

【问题讨论】:

您是否设置了正确的源路径? 是的,我的源路径是正确的,这就是音频输出存在的原因!! 您是在设备还是模拟器上进行测试?如果是设备,是四核吗? 我正在模拟器上测试它。 同时发布您的布局 xml 代码 【参考方案1】:

只添加一行

vv.setZOrderOnTop(true);

【讨论】:

【参考方案2】:

在这里尝试我的代码,我建议您使用以下代码,其中我正在成功运行我的应用程序

代码如下:

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="#f0f0f0" >

    <Button
        android:id="@+id/btnVideoGallery"
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:text="@string/gallery" />

    <Button
        android:id="@+id/btnCancel"
        android:layout_
        android:layout_
        android:layout_below="@+id/btnVideoGallery"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="22dp"
        android:text="@string/cancel" />

    <TextView
        android:id="@+id/lblDisplayImage"
        android:layout_
        android:layout_
        android:layout_below="@+id/btnCancel"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:text="@string/below_this_text_video_will_be_displayed"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000"
        android:textSize="13dp" />

    <VideoView
        android:id="@+id/vvDisplayVideo"
        android:layout_
        android:layout_
        android:layout_below="@+id/lblDisplayImage"
        android:layout_marginTop="15dp" />

</RelativeLayout>

Java 文件:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.VideoView;

public class VideoActivity extends Activity 

    private Button btnVideoGallery,btnCancel;
    private VideoView vvDisplayVideo;
    /** The Constant PICK_VIDEO. */
    private static final int PICK_VIDEO=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_options);

        btnVideoGallery=(Button)findViewById(R.id.btnVideoGallery);
        vvDisplayVideo=(VideoView)findViewById(R.id.vvDisplayVideo);
        btnCancel=(Button)findViewById(R.id.btnCancel);
        vvDisplayVideo.setVisibility(View.GONE);

        btnVideoGallery.setOnClickListener(new OnClickListener() 

            public void onClick(View v) 

                Intent video=new Intent();
                video.setAction(Intent.ACTION_PICK);
                video.setType("video/*");
                startActivityForResult(video, PICK_VIDEO);

            
        );

        btnCancel.setOnClickListener(new OnClickListener() 

            public void onClick(View v) 

                Intent goStartUp=new Intent(VideoActivity.this, StartUpActivity.class);
                goStartUp.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(goStartUp);
                finish();
            
        );
    

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        // TODO Auto-generated method stub
        if (resultCode==Activity.RESULT_OK && requestCode == PICK_VIDEO) 

            vvDisplayVideo.setVisibility(View.VISIBLE);
            vvDisplayVideo.setVideoURI(data.getData());
            vvDisplayVideo.setFocusable(true);
            MediaController mc=new MediaController(this);
            vvDisplayVideo.setMediaController(mc);
            Log.i("True", "Executed");
        
    

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
        // TODO Auto-generated method stub

        Intent goStartUp=new Intent(VideoActivity.this, StartUpActivity.class);
        goStartUp.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(goStartUp);
        finish();
        return super.onKeyDown(keyCode, event);
    

您也可以根据自己的用途修改清单文件:

<manifest ...>
    <uses-sdk .../>
    <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.RECORD_VIDEO" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

        <uses-feature
            android:name="android.hardware.camera"
            android:required="false" />

    <application ...>
    </application>

</manifest>

【讨论】:

您好,感谢您的解决方案,但再次没有显示视频,只有音频。 我是在一个片段上做的,希望不会有什么不同? 我也觉得应该没什么区别 嗨@slAcker 它对你有用吗?我问你是因为如果你正在解决你的问题,请接受它,因为其他人也会知道这个链接是一个有用的链接,如果你是仍然没有得到解决方案,请使用 Activity 尝试我的代码。它肯定会对您有所帮助。我真的希望这对您有用。 嗨,hardik,不,这对我不起作用我正在考虑创建一个专门的活动来播放视频,而不是将其添加到已经拥挤的活动中。

以上是关于Android videoView播放网络视频,求大神能给我一个demo,告诉我做也行~~~~(>_<)~~~~的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用VideoView实现简单视频播放

无法在android的videoview中播放来自url的视频如何在videoview中播放来自URL的视频?

使用VideoView播放视频

Android开发之使用VideoView播放视频

无法让 Vitamio VideoView 播放普通 Android VideoView 会播放的视频文件

Android - VideoView 不会播放有声视频