当前位置: 首页 > news >正文

网站帮助页面设计科技布是什么面料

网站帮助页面设计,科技布是什么面料,网站建设中的注册和登录页面,界面设计模式读后感前言#xff1a;本文只是练习#xff0c;本文只是练习#xff0c;本文只是练习#xff01; 直播的核心就是推流和拉流#xff0c;我们就以RTMP的协议来实现下推流和拉流#xff0c;其他的协议等我学习后再来补充 1.推流 1.1搭建流媒体服务器#xff0c;具体搭建方法请参…前言本文只是练习本文只是练习本文只是练习 直播的核心就是推流和拉流我们就以RTMP的协议来实现下推流和拉流其他的协议等我学习后再来补充 1.推流 1.1搭建流媒体服务器具体搭建方法请参照Windows搭建RTMP服务器_rtmp服务器搭建-CSDN博客 一些软件需要搭梯子如果没法下载的可以联系下我我私发搭建好后在浏览器里输入http://localhost:9091/stat  出现该界面说明搭建成功 1.2推流上面的搭建文章有OBS推流和ffmpeg推流这些推流是软件操作和命令行操作在Andorid客户端不方便我们这里采用WangShuo1143368701/WSLiveDemo: 音视频直播SDKrtmp推流录制视频滤镜。百万用户线上迭代半年已经稳定。这个库来进行推流 1.2.1首先build.gradle里进行依赖 implementation com.github.WangShuo1143368701:WSLiveDemo:v1.7 1.2.2进行ndk配置 defaultConfig {applicationId com.anssy.videoliveminSdk 24targetSdk 34versionCode 1versionName 1.0ndk {// 设置支持的SO库架构开发者可以根据需要选择一个或多个平台的soabiFilters armeabi, armeabi-v7a, arm64-v8a, x86, arm64-v8a, x86_64}testInstrumentationRunner androidx.test.runner.AndroidJUnitRunner}1.2.3 接下来就是一些权限的申请布局的编写和对应代码的实现了申请的权限是Camera和Record Audio 这里引入一个常用的权限框架 implementation com.github.getActivity:XXPermissions:20.0 具体实现代码 activity_live_video.xml ?xml version1.0 encodingutf-8? RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentme.lake.librestreaming.ws.StreamLiveCameraViewandroid:idid/stream_previewViewandroid:layout_widthmatch_parentandroid:layout_aboveid/bottom_layoutandroid:layout_heightmatch_parent/LinearLayoutandroid:layout_widthmatch_parentandroid:orientationhorizontalandroid:idid/bottom_layoutandroid:layout_alignParentBottomtrueandroid:layout_heightwrap_contentButtonandroid:layout_width0dpandroid:text开始推流android:idid/btn_startStreamingandroid:layout_heightwrap_contentandroid:layout_weight1/Buttonandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:text停止推流android:idid/btn_stopStreaming/Buttonandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:idid/watch_liveandroid:text查看直播/Buttonandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:idid/btn_startRecordandroid:text开始录制/Buttonandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:idid/btn_stopRecordandroid:text停止录制//LinearLayout /RelativeLayout MainActivity.kt  这里有个注意点就是这个rtmp的地址自己搞了半天这个地址是你本地的IP在niginx里config文件里面配置的端口号然后后面的程序名称默认是live也可以是你配置的程序具体看画红框的部分 package com.anssy.videolive.uiimport android.content.Intent import android.os.Bundle import android.view.View import android.view.View.OnClickListener import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.anssy.videolive.R import com.anssy.videolive.databinding.ActivityLiveVideoBinding import com.hjq.permissions.OnPermissionCallback import com.hjq.permissions.Permission import com.hjq.permissions.XXPermissions import jp.co.cyberagent.android.gpuimage.GPUImageAddBlendFilter import me.lake.librestreaming.core.listener.RESConnectionListener import me.lake.librestreaming.filter.hardvideofilter.BaseHardVideoFilter import me.lake.librestreaming.filter.hardvideofilter.HardVideoGroupFilter import me.lake.librestreaming.ws.StreamAVOption import me.lake.librestreaming.ws.StreamLiveCameraView import me.lake.librestreaming.ws.filter.hardfilter.GPUImageBeautyFilter import me.lake.librestreaming.ws.filter.hardfilter.extra.GPUImageCompatibleFilter import java.util.LinkedList/*** Description rtmp的直播练习* Author yulu* CreateTime 2025年01月21日 09:14:03*/class MainActivity :AppCompatActivity(),RESConnectionListener,OnClickListener{private lateinit var mLiveCameraView: StreamLiveCameraViewprivate lateinit var streamAVOption: StreamAVOptionprivate val rtmpUrl rtmp://192.168.0.209:1935/hls/private lateinit var mMainViewBinding:ActivityLiveVideoBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mMainViewBinding ActivityLiveVideoBinding.inflate(layoutInflater)setContentView(mMainViewBinding.root)initView()requestPermission()}/*** 请求权限*/private fun requestPermission() {val permissionList: MutableListString ArrayList()permissionList.add(Permission.CAMERA)permissionList.add(Permission.RECORD_AUDIO)XXPermissions.with(this).permission(permissionList).request(object : OnPermissionCallback {override fun onGranted(permissions: ListString, all: Boolean) {if (all) {initConfig()}}override fun onDenied(permissions: ListString, never: Boolean) {}})}private fun initView(){mLiveCameraView mMainViewBinding.streamPreviewViewmMainViewBinding.btnStartStreaming.setOnClickListener(this)mMainViewBinding.btnStopStreaming.setOnClickListener(this)mMainViewBinding.btnStartRecord.setOnClickListener(this)mMainViewBinding.btnStopRecord.setOnClickListener(this)mMainViewBinding.watchLive.setOnClickListener(this)}/*** 进行相关配置*/private fun initConfig() {//参数配置 startstreamAVOption StreamAVOption()streamAVOption.streamUrl rtmpUrl//参数配置 endmLiveCameraView.init(this, streamAVOption)mLiveCameraView.addStreamStateListener(this)//设置滤镜组val files LinkedListBaseHardVideoFilter()files.add(GPUImageCompatibleFilter(GPUImageBeautyFilter()))files.add(GPUImageCompatibleFilter(GPUImageAddBlendFilter()))mLiveCameraView.setHardVideoFilter(HardVideoGroupFilter(files))}override fun onDestroy() {super.onDestroy()mLiveCameraView.destroy()}override fun onOpenConnectionResult(result: Int) {//result 0成功 1 失败runOnUiThread {Toast.makeText(this,打开推流连接 状态$result 推流地址$rtmpUrl, Toast.LENGTH_LONG).show()}}override fun onWriteError(result: Int) {runOnUiThread {Toast.makeText(this,推流出错,请尝试重连,Toast.LENGTH_LONG).show()}}override fun onCloseConnectionResult(result: Int) {runOnUiThread {Toast.makeText(this,关闭推流连接 状态$result,Toast.LENGTH_LONG).show()}}override fun onClick(v: View) {when(v.id){//开始推流R.id.btn_startStreaming- {if (!mLiveCameraView.isStreaming) {mLiveCameraView.startStreaming(rtmpUrl)} else {Toast.makeText(this, 未打开, Toast.LENGTH_SHORT).show()}}//结束推流R.id.btn_stopStreaming-{if (mLiveCameraView.isStreaming) {mLiveCameraView.stopStreaming()}}//查看直播R.id.watch_live-{val intent Intent(this,VideoLiveActivity::class.java)intent.putExtra(url,this.rtmpUrl)startActivity(intent)}//开始录制R.id.btn_startRecord-{if (!mLiveCameraView.isRecord) {mLiveCameraView.startRecord()}}//结束录制R.id.btn_stopRecord-{if (mLiveCameraView.isRecord) {mLiveCameraView.stopRecord()}}}}} 弄完后就可以推流了推流成功的效果如下 2.拉流 2.1 VLC播放器播放在VLC播放器中输入推流的地址 点击媒体-打开网络串流-输入地址 rtmp://192.168.0.209:1935/hls/ 2.2使用IJK内核的播放器来播放该地址这里引入一个第三方库 Doikki/DKVideoPlayer: Android Video Player. 安卓视频播放器封装MediaPlayer、ExoPlayer、IjkPlayer。模仿抖音并实现预加载列表播放悬浮播放广告播放弹幕视频水印视频滤镜 build.gradle中依赖 implementation xyz.doikki.android.dkplayer:dkplayer-java:3.3.7implementation xyz.doikki.android.dkplayer:player-ijk:3.3.7implementation xyz.doikki.android.dkplayer:dkplayer-ui:3.3.7 application中初始化 package com.anssy.videolive.baseimport android.app.Application import xyz.doikki.videoplayer.ijk.IjkPlayerFactory import xyz.doikki.videoplayer.player.VideoViewConfig import xyz.doikki.videoplayer.player.VideoViewManager/*** Description TODO* Author yulu* CreateTime 2025年01月21日 09:44:15*/class BaseApplication : Application() {override fun onCreate() {super.onCreate()VideoViewManager.setConfig(VideoViewConfig.newBuilder().setPlayerFactory(IjkPlayerFactory.create())//使用使用IjkPlayer解码 直播使用.build())}} activity_video_play.xml ?xml version1.0 encodingutf-8? RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:backgroundcolor/blackandroid:layout_heightmatch_parentxyz.doikki.videoplayer.player.VideoViewandroid:idid/playerandroid:layout_centerInParenttrueandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent /LinearLayoutandroid:layout_width45dpandroid:layout_height45dpandroid:onClickbackandroid:idid/back_layoutandroid:orientationhorizontaltools:ignoreUsingOnClickInXmlImageViewandroid:idid/img_backandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenterandroid:contentDescriptionnullandroid:scaleTypecenterInsideandroid:srcdrawable/back_sting_white //LinearLayout /RelativeLayout VideoLiveActivity.kt package com.anssy.videolive.uiimport android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import com.anssy.videolive.databinding.ActivityVideoPlayBinding import xyz.doikki.videocontroller.StandardVideoController/*** Description 用于直播播放的控制器* Author yulu* CreateTime 2025年01月21日 09:50:41*/class VideoLiveActivity : AppCompatActivity() {private lateinit var mVideoLiveVideoBinding: ActivityVideoPlayBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mVideoLiveVideoBinding ActivityVideoPlayBinding.inflate(layoutInflater)setContentView(mVideoLiveVideoBinding.root)initView()}private fun initView() {mVideoLiveVideoBinding.player.setUrl(if (intent.getStringExtra(url)null) rtmp://192.168.0.209:1935/hls/ else intent.getStringExtra(url)) //设置视频地址val controller StandardVideoController(this)controller.addDefaultControlComponent(, false)mVideoLiveVideoBinding.player.setVideoController(controller) //设置控制器mVideoLiveVideoBinding.player.start() //开始播放不调用则不自动播放}public fun back(view:View){finish()}override fun onPause() {super.onPause()mVideoLiveVideoBinding.player.pause()}override fun onResume() {super.onResume()mVideoLiveVideoBinding.player.resume()}override fun onDestroy() {super.onDestroy()mVideoLiveVideoBinding.player.release()}override fun onBackPressed() {if (!mVideoLiveVideoBinding.player.onBackPressed()) {super.onBackPressed()}} } 播放效果 20250121_112120 源码下载地址rtmp练习kotlin资源-CSDN文库
http://www.hkea.cn/news/14514898/

相关文章:

  • 威海网站建设价格网站原型图怎么做
  • 手机网站尺寸大小网站认证
  • 商丘网站推广渠道怎么做网页动图
  • 如何用模板建设网站创建网站英语
  • 南京网站建设策划方案php网站建设个人总结
  • 邯郸高端网站建设广州市建设集团网站首页
  • 无法登陆建设银行网站apt方式 安装wordpress
  • 注册自己的网站怎么注wordpress iframe框架引用插件
  • 如何给网站文字做超链接重庆做商城网站建设
  • 开源镜像网站怎么做大屏手机网站
  • 重庆智能建站模板新手如何做网站维护
  • 网站怎么做漂亮点网站开发竞争对手分析
  • 做个网站多少钱怎么接广告新民电子网站建设哪家好
  • 上海网站建设公司指南域名网站排名
  • 全国网站建设汇编小程序app分销网站建设
  • 网站制作小工具淘宝美工做倒计时图片网站
  • 什么是网站维护中wordpress最好选择
  • 沈阳市建设监理协会网站做网站的标题图片
  • 做美食网站首页怎么做原有网站已备案 怎么做接入
  • 高端网站哪种好做自媒体可以搬运国外网站新闻吗
  • 网站建设站长学做网站最好的网站
  • 手机网站建设设计公司网页设计师就业趋势
  • 常州网站排名提升wordpress 营销模板下载
  • 电子政务门户网站建设公司小程序怎么制作
  • 有电脑网站怎么做手机网站蓬莱做网站那家好
  • 视频网站开发周期网络营销推广方式包括?
  • 广州网站优化工具科技创新的重要性和意义
  • 目前搜索引擎排名wordpress优化 春哥
  • 中国第一个做电商网站开发网站需要怎么做
  • 关于申请网站建设维护经费校际凡科平台怎么登录