首页 新闻资讯 正文

安卓电视直播软件(安卓电视直播软件app)

扫码手机浏览

  

  

文章内容

  

  

   功能简介核心代码秒开优化换台简介文章总结演示地址玉念聿辉演示效果图   

  

  话说这是一款底层基于工具的播放器,俗称EasyPlayer、Ijkplayer、ExoPlayer、JiaoZiVideoPlayer等等,支持彩信、RTSP、RTMP、HLS(m3u8)等常见的频流媒体协议;支持MKV、FLV、MP4、MOV、TS、RMVB等常见视频格式格式;   

  

  

功能简介

  

  

   我们又不是大佬,我们挑简单来说,话说一款直播软件的基本要素、唉唉,挑简单的说、说什么说,就是实现一款支持各种流媒体协议并且同时支持各种视频格式的播放器罢了嘛;   

  

  还不明白?不要慌,我们有参照物,对于电视端来说如友窝直播、超级直播、电视直播等等类似的智能个人电视智能个人电视直播软件;那么对于手机直播来说文章仅仅介绍的是拉流端,熟称播放端,那具体实现一整套手机直播系统如何解决呢?不慌,联系我,我是最简单的[玉念聿辉](https://博客。csdn。net/QQ  _ 35350654);   

  

  

核心代码

  

  

  xml定义  

  

  org。简单的达尔文。易玩家。观点。提供视图   

  

  android:id='@ id/video_view  '   

  

  Android  : layout  _ width=' match  _ parent  '   

  

  Android  : layout  _ height=' match  _ parent  '   

  

  Android  : keepscreenon=' true  '/   

  

  ProVideoView引用  

  

  私有活动mainprobinding  m  binding   

  

  私有文本视图文本视图   

  

  私人视图mProgress   

  

  私有提供视频视图视频视图   

  

  私有字符串[]URL={ ' http://jzvd。纳森。cn/342 a5 F7 ef  6124 a  4 A8 fa  f  00 e  738 b  8 bee  4/cf  6d  9 db  0 BD  4d  41 f  59d  09 ea  0 a  81 e  918 FD-5287d  2089 db  37 e  62345123 a  1 be  272 F8 b  . MP4 ',' rtmp  3://218。38 .152 .3152 .3152 .3152 .3209   

  

  @覆盖   

  

  受保护的void  onCreate(Bundle  saved  instancestate){   

  

  超级棒。oncreate(savedInstanceState);   

  

  getWindow().setFlags(WindowManager  .LayoutParams。FLAG  _全屏,   

  

  窗口管理器布局参数。FLAG  _全屏);   

  

  m  binding=databindingutil。设置内容视图(this,r  . layout。activity  _ main  _ pro);   

  

  //初始化播放器   

  

  IjkMediaPlayer  IjkMediaPlayer=new  IjkMediaPlayer();   

  

  ijk媒体播放器。loadlibrariesonce(null);   

  

  if  (BuildConfig  .调试){   

  

  IjkMediaPlayer。native  _ setlog级别(IjkMediaPlayer  .IJK  _日志_调试);   

  

  }   

  

  mVideoView=m绑定。视频查看;   

  

  mProgress=findViewById(android  .身份证。进步);   

  

  mVideoView.setOnInfoListener(新的IMediaPlayer  .OnInfoListener() {   

  

  @覆盖   

  

  public  boolean  on  info(IMediaPlayer  IMediaPlayer,int  arg1,int  arg2) {   

  

  开关(arg1) {   

  

  case  IMediaPlayer  .MEDIA  _ INFO  _ VIDEO  _ TRACK  _ lagging  :   

  

  //mtextview。append(' \ n  media  _ INFO  _ VIDEO  _ TRACK  _ LAGGING  ');   

  

  打破;   

  

  case  IMediaPlayer  .媒体信息视频资源   

NDERING_START:    //mTextView.append("\nMEDIA_INFO_VIDEO_RENDERING_START");    mProgress.setVisibility(View.GONE);    break;    case IMediaPlayer.MEDIA_INFO_BUFFERING_START:    //mTextView.append("\nMEDIA_INFO_BUFFERING_START");    break;    case IMediaPlayer.MEDIA_INFO_BUFFERING_END:    //mTextView.append("\nMEDIA_INFO_BUFFERING_END");    break;    case IMediaPlayer.MEDIA_INFO_NETWORK_BANDWIDTH:    //mTextView.append("\nMEDIA_INFO_NETWORK_BANDWIDTH: " + arg2);    break;    case IMediaPlayer.MEDIA_INFO_BAD_INTERLEAVING:    //mTextView.append("\nMEDIA_INFO_BAD_INTERLEAVING");    break;    case IMediaPlayer.MEDIA_INFO_NOT_SEEKABLE:    //mTextView.append("\nMEDIA_INFO_NOT_SEEKABLE");    break;    case IMediaPlayer.MEDIA_INFO_METADATA_UPDATE:    //mTextView.append("\nMEDIA_INFO_METADATA_UPDATE");    break;    case IMediaPlayer.MEDIA_INFO_UNSUPPORTED_SUBTITLE:    //mTextView.append("\nMEDIA_INFO_UNSUPPORTED_SUBTITLE");    break;    case IMediaPlayer.MEDIA_INFO_SUBTITLE_TIMED_OUT:    //mTextView.append("\nMEDIA_INFO_SUBTITLE_TIMED_OUT");    break;    case IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED:    break;    case IMediaPlayer.MEDIA_INFO_AUDIO_RENDERING_START:    //mTextView.append("\nMEDIA_INFO_AUDIO_RENDERING_START");    break;    }    return false;    }    });   /**    * 播放错误    */    mVideoView.setOnErrorListener(new IMediaPlayer.OnErrorListener() {    @Override    public boolean onError(IMediaPlayer iMediaPlayer, int i, int i1) {    mProgress.setVisibility(View.GONE);    Toast.makeText(ProVideoActivity.this, "播放错误", Toast.LENGTH_SHORT).show();    mVideoView.postDelayed(new Runnable() {    @Override    public void run() {    mVideoView.reStart();    }    }, 5000);    return true;    }    });   /**    * 播放完成    */    mVideoView.setOnCompletionListener(new IMediaPlayer.OnCompletionListener() {    @Override    public void onCompletion(IMediaPlayer iMediaPlayer) {    mProgress.setVisibility(View.GONE);    Toast.makeText(ProVideoActivity.this, "播放完成", Toast.LENGTH_SHORT).show();    }    });    TextView = findViewById(R.id.tv_time);    TextView.setText("正在播放:" + url[i]);    if (url[i] != null)    mVideoView.setVideoPath(url[i]);    else {    Log.e(TAG, "Null Data Source\n");    finish();    return;    }    mVideoView.start();   }   

完了、完了完了完了

秒开优化

秒开是什么鬼,就是换台的时候快一点呗,管他那么多,能设置的都给添上去,完了重新运行、对比,嗯、、、、、、完全看不出来,但你还是添加上去就是了;

//丢帧 是在视频帧处理不过来的时候丢弃一些帧达到同步的效果

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 5);

  //设置是否开启环路过滤: 0开启,画面质量高,解码开销大,48关闭,画面质量差点,解码开销小

   ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 0);

  //播放延时的解决方案,设置播放前的探测时间 1,达到首屏秒开效果

   ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", 1);

  //如果是rtsp协议,可以优先用tcp(默认是用udp)

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "rtsp_transport", "tcp");

  ijkMediaPlayer.setOption(1, "analyzemaxduration", 100L);

  ijkMediaPlayer.setOption(1, "flush_packets", 1L);

  //需要准备好后自动播放

   ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1);

   //不额外优化

   ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "fast", 1);

   //是否开启预缓冲,一般直播项目会开启,达到秒开的效果,不过带来了播放丢帧卡顿的体验

   ijkMediaPlayer.setOption(4, "packet-buffering", 0);

   //自动旋屏

   ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 0);

   //处理分辨率变化

   ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-handle-resolution-change", 0);

  //最大缓冲大小,单位kb

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "max-buffer-size", 0);

  //默认最小帧数2

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", 2);

  //最大缓存时长

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "max_cached_duration", 3);

  //是否限制输入缓存数

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "infbuf", 1);

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "nobuffer");

  //播放前的探测Size,默认是1M, 改小一点会出画面更快

  ijkMediaPlayer.setOption(1, "probesize", 200);

  //播放重连次数

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "reconnect", 5);

  //清空DNS

  ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "dns_cache_clear", 1);

  

换台简介

这个挺有意思,我看了网上几份Ijkplayer的代码,换台既然是自杀式Activity切换,运行出来的效果就是每当换台眼前一黑,然后从新打开了一个新的世界,本人对生命还是热爱有加的,看看下面;

/**

   * 换台

   */

   public void player() {

   TextView.setText("正在播放:" + url[i]);

   mProgress.setVisibility(View.VISIBLE);

   mVideoView.setVideoPath(url[i]);

   mVideoView.toggleRender();

   }

  

文章总结

没太多想法,只想能有一篇点击过万的文章,当然不一定是这篇,也不知道是我自私还是太菜了,写出来的文章总不对大家的胃口,但最近看到一句话我觉得还是挺有意思的,就用它来结尾吧!

以前我总是期望别人能帮助我一把,然后再给予他们翻倍的回报,但往往都以失望而终,但最近我试着去帮助别人,才突然发现帮助我的人也越来越多;

Demo地址

Github:https://github.com/Life1412378121/TVPlayer-IPTV-EasyPlayer.git

CSDN:https://download.csdn.net/download/qq_35350654/11143538

---------------------


  

推荐一款电视直播软件,不卡能适配安卓9.0能达满屏的且无购物频道,谢谢?

    

  手机可以解决人们的衣食住行问题。如果在手机上安装直播APP,可以看直播频道,躺在床上看央视和电视频道。有哪些稳定不卡顿的直播app?  

  

  中国中央电视台;闭路电视  

  

  央视唯一官方直播APP。可以通过网络收看央视和地方电视频道,直播来自权威的中国网络电视台。除了直播频道,还有丰富的点播频道、综艺节目、专题频道、纪录片等等。同时支持搜索、收藏、回顾等功能,可以实现“掌上电视”的功能。  

  

  电视之家  

  

  电视之家是一个资历比较老的直播APP,也支持网络盒子,安卓手机,苹果手机。节目方面,覆盖央视、各省市地方台,据统计超过1400个频道。电视直播源由网友共同维护,稳定性好,支持直播源自动切换。  

  

  电视节目,没有广告,可以全屏显示,同时可以投射到智能电视上。  

  

  DTMB电视台  

  

  如果流量不够或者使用网络不方便,我们也可以用手机看免费的DTMB电视。我们不需要连接到互联网,但我们需要一个DTMB接收器。  

  

  手机的DTMB接收器也成为了手机的电视伴侣。将DTMB接收器连接到手机的数据接口,就可以随时随地看电视直播,而且不需要上网流量。  

  

  如果你觉得有帮助,可以多多喜欢,也可以关注一下。谢谢你。  

阅读全文

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 284563525@qq.com 举报,一经查实,本站将立刻删除。转载请注明出处