Android 播放本地 ts 格式视频

上一篇文件讲述了如何录制 ts 格式的视频,那么如何播放录好的 ts 格式视频呢。

我一开始使用 MediaPlayer + SurfaceView 组合实现,我在代码中加了一个 mp4 格式的过滤,导致我播放时没有播放成功,误以为 MediaPlayer 不支持 ts 格式视频,看许多文档说明,也都是说 MediaPlayer 支持的格式为 mp4,3gp,mkv,webm,让我更确信了这点。

搜索 Google 文档,官方文档说 ExoPlayer 这个播放器功能强大,什么都支持,于是我就去研究这个开源播放器了。不过给大家一个很不错的链接,学习这篇文章基本就足够了。
【https://www.iambigboss.top/post/37754_1_1.html】,默认可以播放本地的 ts 格式视频,但是 1920 x 1080 的却播放不了,后来发现,在创建 MediaSource 时,需要设置 TS 的 Flags,基本如下:

DefaultExtractorsFactory defaultExtractorsFactory = new DefaultExtractorsFactory();defaultExtractorsFactory.setTsExtractorFlags(FLAG_DETECT_ACCESS_UNITS | FLAG_ALLOW_NON_IDR_KEYFRAMES);return new ExtractorMediaSource.Factory(dataSourceFactory).setExtractorsFactory(defaultExtractorsFactory).createMediaSource(uri);

我测试的时候,发现 FLAG_DETECT_ACCESS_UNITS 这个 flags 对我有效的,github 的 issue 中,有人指出 FLAG_ALLOW_NON_IDR_KEYFRAMES 这个有效。

但是这个也有点问题,播放我的 ts 视频时,它的进度条那里有问题,读不出一些参数,导致进度条无法拖拽控制,无法快进和快退。

后来我尝试了一下 VideoView 这个控件,这个控件也是可以播放 ts 格式视频的,可以使用官方的 MediaController 作为菜单栏控制,也可以自己写一个菜单栏控制,然而我发现 VideoView 内部也是 MediaPlayer 实现的,我仔细读了读我之前的视频播放代码,发现了 mp4 文件过滤的这个问题,去掉之后,发现 MediaPlayer 也是可以播放 ts 格式的,视频的播放时长也可以获取到,可以自定义一个 SeekBar 实现拖拽播放。

Android 播放本地 ts 格式视频相关推荐

  1. android xml mpg格式,急求: android如何对mpg格式视频实现在线播放?

    急求: android怎么对mpg格式视频实现在线播放??? 对于3GP格式的视频都直接可以进行播放,但是对mpg格式谈话对话框提示无法播放此视频.是不是mpg格式的还需要我特别进行格式转化呢? 播放 ...

  2. android 图片读写,Android读取本地照片和视频相册

    前言 项目中经常要选择本地照片或者视频的需求,如果去扫描整个SD卡就太耗时间,其实Android系统在启动时就已经把整个设备中的多媒体文件信息(文件名,类型,大小等)都存到了数据库,然后提供了Cont ...

  3. 解决WIN10播放AVI等格式视频黑屏只有声音的问题

    需要用到的软件:K-Lite Codec Pack 下载地址: http://www.codecguide.com/download_kl.htm K-Lite Codec Pack是世界闻名,备受好 ...

  4. unity3d播放透明mov格式视频的一种方式

    首先说明这个是利用shader来实现透明,并不是使用含有透明通道的mov视频 网上查了unity好像没有自带的方法来支持透明通道的mov格式视频 但是可以用shader实现,mov如果带了透明通道也是 ...

  5. Android如何播放h.264格式视频

    关于h.264格式的视频文件播放,我们可以通过android.media.MediaCodec这个接口去解码实现,这个对搞流媒体,安防实时视频传输的朋友应该很熟悉,这边只是个demo,有需要的同学自行 ...

  6. electron播放本地任意格式的视频

    目录 说明 npm依赖 核心代码 创建一个独立的video-server.js文件,在子里程中运行,开启http服务 创建一个独立的server-child.js文件,开启子里程运行video-ser ...

  7. VUE项目中优雅使用EasyPlayer实时播放摄像头多种格式视频

    EasyPlayer 介绍 简介:集播放http-flv, hls, websocket 于一身的H5视频直播/视频点播播放器, 使用简单, 功能强大: 功能支持: 支持 MP4 播放 支持 m3u8 ...

  8. 使用ffmpeg将mp4格式视频元数据信息转到视频第一帧、转换mp4为ts格式视频

    最近在研究web一些播放器,videojs\ckplayer\jwplayer等各种页面播放器,发现在播放视频的时候,有些mp4格式的视频是不能够边缓存边播放的,在网上查阅了一些资料,发现是这些mp4 ...

  9. android 播放本地mp3和播放远程mp3

    主界面MainActivity的代码: import java.io.IOException; import android.app.Activity; import android.media.Me ...

  10. Android中本地图片资源以及视频录音资源的获取

    经常使用到本地图片的获取,还有录音之类,所以就稍微整理了一下,模式都是差不多的,大家可以参考一下. 这里写代码片package com.ly.day72_camera; import android. ...

最新文章

  1. python程序间通信,python 实现 socket 进程间通信
  2. [BZOJ3595][SCOI2014]方伯伯的OJ(裂点Splay)
  3. 农业谋定投资-农业大健康·万祥军:解读胡春华补三农短板
  4. HDU2176 【 Nim博弈】 SG函数求解
  5. PHP函数参数传递方法的具体改进技巧
  6. “Python简直万能!”拜托快醒醒!
  7. c#queue_带有C#示例的Queue.CopyTo()方法
  8. springboot2源码3-自动配置
  9. linux执行命令带时间戳,Linux查看History记录加时间戳的小技巧
  10. 豆瓣书籍数据爬取与分析
  11. onConfigurationChanged方法的使用
  12. 消息队列常见的使用场景
  13. 怎么用手机当电脑摄像头?安卓苹果都可以,巨简单的N种方案任君挑选
  14. MSM8937的sbl1和CDT
  15. 实现背景轮播登录页面
  16. android markdown简历,Markdown+GitHub制作DIY简历
  17. java中的match函数_javascript中match函数的用法小结
  18. Docker进阶实战
  19. v4l2架构专题模块handler分析 -- handler ctrl的注册2
  20. linux mock 使用

热门文章

  1. 软件测试常见性能问题案例分析
  2. oracle优化方法,九大Oracle性能优化基本方法详解
  3. 批量给视频加水印的快速方法
  4. MySQL-Front设置中文
  5. ubuntu中非常好用的PDF软件—okular
  6. opensips mysql_opensips中使用mysql实现用户认证
  7. 极域教室管理软件全屏广播窗口化,解除网络限制,阻止老师监控进程,阻止黑屏安静,强制杀死极域进程等
  8. (15)FPGA与CPU区别
  9. JAVA 异或校验byte数组
  10. MATLAB内外插值