视屏播放器,两种不同的方法

     利用不同的技术实现视屏播放器

第一种结果如下:

这里写图片描述

实现步骤:
    第一步在activity_main.xml文件中写布局
        <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
    android:layout_width="match_parent" android:layout_height="match_parent"
    tools:context="com.example.android_27.MainActivity"
    android:orientation="vertical"
    >
        <SurfaceView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/sv_sp"
            />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <SeekBar
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/sb_projerss"/>
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/ic_media_play"
            android:onClick="bf"
            />
    </LinearLayout>
</RelativeLayout>

第二步:MainActivity类代码

    public class MainActivity extends AppCompatActivity {


    private SeekBar sb_projerss;
    private MediaPlayer mediaPlayer;
    private SurfaceView sv_sp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取SeekBar的ID
        sb_projerss =(SeekBar)findViewById(R.id.sb_projerss);
        sv_sp =(SurfaceView)findViewById(R.id.sv_sp);
        //设置监听
        sb_projerss.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress=seekBar.getProgress();
                //在当前位置播放
                mediaPlayer.seekTo(progress);
            }
        });

    }
    public void bf(View view){
        //获得ImageButton
        final ImageButton imageButton= (ImageButton) view;
        if(mediaPlayer==null){
            //播放内存卡中的文件
            mediaPlayer=new MediaPlayer();
            //设置音源
            try {
                mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/movies/sister.mp4"));
                mediaPlayer.prepare();

            } catch (IOException e) {
                e.printStackTrace();

            }
            //将画面展示到SurfaceView中
            mediaPlayer.setDisplay(sv_sp.getHolder());

            mediaPlayer.start();
            imageButton.setImageResource(android.R.drawable.ic_media_pause);

            //获取音乐总时间
            int duration=mediaPlayer.getDuration();
            //i
            sb_projerss.setMax(duration);
            new MyThread().start();
        }else if(mediaPlayer.isPlaying()){
            mediaPlayer.pause();
            imageButton.setImageResource(android.R.drawable.ic_media_play);
        }else{
            mediaPlayer.start();
            imageButton.setImageResource(android.R.drawable.ic_media_pause);
        }

    }

    class MyThread extends Thread{
        @Override
        public void run() {
            super.run();
            while(sb_projerss.getProgress()<=sb_projerss.getMax()){
                //获取音乐当前播放的位置
                int position=mediaPlayer.getCurrentPosition();
                //放入SeekBar中
                sb_projerss.setProgress(position);

            }
        }
    }

在AndroidManifest.xml中写权限

  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

第二种:利用VideoView显示和MediaController媒体控制器
结果如下图:

这里写图片描述
第一步:activity_videoview.xml布局文件

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_videoview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.android_27.VideoviewActivity">
<VideoView
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:id="@+id/vv_vodio"
    />
</LinearLayout>

第二步:VideoviewActivity类

public class VideoviewActivity extends AppCompatActivity {

    private VideoView vv_vodio;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_videoview);
        //获得VideoView的ID
        vv_vodio =(VideoView)findViewById(R.id.vv_vodio);
        //设置播放视频的来源
        vv_vodio.setVideoPath("file://mnt/sdcard/movies/sister.mp4");
        //实例化媒体控制器
        MediaController mediaController=new MediaController(this);

        mediaController.setMediaPlayer(vv_vodio);
        vv_vodio.setMediaController(mediaController);

    }
}
<html><title>ERROR代码测试</title><body> <SCRIPT language=JavaScript> //ServerName NetShowServer = "" ; //Path //var mPath = NetShowServer + "/entercp/mnet/"; var mPath = NetShowServer + ""; var bgImage = "bg.gif"; var iName = bgImage; function LoadVideo(c1,c2) { if (c1=="") return; video_filename = c1; MusicPlayer.Cancel() timer=window.setTimeout("video_play()",2000) } function video_play(fn) { var mName = mPath + video_filename; MusicPlayer.Open(mName) } </SCRIPT> <object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" height="255" id="MusicPlayer" style="LEFT: 0px; TOP: 0px" width="275"> <param name="AudioStream" value="-1"> <param name="AutoSize" value="0"> <param name="AutoStart" value="-1"> <param name="AnimationAtStart" value="-1"> <param name="AllowScan" value="-1"> <param name="AllowChangeDisplaySize" value="-1"> <param name="AutoRewind" value="-1"> <param name="Balance" value="0"> <param name="BaseURL" value> <param name="BufferingTime" value="5"> <param name="CaptioningID" value> <param name="ClickToPlay" value="-1"> <param name="CursorType" value="0"> <param name="CurrentPosition" value="-1"> <param name="CurrentMarker" value="0"> <param name="DefaultFrame" value> <param name="DisplayBackColor" value="0"> <param name="DisplayForeColor" value="16777215"> <param name="DisplayMode" value="0"> <param name="DisplaySize" value="2"> <param name="Enabled" value="-1"> <param name="EnableContextMenu" value="-1"> <param name="EnablePositionControls" value="-1"> <param name="EnableFullScreenControls" value="0"> <param name="EnableTracker" value="-1"> <param name="Filename" value> <param name="InvokeURLs" value="-1"> <param name="Language" value="-1"> <param name="Mute" value="0"> <param name="PlayCount" value="1"> <param name="PreviewMode" value="0"> <param name="Rate" value="1"> <param name="SAMILang" value> <param name="SAMIStyle" value> <param name="SAMIFileName" value> <param name="SelectionStart" value="-1"> <param name="SelectionEnd" value="-1"> <param name="SendOpenStateChangeEvents" value="-1"> <param name="SendWarningEvents" value="-1"> <param name="SendErrorEvents" value="-1"> <param name="SendKeyboardEvents" value="0"> <param name="SendMouseClickEvents" value="-1"> <param name="SendMouseMoveEvents" value="0"> <param name="SendPlayStateChangeEvents" value="-1"> <param name="ShowCaptioning" value="0"> <param name="ShowControls" value="-1"> <param name="ShowAudioControls" value="-1"> <param name="ShowDisplay" value="0"> <param name="ShowGotoBar" value="0"> <param name="ShowPositionControls" value="0"> <param name="ShowStatusBar" value="-1"> <param name="ShowTracker" value="-1"> <param name="TransparentAtStart" value="0"> <param name="VideoBorderWidth" value="0"> <param name="VideoBorderColor" value="0"> <param name="VideoBorder3D" value="0"> <param name="Volume" value="-80"> <param name="WindowlessVideo" value="0"> </object> </font> <p><font color="#ff0000" style="line-height: 150%; word-break: break-all"> <font class=text color="#008000" size="2">播放网络电视节目:</font><font color="#FF0000"><select name=Sel onchange="LoadVideo(this.value)" size=1 style="BACKGROUND-COLOR: #CCCCCC; "> <option value="img/left_top3.gif" selected>:::请选择网络电视台:::: </option> <option value="mms://XXXXXXXX">电台名称 <option value="mms://XXXXX">电台名称 </option> </select><font size="2"><br> </font> </font> <font class=text color="#008000"><font size="2">播放本机视频文件:</font></font><font color="#FF0000"><input name="textfield2" type="file" size="13" onchange="LoadVideo(this.value)" style="BACKGROUND-COLOR: #CCCCCC; "></font><font size="2"></div> </font>
好的,以下是一个示例代码,可以实现通过点击按钮来控制视频的播放和暂停: ``` <!DOCTYPE html> <html> <head> <title>Play Video with Button Click</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> #video-container { display: none; } </style> </head> <body> <button onclick="playPause()">播放/暂停视频</button> <div id="video-container"> <video id="my-video" width="640" height="360" controls> <source src="video.mp4" type="video/mp4"> <source src="video.webm" type="video/webm"> Your browser does not support the video tag. </video> </div> <script> var myVideo = document.getElementById("my-video"); function playPause() { var btn = document.getElementsByTagName("button")[0]; if (myVideo.paused) { myVideo.play(); btn.innerHTML = "暂停视频"; } else { myVideo.pause(); btn.innerHTML = "播放视频"; } } </script> </body> </html> ``` 在这个示例中,我们首先在页面上放置了一个按钮,点击该按钮会触发`playPause()`函数。该函数会获取ID为`my-video`的video元素,并根据该元素的`paused`属性来判断视频当前是播放还是暂停。如果视频是暂停状态,就调用`play()`方法开始播放视频,并将按钮文本改为“暂停视频”;如果视频是播放状态,就调用`pause()`方法暂停视频,并将按钮文本改为“播放视频”。 注意,这个示例只是一个简单的演示,实际中需要根据实际情况进行调整,比如视频的路径、尺寸、控制面板等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值