android中直播接受的一方
在观看的一方使用的是Vitamio
下载Vitamiosdk,打入打包成lib
新建工程,导入raw,和这个lib
权限
<uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
添加activity
<activity
android:name="io.vov.vitamio.activity.InitActivity"android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"android:launchMode="singleTop"android:theme="@android:style/Theme.NoTitleBar"android:windowSoftInputMode="stateAlwaysHidden" />
初始化
Vitamio.initialize(this);
使用方式
mediaPlayer = new MediaPlayer(this);
try {mediaPlayer.setDataSource(url);mediaPlayer.setDisplay(holder);mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {mediaPlayer.start();}});
mediaPlayer.prepareAsync();
mediaPlayer.setBufferSize(1024 * 1024 * 2);
} catch (IOException e) {
e.printStackTrace();
}
一个案例分析
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, View.OnClickListener {//String url = "rtmp://zhibo2.whunf.com.cn/xykj/push";//下面是一个香港卫视的地址,这里一般是需要放自己推流的地址
String url = "rtmp://live.hkstv.hk.lxdns.com/live/hks";// String url = "http://live121.cnlive.com:1935/live/shijiexiaojie/playlist.m3u8";SurfaceView sv;ImageView iv;MediaPlayer mediaPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sv = (SurfaceView) findViewById(R.id.sv);iv = (ImageView) findViewById(R.id.iv);sv.getHolder().addCallback(this);sv.setOnClickListener(this);sv.getHolder().setFormat(PixelFormat.RGBA_8888);}@Overridepublic void surfaceCreated(SurfaceHolder holder) {mediaPlayer = new MediaPlayer(this);try {mediaPlayer.setDataSource(url);//设置资源mediaPlayer.setDisplay(holder);//设置屏幕//设置预加载的监听mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {mediaPlayer.start();}});mediaPlayer.prepareAsync();//设置预加载mediaPlayer.setBufferSize(1024 * 1024 * 2);//缓存字节} catch (IOException e) {e.printStackTrace();}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {if (mediaPlayer != null) {if (mediaPlayer.isPlaying())mediaPlayer.stop();mediaPlayer.release();mediaPlayer = null;}}Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);iv.setVisibility(View.GONE);}};@Overridepublic void onClick(View v) {//暂停if (mediaPlayer != null) {if (mediaPlayer.isPlaying()) {//暂停iv.setVisibility(View.VISIBLE);iv.setImageResource(R.mipmap.pause);mediaPlayer.pause();} else {iv.setImageResource(R.mipmap.play);mediaPlayer.start();handler.sendEmptyMessageDelayed(1, 2000);}}}
}
MyApp
public class MyApp extends Application {@Overridepublic void onCreate() {super.onCreate();Vitamio.initialize(this);}
}
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.xwei.zhibo.MainActivity">
<SurfaceView
android:layout_width="match_parent"android:id="@+id/sv"android:layout_height="match_parent" /><ImageView
android:id="@+id/iv"android:visibility="gone"android:layout_width="50dp"android:layout_height="50dp"android:layout_centerInParent="true"android:src="@mipmap/pause" />
</RelativeLayout>
manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.xwei.zhibo"><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><application
android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:name=".MyApp"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity
android:name="io.vov.vitamio.activity.InitActivity"android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"android:launchMode="singleTop"android:theme="@android:style/Theme.NoTitleBar"android:windowSoftInputMode="stateAlwaysHidden" /></application></manifest>
android中直播接受的一方相关推荐
- Android中直播视频技术探究之---基础知识大纲介绍
该博客转载于猿是一种能够改变世界的动物!! 一.前言 最近各种视频直播app到处都是,各种霸屏,当然我们也是需要体验的,关于视频直播的软件这里就不介绍了,在不是技术的人来看,直播是一种潮流,是一种娱乐 ...
- 直播带货源码,Android中直播视频技术探究
一.前言 最近各种视频直播app到处都是,各种霸屏,当然我们也是需要体验的,关于视频直播的软件这里就不介绍了,在不是技术的人来看,直播是一种潮流,是一种娱乐方式,但是作为一个高技术的,我们除了看看,更 ...
- android 触摸 唤醒屏幕,Android中屏幕保持唤醒
1.锁的类型 PowerManager中各种锁的类型对CPU .屏幕.键盘的影响: PARTIAL_WAKE_LOCK : 保持CPU 运转,屏幕和键盘灯有可能是关闭的. SCREEN_DIM_WAK ...
- Android中如何APP视屏如何去除广告
生死看淡,不服就干! http://www.wjdiankong.cn 目录视图 摘要视图 订阅 微信小程序实战项目--点餐系统 程序员11月书讯,评论得书啦 Get IT技能知识库,50个领域一键直 ...
- android最新直播框架,NDK--Android Studio中直播推流框架的搭建
上次我们搭建了nginx流媒体服务器,接下来就是研究安卓端是如何直播推流到nginx服务器,之前我们了解到视频流和音频流,那么直播也必然绕不开这两个流,手机端的直播可想而知,视频流使用摄像头获取,音频 ...
- Android中Vitamio使用解析-电视台直播为例
先上图,在Android中使用Vitamio播放香港卫视: 第一步,AndroidStudio中导入Vitamio 1 Vitamio源码下载,源码下载下来后,我们将vitamio导入AndroStu ...
- 安卓Android中腾讯音视频和直播 API的使用
安卓Android中腾讯音视频和直播 API的使用 文章目录 安卓Android中腾讯音视频和直播 API的使用 前言:安卓Android中腾讯音视频和直播 API的使用,这里没有写UI,功能是放在一 ...
- 搭建直播平台过程中Android端直播APP源码是如何实现连麦功能的?
直播平台强大的变现能力是大家有目共睹的,很多开发商在搭建直播平台时为了增加用户黏性,纷纷将直播中加入连麦功能. 目前市场上通用的有两种连麦方案:本地混流和云端混流.本地混流即主播和连麦观众分别推一路流 ...
- android顶部渐变显示,Android实现直播聊天区域中顶部的渐变效果
Android实现直播聊天区域中顶部的渐变效果 发布时间:2020-10-15 08:24:18 来源:脚本之家 阅读:102 作者:MG屠夫 背景 在4月份开发直播时,有一个需求,需要实现一个Rec ...
最新文章
- Unity 4.x游戏开发技巧集锦(内部资料)
- 编写高质量JavaScript代码的基本技巧
- 直击微软MIX11 聚焦IE10、Silverlight5、WP7
- NFS网络文件共享存储服务器
- 【Java并发编程】java并发框架Executor学习笔记
- centos7 xampp启动mysql数据库_mysql主从配置,用win xampp和centos7环境下测试
- Switch语句的参数是什么类型的?
- 操作系统学习(三)-- CPU调度
- clickhouse kafka引擎入门
- yolov5模型框架详解
- 【iOS-iap防护】验证用户付费收据!拒绝iap Cracker!!
- GBK/GBK2312字库寻址及使用原理
- 摄影——相机的成像原理
- 分布式系统的容错性(一)——容错性简介
- Fiddler - IOS 开启证书(描述文件与设备管理 / 证书信任设置)
- 记一次Windows 无法加载这个硬件的设备驱动程序。驱动程序可能已损坏或不见了。 (代码 39)
- 【XJTUSE计算机图形学】第四章 真实感图形学(1)——–颜色视觉
- 升级macos beta_如何选择退出macOS开发人员或公开Beta版
- 无法使用内置管理员账户打开应用
- DockOne微信分享(一三四):国内某大型酒店管理集团基于Kubernetes的实践