Android VideoView如何播放RTSP的流
- 格式:doc
- 大小:68.00 KB
- 文档页数:4
android多媒体类VideoView使⽤⽅法详解⼀、概述VideoView类将视频的显⽰和控制集于⼀⾝,我们可以借助它完成⼀个简易的视频播放器。
VideoView和MediaPlayer也⽐较相似。
⼆、VideoView的使⽤⽅法它主要有以下⼏种常⽤⽅法步骤:1.指定视频⽂件的路径,2.接下来调⽤start()⽅法就可以开始播放视频,pause()⽅法就会暂停播放,resume()⽅法就会重新播放注:获取视频⽂件也需要运⾏时权限,所有相关逻辑也需要写。
最后不要忘记在AndroidManifest.xml⽂件中声明⽤到的权限下⾯是⼀个⽐较简单的播放、暂停、重新播放的⼩demo⼀、xml⽂件中的代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.lk.playvideotest.MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/play"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="Play"android:textAllCaps="false"/><Buttonandroid:id="@+id/pause"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="Pause"android:textAllCaps="false"/><Buttonandroid:id="@+id/replay"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="RePlay"android:textAllCaps="false"/></LinearLayout><VideoViewandroid:id="@+id/video_view"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>⼆、activity中的代码public class MainActivity extends AppCompatActivity implements View.OnClickListener {private VideoView videoView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);videoView = (VideoView) findViewById(R.id.video_view);Button play = (Button) findViewById(R.id.play);Button pause = (Button) findViewById(R.id.pause);Button replay = (Button) findViewById(R.id.replay);play.setOnClickListener(this);pause.setOnClickListener(this);replay.setOnClickListener(this);if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);} else {initVideoPath();}}private void initVideoPath() {File file = new File(Environment.getExternalStorageDirectory(), "movie.mp4");videoView.setVideoPath(file.getPath());//指定视频⽂件的路径}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode) {case 1:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {initVideoPath();} else {Toast.makeText(this, "拒绝权限将⽆法使⽤程序", Toast.LENGTH_SHORT).show();finish();}break;default:}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.play:if (!videoView.isPlaying()) {videoView.start();//开始播放}break;case R.id.pause:if (!videoView.isPlaying()) {videoView.pause();//暂停播放}break;case R.id.replay:if (!videoView.isPlaying()) {videoView.resume();//重新播放}break;}}@Overrideprotected void onDestroy() {super.onDestroy();if (videoView != null) {videoView.suspend();//将VideoView所占⽤的资源释放掉}}}三、声明权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>VideoView并不是⼀个万能的视频播放⼯具类,如果使⽤它,编写⼀个功能⼗分强⼤的视频播放器是不太现实的。
AndroidStudio上⼿,基于VideoView的本地⽂件及流媒体播放器既然是第⼀个Android程序。
少不了要Hello World。
1. 新建安卓project2. 输⼊project名称3. 选择平台版本号4. 选择⼀个空的Activity5. 定制⾃⼰的Activity点击Finish后,便⽣成了可以直接执⾏的Hello World程序。
以下開始讨论如何使这个仅仅能打印Hello World的程序可以播放本地和⽹络视频。
此处附上功能⽂件夹结构:6. 布局⽂件⾸先须要⼜⼀次布局。
设计器的设计结果是保存在“activity_video_view_demo.xml”这个XML⽂件⾥的。
所以,略微花⼀点时间看下这个XML⽂件。
就⾮常easy看懂。
<RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".VideoViewDemo"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"android:text="= Stream Player ="android:id="@+id/textView"android:layout_alignParentTop="true"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_alignParentRight="true"android:layout_alignParentEnd="true"android:textIsSelectable="false"android:layout_alignParentBottom="false"android:gravity="center_horizontal" /><EditTextandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/url"android:layout_below="@+id/textView"android:layout_alignParentTop="false"android:layout_alignParentLeft="true"android:text="rtsp://ipaddr:port/domain"android:layout_alignRight="@+id/textView"android:layout_alignEnd="@+id/textView" /><RadioGroupandroid:id="@+id/radioGroup1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_below="@+id/url"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_alignParentTop="false"><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Stream"android:id="@+id/radioButtonStream"android:layout_below="@+id/url"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:checked="false"android:layout_alignBottom="@+id/start_play" /><RadioButtonandroid:layout_width="wrap_content"android:layout_height="51dp"android:text="File"android:id="@+id/radioButtonFile"android:checked="false"android:layout_alignBottom="@+id/radioButtonStream"android:layout_toRightOf="@+id/radioButtonStream"android:layout_below="@+id/url" /></RadioGroup><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="PLAY"android:id="@+id/start_play"android:layout_below="@+id/url"android:layout_alignRight="@+id/url"android:layout_alignEnd="@+id/url"android:layout_toRightOf="@+id/radioGroup1"android:layout_toEndOf="@+id/radioGroup1" /><VideoViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/rtsp_player"android:layout_below="@+id/start_play"android:layout_alignRight="@+id/url"android:layout_alignEnd="@+id/url" /></RelativeLayout>布局设计器效果:对⽐XML⽂件,最外层是⼀个关系布局。
Android视频播放器(⼆):使⽤MediaPlayer播放视频在我们讲了⼀下如何使⽤VideoView播放视频,了解了基本的播放器的⼀些知识和内容。
也知道VideoView内部封装的就是MediaPlayer,本⽂就介绍如何使⽤MediaPlayer播放视频。
⼀、简介MediaPlayer是Android中的⼀个多媒体播放类,其提供的API能满⾜简单的⼤部分⾳视频的播放需求。
下⾯简单介绍⼀下MediaPlayer:MediaPlayer是使⽤Surface进⾏视频的展⽰的。
MediaPlayer只⽀持mp4、avi、3gp格式的视频,⽀持格式相对单⼀。
MediaPlayer可以播放⽹络视频,⽀持的⽹络视频的协议为:Http协议和RTSP协议两种。
⼆、MediaPlayer 使⽤⽅法MediaPlayer 的提供的⽅法如下:void setDataSource(String path) :通过⼀个具体的路径来设置MediaPlayer的数据源,path可以是本地的⼀个路径,也可以是⼀个⽹络路径void setDataSource(Context context, Uri uri):通过给定的Uri来设置MediaPlayer的数据源,这⾥的Uri可以是⽹络路径或是⼀个ContentProvider的Uri。
void setDataSource(MediaDataSource dataSource) :通过提供的MediaDataSource来设置数据源void setDataSource(FileDescriptor fd):通过⽂件描述符FileDescriptor来设置数据源int getCurrentPosition() :获取当前播放的位置int getAudioSessionId() :返回⾳频的session IDint getDuration() :得到⽂件的时间TrackInfo[] getTrackInfo() :返回⼀个track信息的数组boolean isLooping ():是否循环播放boolean isPlaying():是否正在播放void pause () :暂停void start () :开始void stop () :停⽌void prepare():同步的⽅式装载流媒体⽂件。
Android使⽤VideoView出现⽆法播放此视频问题的解决⽅法前⾔最近的项⽬中需要⽤到VideoView实现视频播放,⾃⼰花了⼀天多时间才能出来,有点想打⾃⼰再见,在学校的时候没好好学。
使⽤VideoView播放视频的步骤如下:1) 在界⾯布局⽂件中定义VideoView组件,或在程序中创建VideoView组件。
2) 调⽤VideoView的如下两个⽅法来加载指定视频。
setVideoPath(String path):加载 path ⽂件所代表的视频。
setVideoURI(Uri uri):加载uri所对应的视频。
3) 调⽤VideoView的start()、stop()、pause()⽅法来控制视频播放。
实际上与VideoView—起结合使⽤的还有⼀个MediaController类,它的作⽤是提供⼀个友好的图形控制界⾯,通过该控制界⾯来控制视频的播放。
本⽂主要介绍的是Android⽤VideoView⽆法播放此视频的解决⽅法,下⾯废话不多说了,来⼀起看看详细的介绍吧发现问题废话少说,此次遇到的问题是⽆法播放此视频+⿊屏,问题如下图,这个问题硬是发了我⼀天多时间,在⽹上找不到解决⽅案,⽼板急,俺也急。
我是这样写的,已经简单的不能再简单了Uri uri = Uri.parse("/00/20/08/96e888piCHck.mp4");Log.i("Video", "视频:-->>"+uri);vh.leftVideo.setMediaController(new MediaController(mContext));vh.leftVideo.setVideoURI(uri);//播放⽹络视频// 4.4 开始播放vh.leftVideo.start();// 4.5 获取焦点vh.leftVideo.requestFocus();原因分析:很多⼈会以为是没有添加权限,或者是设备问题等等,都有可能。
有两种方法可以用来播放视屏,一种是用videoview,另外一种是用surfaceview,两面分别介绍两种方法:
一、用VideoView播放视屏。
首先,需要xml文件中加入VideoView,然后在sdcard中放入mp4文件或3gp文件,然后直接播放就可以了。
代码如下
xml代码
java代码
//之前试了很久,就是因为vv.setVideoPath("sdcard/video.mp4")不行,我也不知道为什么不行,后来用了下面函数就可以
第二、用surfaceview播放视屏:
首先,在xml文件里添加一个surfaceview,如下:
由于要使用surfaceholer,所以要实现以下接口:
声明SurfaceView对象sv,声明SurfaceHolder对象mHolder
在onCreate函数里获得这些对象,即实例化。
定义一个函数playVideo(),用来播放视频:
这是实现接口时要实现的方法:
这样就可以了。
将mp4文件放入sdcard文件夹中。
videoview 用法-回复“videoview用法”的主题是关于Android开发中如何使用videoview 控件来播放视频。
一、介绍videoviewvideoview是Android中自带的一个用于播放视频的控件。
它能够实现基本的视频播放功能,包括播放、暂停、停止等操作,同时还支持视频的缩放、跳转等功能。
二、videoview的创建和布局在XML布局文件中添加videoview控件,可以通过以下代码实现:<videoviewandroid:id="+id/myVideoView"android:layout_width="match_parent"android:layout_height="match_parent" />其中,id属性用于在代码中引用videoview控件。
需要注意的是,videoview的宽度和高度最好设置为match_parent,以便适应不同屏幕的尺寸。
三、获取videoview实例在代码中,需要通过findViewById()方法获取videoview的实例,以便进行后续操作。
示例代码如下:VideoView videoView = findViewById(R.id.myVideoView);四、设置视频源在videoview中播放视频之前,需要先设置视频源。
通过setVideoPath()或setVideoURI()方法,可以设置视频的本地路径或网络地址。
示例代码如下:videoView.setVideoPath("sdcard/video.mp4");其中,setVideoPath()方法用于设置本地视频的路径,而setVideoURI()方法则可以用于设置网络视频的地址。
五、开始播放视频设置好视频源后,通过调用start()方法来开始播放视频。
示例代码如下:videoView.start();六、视频播放状态监听如果需要追踪视频播放过程,可以通过VideoView的setOnPreparedListener()、setOnCompletionListener()和setOnErrorListener()方法来设置监听器,以便在需要的时候执行相应的操作。
【应用】RTSP取流地址?看第三方视频软件如何播放IPC画面你好,我们的平台想对接TP-LINK的摄像机,请问要怎么对接呢?请问平台是通过什么方式获取摄像机的视频流呢?目前的需求是能看到实时的视频流就可以,你们摄像机支持什么方式呢?那可以通过RTSP的方式来取流。
怎么取流?有相关接口文档吗?有标准的取流地址,是rtsp://#$@^%#&就像上面用户的需求,我们的摄像机均支持标准RTSP协议,可以作为RTSP服务器对外提供视频流。
如果您需要在第三方的网站、平台系统、APP、客户端、视频播放软件或第三方的录像机上获取摄像机的视频流进行实时预览,就可以使用这种方式取流。
TP-LINK全系列网络摄像机均支持通过RTSP协议来获取视频流,取流的地址格式为:主码流rtsp://username:password@ip:port/stream1子码流rtsp://username:password@ip:port/stream2其中:username:用户名,如admin;password:密码,如123456;ip:设备IP,如192.168.1.60;port:RTSP端口,默认为554,若为默认可不填;stream:码流类型,主码流为stream1,子码流为stream2。
举个例子摄像机的IP地址为192.168.1.60,用户名是admin,密码是123456,摄像机的RTSP端口为554。
那么该摄像机主码流的RTSP取流地址为rtsp://admin:**************.1.60:554/stream1子码流的RTSP取流地址为rtsp://admin:**************.1.60:554/stream2某电脑安装在和IPC同一网络中,可以访问到192.168.1.60,电脑上安装VLC media player需要播放IPC的画面,只需要打开VLC,选择打开网络串流,输入摄像机的RTSP取流地址:点击“播放”按钮后,即可实时预览摄像机的监控画面:以上就是通过RTSP URL获取摄像机视频流的方法。
Android开发中的视频播放和流媒体处理技术随着智能手机的普及,人们的生活中媒体的消费方式也正在发生变化。
在过去,我们习惯于通过电视、电影院或DVD进行视频观看,但现在,我们可以随时随地通过安装在我们手机上的应用程序来观看视频。
而作为Android开发者,了解和掌握视频播放和流媒体处理技术是至关重要的。
一、视频播放技术1. 媒体格式支持在Android开发中,我们需要确保我们的应用程序能够支持各种常见的视频格式,例如、MPEG-4和VP9等。
为了实现这一点,我们可以使用Android提供的媒体框架,例如MediaPlayer类和ExoPlayer 库。
这些框架提供了播放器的基本功能,例如视频和音频的解码和渲染。
2. 播放器控制除了支持各种媒体格式之外,我们还需要实现一些播放器控制功能,例如播放、暂停、停止和快进等。
为了实现这些功能,我们可以使用MediaPlayer类中提供的方法,例如start()、pause()、stop()和seekTo()等。
此外,我们还可以使用控件库,例如VideoView和MediaController,来简化播放器的控制。
3. 视频流媒体随着互联网速度的提高,越来越多的应用程序开始支持视频流媒体。
在Android开发中,我们可以使用RTMP、HLS和DASH等协议来实现视频流媒体。
我们可以通过使用第三方库,例如Vitamio和ExoPlayer,来实现这些协议的支持。
这些库提供了流媒体播放器的功能,并且支持常见的流媒体格式。
二、流媒体处理技术1. 音频流处理除了视频播放之外,流媒体处理还包括音频流的处理。
在Android开发中,我们可以使用Android提供的AudioTrack类和AudioRecord类来实现音频的播放和录制。
通过使用这些类,我们可以对音频进行实时处理,例如声音增强、降噪和均衡等。
2. 音视频编码为了进行流媒体处理,我们还需要将音视频数据进行编码和解码。
Android VideoView如何播放RTSP的流
2011-09-26 16:31
目前在做视频应用的时候,比较先进的技术就是RTSP流媒体了,那么如果利用Android的播放控件VideoView来播放RTSP的流呢?
RTSP流媒体链接:
http://218.204.223.237:8081/wap/
这个链接含有所有的RTSP流媒体的链接,现在咱们就用VideoView来播放里面的RTSP的流,咱们以其中的一个链接来测试下好了:
rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp.
效果截图:
2011-4-17 21:43 上传下载附件(201.66 KB) VideoView播放RTSP流
核心代码如下:
package com.video.rtsp;
import android.app.Activity;
import .Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.VideoView;
public class rtspActivity extends Activity {
/** Called when the activity is first created. */
Button playButton ;
VideoView videoView ;
EditText rtspUrl ;
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(yout.main);
rtspUrl = (EditText)this.findViewById(R.id.url);
playButton = (Button)this.findViewById(R.id.start_play); playButton.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) {
PlayRtspStream(rtspUrl.getEditableText().toString());
}
});
videoView = (VideoView)this.findViewById(R.id.rtsp_player); }
//play rtsp stream
private void PlayRtspStream(String rtspUrl){
videoView.setVideoURI(Uri.parse(rtspUrl));
videoView.requestFocus();
videoView.start();
}
}
复制代码
在点击开始播放后,一般要等个10几秒中才开始播放的,直接的设置需要播放的RTSP的地址:setVideoURI(rtsp的地址)
2011-4-17 21:47 上传
下载次数: 828
android rtsp demo。