关于电视机中DTV码流对android的Timer的影响

  在电视机系统的开发中,经常会用到模拟的信源(ATV/DTV)。最近在测试的时候发现,在DTV信源下,某个计时用的Timer突然就暂停了,百度一下这个Timer,大部分问的是怎么停止Timer的运行,而没有提到怎么让他不停止,囧。

  在挣扎了一段时间后,测试发现在DTV信源下才会出现该BUG,而在别的信源下不出现,推断是跟DTV信源有关。而在做数字电视的一个很大的特点在于,基本上都会拿DTV码流中的时间写到系统时间中,以确保系统时间和码流时间一致。到这里可能很多人都想到了,那就是Timer这个类本身的特点——Timer计时用的是绝对时间,简单来说就是跟系统时间相关的,一旦系统时间出现修改,那就很有可能影响Timer的计时——DTV码流中的时间如果和系统本身的时间不一致的话,那么可想而知Timer的计时将会因为码流的时间写入系统而出现错误。而在测试信源中,码流的信息往往都是不正确的,与当前系统的时间(一般来说会是网络获取的时间)肯定不一致,如果获取的这个时间是在一天前、一个月前甚至一年前,Timer也就出现了被终止的假象——实际上它一直在运行只是计时混乱了。

  解决的方法很简单,使用基于相对时间的类ScheduledExecutorService就可以了~具体用法可以自己百度一下,该类与系统时间不挂钩,所以可以随意使用,据说在高版本SDK中这个类其实已经完全可以取代Timer的地位了,连用法基本都是一致的。

时间: 2024-10-19 20:55:09

关于电视机中DTV码流对android的Timer的影响的相关文章

码流识别与传输

H.264基本语法简介 ????H.264相对以往的视频压缩编码标准来说,在语法结构上有很大的改变,体现在下面两个方面: ????1.取消帧级语法单元 ???? H.264语法中没有frame_header之类的语法单元,帧信息全部放在slice_header.SPS和PPS中.由于一帧图像可以对应多个slice,因此解码器无法通过解析类似frame_header的语法来识别码流的一帧数据 ????2.引入PPS.SPS等参数集概念 ???? 将一个视频序列(从IDR帧开始到下一个IDR帧之前的

H.264码流与帧结构

参考连接:http://blog.csdn.net/dxpqxb/article/details/7631304 H264以NALU(NAL unit)为单位来支持编码数据在基于分组交换技术网络中传输. NALU定义了可用于基于分组和基于比特流系统的基本格式,同时给出头信息,从而提供了视频编码和外部世界的接口. H264编码过程中的三种不同的数据形式: SODB 数据比特串-->最原始的编码数据,即VCL数据: RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trai

[转]【流媒體】H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流

[流媒體]H264—MP4格式及在MP4文件中提取H264的SPS.PPS及码流 SkySeraph Apr 1st 2012  Email:[email protected].com 一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装格式核心概念 1  MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of a

阅读源码的重要性:如厨师选食材,耍厨具——在Eclipse中如何查看Java、Android源码

首先,很多人说,不会看jdk中的源码就不叫学过Java.显然这是肯定的.打个比方:真正的厨师需要从食材的选取.加工,到最后的烹饪.装盘成型,甚至到最后给用户介绍食用方法等一整套流程走下来.而实际上很多厨师只是做了其中的一小部分,所以最多也只能叫得上"炒菜的",而不是一个厨师.而很多顶级餐厅强调选材,就是从源头上找到适合做某道菜的原料,甚至是反过来,得到一个供应链供应某种独特食材而专门为该材料设计某种烹饪技术.这就是从头至尾的资源最大化利用,其体现创新及内功的地方贯穿整个流水线!特别的,

H264码流中SPS PPS详解<转>

转载地址:https://zhuanlan.zhihu.com/p/27896239 1 SPS和PPS从何处而来? 2 SPS和PPS中的每个参数起什么作用? 3 如何解析SDP中包含的H.264的SPS和PPS串? 1 客户端抓包 在做客户端视频解码时,一般都会使用Wireshark抓包工具对接收的H264码流进行分析,如下所示: 在这里我们可以看到对解码视频起关键作用的SPS和PPS. 双击SPS内容如下: 双击PPS内容如下: 那么从上面的sps中我们知道图像的宽,高. 宽=(19+1

安卓中的瀑布流

过年没回家,宅在家里看了很多博客,顺手写一下自己的一些收货.. android中的瀑布流的实现原理,来自郭大神的CSDN 转载注明出处http://blog.csdn.net/guolin_blog/article/details/10470797 实现原理:瀑布流的布局方式虽然看起来好像排列的很随意,其实它是有很科学的排列规则的.整个界面会根据屏幕的宽度划分成等宽的若干列,由于手机的屏幕不是很大,这里我们就分成三列.每当需要添加一张图片时,会将这张图片的宽度压缩成和列一样宽,再按照同样的压缩比

码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别

GOP/ 码流 /码率 / 比特率 / 帧速率 / 分辨率 GOP(Group of picture) 关键帧的周期,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧.增加关键帧个数可改善质量,但是同时增加带宽和网络负载. 需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了.另一方面,在一个GOP中,P.B帧是由I帧预测得到的,当I帧的图像质量比较差时,

例程:如何使用PX2硬解码H.264裸码流 [CODE_PX2]Decode_RAW_H264_FILE

Rayeager PX2开发板具有非常强大的多媒体处理能力,如果需要调用硬件加速针对普通媒体文件/码流进行解码,只需按照安卓标准调用多媒体相关接口即可. 针对一些行业用户的特殊需求,Rayeager PX2实际上也开放了接口可以对H.264等裸码流进行解码. 这里提供一份代码即可实现H.264裸码流的解码,如果您具有一定的Android系统开发经验,很快就能理解并进行相关改写.使用方法: 在PX2的Android编译环境根目录下将代码解压,并进入ChipSPARK_PX2_H264_DECODE

ffmpeg+x264推送high422 10bit码流

一.目的 推送一条rtmp流,视频码流采用h264 high422 10bit编码 二.环境 1.linux系统:Red Hat Enterprise Linux Server release 5.8 2.ffmpeg:3.1.4 3.x264:git下来的最新代码(2016-10-21) 三.编译x264+ffmpeg 1.编译x264 ./configure --enable_static --bit-depth=10 make make install 默认安装库和头文件到/usr/loc