??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕日韩精品有码视频,а√在线中文在线新版,国产91亚洲精品一区二区三区http://www.aygfsteel.com/mahang/archive/2011/10/06/365026.html马航马航Thu, 06 Oct 2011 01:37:00 GMThttp://www.aygfsteel.com/mahang/archive/2011/10/06/365026.htmlhttp://www.aygfsteel.com/mahang/comments/365026.htmlhttp://www.aygfsteel.com/mahang/archive/2011/10/06/365026.html#Feedback0http://www.aygfsteel.com/mahang/comments/commentRss/365026.htmlhttp://www.aygfsteel.com/mahang/services/trackbacks/365026.html阅读全文
]]>- 手机视频文g格式解析?3GP/MP4http://www.aygfsteel.com/mahang/archive/2011/10/03/365027.html马航马航Mon, 03 Oct 2011 02:54:00 GMThttp://www.aygfsteel.com/mahang/archive/2011/10/03/365027.htmlhttp://www.aygfsteel.com/mahang/comments/365027.htmlhttp://www.aygfsteel.com/mahang/archive/2011/10/03/365027.html#Feedback0http://www.aygfsteel.com/mahang/comments/commentRss/365027.htmlhttp://www.aygfsteel.com/mahang/services/trackbacks/365027.html
前言Q做完了(jin)手机全能播放器的目Q?nbsp;又要告别几个月来q肩作战Q即去北京发展的Manager zhu。准备把做过?GP/FLV/AVI格式整理一遍, 是对几个月辛苦成果的ȝQ?nbsp;也ؓ(f)后来者提供一些参考?/span>
1. 概述
行的文件格式背后都有大公司的支持。FLV得益于ADOBE公司推动的网l视频分享风潮,而AVI则是MICROSOFT首创的RIFF卌频和音频交织在一起同步播放?nbsp;3GP/MP4是APPLE提出q得到ISO标准支持作ؓ(f)NOKIA{手机的默认视频格式?GP是MP4格式在手Z的简化版。MP4的codecl合一般是mpeg4 + AAC, 3GP则按版本演进分ؓ(f)3gpp r5(h.263/mpeg4 + AMR-NB/AMR WB), 3gpp r6(增加h.264视频和aacPlus音频支持)?/span>
有h?x)把MP4和MPEG4搞Q?nbsp;前者是文g容器(container)Q后者是视频~码格式Q?nbsp;容器的作用是把压~编码后的视频和音频数据可能紧凑的排布Q就好像阿甘的y克力盒子Q你q不知道盒子里有什么, 但你可以按照既定的线索解开文gQ取Z需要的数据?/span>
文g格式一般包括以下三要素Q?/span>
header: 标记文gcdQ音视频码流的基本属性信?/span>
index: 索引表,每个frame有对应的offset,size,timestamp.
stream: 真正的音视频数据?/span>
M文g格式都应该有以上3要素?nbsp;当然AVI视频没有索引也能播放Q但不能拖放seekQ需要自己重建烦(ch)引。解析器(demuxer)Ҏ(gu)frame_id扑ֈ其在文g中的offset和size,然后d出来解码q播放?/span>
2. 文g格式分析
下面来分析一?GP/MP4文g格式。APPLE的格式有2个特点,1. 排布紧凑几乎没有冗余数据(AVI则有很多junk数据)Q?.韌频码数据可随意存放而不需按时间顺序排布?/span>
3gp文g׃pd的box(atom)l成。每个box的结构都?字节的size,4字节的type, q有一些data数据。用mp4info查看3gp文g的数据排布如下图Q?/span>

如上? ftyp是表C文件的版本信息Q?nbsp;mdat存放文字Q音视频{数据。你可能要问Q这些音视频数据怎么扑ֈ呢? 是通过moov box里的子box trakQ里面存攄韌频的属性描qC?qing)每个sample的烦(ch)引?/span>
3. 关于sample atoms
video和audio的码属?如视频width/height,codec id, 音频采样率声道数{?存放在stsd box里; 下面着重介lMP4高效压羃的精华:(x)stts,stss,stsc,stsz,stco五个box。对比AVI的烦(ch)引表是每个sample都有对应的id,flag,offset,sizeQ?GP的高效烦(ch)引方式可以把AVI转码成同码率的MP4后,文gsize减小成原来的20-30%!
1. stts atom(time to sample atomsQ见quicktime format 文档?-28 标准文档点击下蝲): 存储?jin)sample的时间信息。stts能让很方便的Ҏ(gu)timestamp扑ֈ对应的sampleQ或者获取某个sample对应的timestamp. sttstable记录着有相同duration的sample的数量count和时长dutation?/span>
2. stss atom(sync sample atomQ见文档?-31): 存储?jin)每个关键的sample id?nbsp;stss能让你很方便的找到当前最q的关键帧?/span>
3. stsc atom(sample to chunk atom): sample存放在chunk里ؓ(f)?jin)允怼化的数据d。比如音频sample size都很(amr-nb sample size?2字节Q, 每次d一个sample开销太大Q?nbsp;可一ơ性读所在chunk里一堆sample?/span>
4. stsz atom(sample size atom): stsz可以描述每个sample的size.
5. stco atom(chunk offset atoms): stco描述?jin)每个chunk在文件中的绝对偏UM|。该offset可以?2位的
也可以是64位的Q后者用来支持处理超大文件?/span>
4 .使用sample atoms来处理播放流E?/span>
· 查找sample
1Q确定时_(d)相对于媒体时间坐标系l?/span>
2Q检查time-to-sample atom来确定给定时间的sample序号?/span>
3Q检查sample-to-chunk atom来发现对应该sample的chunk?/span>
4Q从chunk offset atom中提取该trunk的偏U量?/span>
5Q利用sample size atom扑ֈsample在trunk内的偏移量和sample的大?/span>
例如Q如果要扄1U的视频数据Q过E如下:(x)
1Q?nbsp;W?U的视频数据相对于此?sh)?jing)的时间ؓ(f)600
2Q?nbsp;(g)查time-to-sample atomQ得出每个sample的duration?0Q从而得出需要寻扄600/40 = 15 + 1 = 16个sample
3Q?nbsp;(g)查sample-to-chunk atomQ得到该sample属于W?个chunk的第一个sampleQ该chunk共有4个sample
4Q?nbsp;(g)查chunk offset atom扑ֈW?个trunk的偏U量?0472
5Q?nbsp;׃W?6个sample是第5个trunk的第一个sampleQ所以不用检查sample size atomQtrunk的偏U量x(chng)该sample的偏U量20472。如果是q个trunk的第二个sampleQ则从sample size atom中找到该trunk的前一个sample的大,然后加上偏移量即可得到实际位|?/span>
6Q?nbsp;得到位置后,卛_取出相应数据q行解码Q播?/span>
· 查找关键?/span>
查找q程与查找sample的过E非常类|只是需要利用sync sample atom来确定key frame的sample序号
定l定旉的sample序号
(g)查sync sample atom来发现这个sample序号之后的key frame
(g)查sample-to-chunk atom来发现对应该sample的chunk
从chunk offset atom中提取该trunk的偏U量
利用sample size atom扑ֈsample在trunk内的偏移量和sample的大?/span>
5 .3GP/MP4相关资源
quicktime file format specification: 最权威的格式文?nbsp;点击下蝲
开源的3GP/MP4解析器:(x) ffmpeg, GPAC, helix, google opencore{?nbsp;

]]>- 经典的Android开源项?/title>http://www.aygfsteel.com/mahang/archive/2011/10/03/365028.html马航马航Mon, 03 Oct 2011 01:47:00 GMThttp://www.aygfsteel.com/mahang/archive/2011/10/03/365028.htmlhttp://www.aygfsteel.com/mahang/comments/365028.htmlhttp://www.aygfsteel.com/mahang/archive/2011/10/03/365028.html#Feedback0http://www.aygfsteel.com/mahang/comments/commentRss/365028.htmlhttp://www.aygfsteel.com/mahang/services/trackbacks/365028.html
Android开发又带来新一轮热潮,很多开发者都投入到这个浪潮中M(jin)Q创造了(jin)许许多多相当优秀的应用。其中也有许许多多的开发者提供了(jin)应用开 源项目,贡献Z们的智慧和创造力。学?fn)开源代码是掌握技术的一个最x(chng)式。下面推荐几个应用开源项目,q些目不仅提供?jin)优U的创意,也可以直接掌?Android内核的接口用:(x)
1、Android团队提供的示例项?br style="word-wrap: break-word; padding: 0px; margin: 0px;" /> 如果不是从学?fn)Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Androidq个框架上开发。由Android的核?j)开发团队提供了(jin)15个优U的示例项目,包含?jin)游戏、图像处理、时间显C、开始菜单快h式等?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://code.google.com/p/apps-for-android/
2?Remote Droid
RemoteDroid是一个Android应用Q能够让用户使用自己的无U网l用无UK盘、触摸屏操作手机。这个项目ؓ(f)开发者提供了(jin)如网l连接、触摸屏手指q动{很好的样例?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://code.google.com/p/remotedroid/
3?TorProxy和Shadow
TorProxy应用实现?jin)Android手机无线는(sh)传通讯(TOR)Q和Shadow应用一起用,可以使用手机匿名上网。从该项目源代码中,可以掌握socketq接、管理cookie{方法?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://www.cl.cam.ac.uk/research/dtg/code/svn/android-tor/
4?Android SMSPopup
SMSPopup可以截获短信内容昄在一个(chng)泡Ş状的H口中。从q个目中可以掌握到如何使用内置的短信SMS接口?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://code.google.com/p/android-smspopup/
5?Standup Timer
Standup Timer应用用于控制站立?x)议旉Q类似秒表倒计Ӟ可以提醒每个人的讲话旉已到Q从而保证每个与?x)者用时间一栗从该项目的代码中,可以学会(x)如何使用旉函数。另外,q个目的代码是采用视图view、模型model严格分离的设计思\?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://github.com/jwood/standup-timer
6?Foursquare
是Foursquare.com的一个客L(fng)应用Q该应用主要分ؓ(f)两个模块QAPI(com.joelapenna.foursquare)和界面前?(com.joelapenna.foursquared)两部分。从该项目代码中Q可以学?x)如何同步、多U程、HTTPq接{技术?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://code.google.com/p/foursquared/
7?Pedometer
Pedometer应用用于记录你每天走路步数的。尽记录不一定精准,但是从这个项目中Q可以学?fn)几个不同的技术:(x)加速器交互、语x(chng)新、后台运行服务等?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://code.google.com/p/pedometer/
8?OpenSudoku-android
OpenSudoku是一个简单的?ji)宫格数独游戏。从代码中可以学?fn)到如何在视图中昄表格数据Q以?qing)如何和一个网站交互等技术?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://code.google.com/p/opensudoku-android/
9?ConnectBot
ConnectBot是Androidq_的一个客L(fng)安全壛_用。从该项目代码中Q可以学?fn)到很多Android安全斚w的内容,q些是你在开发应用时l常需要考虑的安全问题?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://code.google.com/p/connectbot/
10?WordPress的Android应用
当然在最后不能不提WordPress的Android应用?jin),q是WordPress官方开发团队提供的一个项目。从代码中可以学?fn)到XMLRPC调用Q当然还有更多的优秀内容Q?br style="word-wrap: break-word; padding: 0px; margin: 0px;" />地址Q?a target="_blank" style="word-wrap: break-word; color: #336699; text-decoration: underline; padding: 0px; margin: 0px;">http://android.svn.wordpress.org/trunk/ |

]]>
վ֩ģ壺
|
DZɽ|
|
|
ɳ|
|
|
ʤ|
|
|
|
ʵ|
կ|
|
|
|
|
пǰ|
|
|
ƽ|
|
|
|
|
|
ű|
ɿ|
|
ţ|
|
Ϸ|
ʻ|
|
|
|
|
|
|
|
|