基于Android系统的YouTube客户端开发

2014-02-27 13:16马颜军
网络安全技术与应用 2014年4期
关键词:播放器供稿开发者

马颜军

(辽宁警察学院 辽宁 116036)

0 引言

YouTube是目前世界上最大最流行的视频分享站点,该站点每天增加几十亿个页面视图和数十万个视频文件。它不仅给用户提供大量丰富的视频内容,还允许用户在任何时刻任何地点上传自己的视频[1]。

YouTube的另一个重要的特点是它提供数据API和播放器API。通过数据API,开发者可以将 YouTube 的功能整合到自己开发的应用中,并且可以执行搜索、上传视频、创建播放列表等更多操作。通过播放器API,可以对YouTube视频播放进行控制,可以设置播放器界面,甚至构建自己的播放器控件[2]。

本文主要研究YouTube数据API在Android系统中的应用,研究如何通过YouTube数据API 访问视频内容,并将访问的内容集成到Android系统的应用中,实现视频元内容显示、关键字检索等功能。

1 YouTube视频元格式

YouTube数据API是用来获取YouTube视频数据的,在研究YouTube数据API在Android系统中的应用之前,需要先了解一下YouTube数据API返回的视频数据格式。

YouTube数据API返回一个包含多个视频元数据的纲要。其中,每个视频元都是一个 Atom 供稿,该供稿的根标记是标记,每个标记包含一个或多个 标记,每个 标记才真正包含一个视频元的相关数据。例如, 中的 、<published>、<updated>元素分别表示视频元的作者、标题、上传时间、更新时间信息;<entry> 中的 <media:group> 元素包含了视频元的详细信息,如检索关键字、缩略图链接、视频播放器链接等信息;<entry>中的<yt:statistics> 元素包含视频的观看次数,<gd:rating> 元素提供视频评价得分的相关信息[2]。</p><p><feed>标记和<entry>标记包含了大量信息,这些信息可以自由地应用在Android系统的应用程序中,也正因这些丰富的信息,使得YouTube的应用变得多样和便捷。</p><h2>2 YouTube数据API</h2><p>YouTube数据API是一种基于REST的服务,YouTube数据API作为客户端首先向服务器发送一个指定资源的HTTP请求。这个HTTP请求类似于一个查询语句,而且具有一个或多个输入参数。服务器收到该请求后,使用Atom或RSS格式响应并回复该查询,该响应可以在支持 XML的任何客户端内进行解析[1]。</p><p>基于上面的原理,使用YouTube数据API时,一个重要的部分就是如何构造HTTP请求。由于YouTube数据API可以获取标准视频供稿和指定视频供稿的视频,所以根据获取的视频供稿类型的不同,HTTP请求构造分为标准视频供稿请求和指定视频供稿请求。</p><h3>2.1 标准视频供稿请求</h3><p>标准视频供稿是包含YouTube 用户行为的视频列表(例如评分最高的视频供稿和观看次数最多的视频供稿),或者是由YouTube官方挑选的视频列表(例如近期精选视频供稿),许多此类供稿均显示在YouTube 官方的视频标签页中。YouTube 每隔几分钟就会更新一次标准供稿[2]。</p><p>标准视频供稿请求中,供稿ID为top_rated、top_favorites、most_viewed、most_discussed 和 most_responded的标准供稿均支持time参数。通过此参数可以获取仅包含前一天、前一周、前一个月的相关视频。例如,检索前一天评分最高的视频列表的HTTP请求为http://gdata.youtube.com/feeds/api/standardfeed s/top_rated?time=today。</p><p>标准视频供稿还支持通过指定regionID获取指定区域、指定类别的视频。例如,获取台湾地区评分最高的喜剧列表的H TTP请求为 http://gdata.youtube.com/feeds/api/standardfeeds/T W/top_rated_Comedy。如果HTTP请求中指定了regionID,那么指定的类别在相应的指定区域中必须是能够浏览的。例如,开发者可以构造在台湾评分最高的新闻视频供稿的请求,因为“新闻”在台湾是可以浏览的类别。但是,无法构造在美国评分最高的新闻视频的请求,因为“新闻”在美国是不可浏览的类别。</p><h3>2.2 指定视频供稿请求</h3><p>指定视频供稿请求是开发者自定义条件的视频供稿请求。开发者在YouTube提供的查询参数范围内,按照固定的格式和自定义的参数,构造HTTP请求,获取想要的视频供稿。</p><p>指定视频供稿请求的格式,前端固定为 http://gdata.youtube.com/feeds/api/videos,请求后面的内容需要开发者自定义参数[2]。比如,想获取视频标题中包含basketball的视频集,可以利用 q参数构造 HTTP请求 http://gdata.youtube.com/feeds/api/videos?q=basketball。</p><p>此外,开发者还可以在请求中增加start-index 参数指定获取视频的开始偏移量,max-results参数指定获取的视频最大数,此参数与start-index参数结合使用,可确定视频集返回的结果。Orderby参数用于对搜索结果集中的视频进行排序,此参数的有效值包括 published(发布时间)、viewCount(观看次数)和 r ating(评价)。例如,HTTP请求http://gdata.youtube.com/feed s/api/videos?q=football &orderby=published&start-index=11&ma x-results=10获取的是视频标题中含有 football,而且按照发布时间排序后,从第11个视频开始的10个视频集。</p><h2>3 YouTube数据API在Android系统中的应用</h2><p>通过以上对YouTube数据API的研究,可以将这些内容应用到Android系统的应用开发中,开发YouTube应用的客户端。</p><p>Android系统是一个基于Linux核心的开放的操作系统,A ndroid在采用Linux核心的基础上,提供了各种函数库,以及一个完整的应用程序框架。它提供Google自制的应用程序运行环境(Dalvik),并提供基于 Eclipse集成开发环境的免费、跨平台(w indows、Mac、Linux)开发工具(SDK),这使得开发人员很容易在Android平台上开发各种应用[3]。</p><h3>3.1 系统图</h3><p>Android系统结构分为四层,从高到低分别是应用层、应用框架层、系统运行库层、Linux内核层。应用层是运行在虚拟机上的程序;应用框架层是Google的核心应用使用的框架;系统运行库层是Android提供的一些支持各个组件的C/C++库;L inux内核层包含了安全性、内存管理、进程管理、驱动模型、网络协议栈等,同时也作为硬件和软件栈的抽象层[4]。</p><p>利用YouTube数据API开发的YouTube应用组入Android系统后的系统结构图,如图1。YouTube应用通过YouTube数据API访问YouTube云端数据,在Android端实现视频显示、检索、播放控制等功能。</p><h3>3.2 代码</h3><p>在Android系统中利用YouTube数据API开发的客户端应用代码量大,由于篇幅限制,只列出了使用YouTube数据API的主要代码。</p><p>获取YouTube数据情报的部分主要代码如下。</p><p><img src="https://img.fx361.cc/images/2023/0319/c8d129880a556b8bd6b252377d361c694709ee43.webp"/></p><p>获取YouTube搜索情报的部分主要代码如下。</p><p><img src="https://img.fx361.cc/images/2023/0319/55aa89d1ee72b4df72880ce14b094ee06d9f0dd5.webp"/></p><p>获取YouTube详细情报的部分主要代码如下。</p><p><img src="https://img.fx361.cc/images/2023/0319/18cebe8f88ee0b3ae9b04993579426c99179d8e9.webp"/></p><h2>4 结束语</h2><p>本文对YouTube数据API进行了深入研究,包括YouTube数据API提供的视频元格式、使用YouTube数据API时HTTP请求的种类,以及HTTP请求的构造方法,最后将YouTube数据API应用到Android系统中,开发了YouTube的客户端应用。</p><p>[1]Vikram Vaswani.IBM developerW orks:结合使用 YouTube API 和 PHP.</p><p>[2]Google Developers.https://developers.google.com/youtube/ge tting_started?hl=zh-cn#data_api</p><p>[3]盖索林,王世江.Android开发入门指南(第二版)[M].人民邮电出版社,2009.</p><p>[4]杨丰盛.Android应用开发揭秘[M].机械工业出版社,2011.</p></p> <!-- <div class="article_pdf"><a href="https://cimg.fx361.com/kkb.apk">查看pdf文档请下载app</a></div>--><div class="article_love"> <div class="title">猜你喜欢</div> <div class="article_love_keyword"><span><a href="/tags/0/d/afb2bff0a16ee496/1.html" target="_blank">播放器</a></span><span><a href="/tags/5/7/ce044af2a6e392eb/1.html" target="_blank">供稿</a></span><span><a href="/tags/c/e/203e81f464aed8da/1.html" target="_blank">开发者</a></span></div> <div class="article_love_news"><dd><a class="txt_title" href="/page/2020/1209/7790302.shtml" target="_blank" title="The Old Brass Wagon">The Old Brass Wagon</a><div class="rsorc"><a href="/bk/ydklyyznj/202010.html" class="ly" title="阅读(快乐英语中年级)(2020年10期)">阅读(快乐英语中年级)(2020年10期)</a><span class="txt">2020-12-09</span></div></dd><dd><a class="txt_title" href="/page/2019/1209/13245736.shtml" target="_blank" title="Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器">Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器</a><div class="rsorc"><a href="/bk/jtyyjs/201911.html" class="ly" title="家庭影院技术(2019年11期)">家庭影院技术(2019年11期)</a><span class="txt">2019-12-09</span></div></dd><dd><a class="txt_title" href="/page/2019/0530/12194793.shtml" target="_blank" title="基于STM32的MP3播放器设计">基于STM32的MP3播放器设计</a><div class="rsorc"><a href="/bk/dzzz/20199.html" class="ly" title="电子制作(2019年9期)">电子制作(2019年9期)</a><span class="txt">2019-05-30</span></div></dd><dd><a class="txt_title" href="/page/2018/1226/13518317.shtml" target="_blank" title="Moon ACE播放器/放大器一体机">Moon ACE播放器/放大器一体机</a><div class="rsorc"><a href="/bk/jtyyjs/201811.html" class="ly" title="家庭影院技术(2018年11期)">家庭影院技术(2018年11期)</a><span class="txt">2018-12-26</span></div></dd><dd><a class="txt_title" href="/page/2016/1227/432927.shtml" target="_blank" title="“85后”高学历男性成为APP开发新生主力军">“85后”高学历男性成为APP开发新生主力军</a><div class="rsorc"><a href="/bk/jj/201629.html" class="ly" title="经济(2016年29期)">经济(2016年29期)</a><span class="txt">2016-12-27</span></div></dd><dd><a class="txt_title" href="/page/2016/0310/691118.shtml" target="_blank" title="16%游戏开发者看好VR">16%游戏开发者看好VR</a><div class="rsorc"><a href="/bk/chipxdn/20163.html" class="ly" title="CHIP新电脑(2016年3期)">CHIP新电脑(2016年3期)</a><span class="txt">2016-03-10</span></div></dd><dd><a class="txt_title" href="/page/2015/1014/15982525.shtml" target="_blank" title="播放器背板注塑模具设计">播放器背板注塑模具设计</a><div class="rsorc"><a href="/bk/cnsuliao/20158.html" class="ly" title="中国塑料(2015年8期)">中国塑料(2015年8期)</a><span class="txt">2015-10-14</span></div></dd><dd><a class="txt_title" href="/page/2008/1223/4079718.shtml" target="_blank" title="Jokes and Humor">Jokes and Humor</a><div class="rsorc"><a href="/bk/zxsyywyjxyyj/200812.html" class="ly" title="中学生英语·外语教学与研究(2008年12期)">中学生英语·外语教学与研究(2008年12期)</a><span class="txt">2008-12-23</span></div></dd><dd><a class="txt_title" href="/page/2008/1215/4079722.shtml" target="_blank" title="Jokes and Humor">Jokes and Humor</a><div class="rsorc"><a href="/bk/zxsyywyjxyyj/200810.html" class="ly" title="中学生英语·外语教学与研究(2008年10期)">中学生英语·外语教学与研究(2008年10期)</a><span class="txt">2008-12-15</span></div></dd><dd><a class="txt_title" href="/page/2008/0928/4073624.shtml" target="_blank" title="Results and Roses">Results and Roses</a><div class="rsorc"><a href="/bk/zxyyydjxzdb/20088.html" class="ly" title="中学英语园地·教学指导版(2008年8期)">中学英语园地·教学指导版(2008年8期)</a><span class="txt">2008-09-28</span></div></dd></div> </div><div class="other_pel mt80"> <p class="fl"><a href="/bk/wlaqjsyyy/20144.html" target="_blank"><img src="https://img.fx361.cc/images/2023/0319/83997299f05ee746be8b0a084e2348c405adfcce.webp" alt=""></a><span class="p1"><a href="/bk/wlaqjsyyy/" target="_blank">网络安全技术与应用</a></span><span class="p2"><a href="/bk/wlaqjsyyy/20144.html" target="_blank">2014年4期</a></span></p> <dl class="fl"><dt>网络安全技术与应用的其它文章</dt><dd><a href="/page/2014/0227/19049158.shtml" title="OFDM的技术原理及仿真分析">OFDM的技术原理及仿真分析</a></dd><dd><a href="/page/2014/0227/19049939.shtml" title="Authorware中的ODBC">Authorware中的ODBC</a></dd><dd><a href="/page/2014/0227/19049250.shtml" title="数字图书馆联盟中概率数据集成系统上的top-k查询">数字图书馆联盟中概率数据集成系统上的top-k查询</a></dd><dd><a href="/page/2014/0227/19049908.shtml" title="基于J2EE的运动会报名系统的设计与实现">基于J2EE的运动会报名系统的设计与实现</a></dd><dd><a href="/page/2014/0227/19050011.shtml" title="基于Flash Media Server的流媒体服务跨平台直播">基于Flash Media Server的流媒体服务跨平台直播</a></dd><dd><a href="/page/2014/0227/19050096.shtml" title="基于Cisco设备的IPv6地址探讨与实践">基于Cisco设备的IPv6地址探讨与实践</a></dd></dl> </div></div> </div> </div> <div class="sidebarR"> <!-- tab选项卡 --> <div class="tab01 mb20"><div class="tabArrow"></div><div class="tabItem"><div class="tabTit"><a href="#">杂志排行</a></div> <div class="tabCont"><ol><li><p class="row01"><span class="topNum">1</span><a href="/bk/hzjjykj/202413.html" class="row01a">《合作经济与科技》</a><span class="row01_fr"><a href="/bk/hzjjykj/202413.html">2024年13期</a></span></p></li><li><p class="row01"><span class="topNum">2</span><a href="/bk/hyyjk/202410.html" class="row01a">《婚育与健康》</a><span class="row01_fr"><a href="/bk/hyyjk/202410.html">2024年10期</a></span></p></li><li><p class="row01"><span class="topNum">3</span><a href="/bk/swyzhsby/20247.html" class="row01a">《思维与智慧·上半月》</a><span class="row01_fr"><a href="/bk/swyzhsby/20247.html">2024年7期</a></span></p></li><li><p class="row01"><span class="topNum">4</span><a href="/bk/tckjyjs/202311.html" class="row01a">《陶瓷科学与艺术》</a><span class="row01_fr"><a href="/bk/tckjyjs/202311.html">2023年11期</a></span></p></li><li><p class="row01"><span class="topNum">5</span><a href="/bk/zgsr/20247.html" class="row01a">《中国商人》</a><span class="row01_fr"><a href="/bk/zgsr/20247.html">2024年7期</a></span></p></li><li><p class="row01"><span class="topNum">6</span><a href="/bk/jsbl/20244.html" class="row01a">《教师博览》</a><span class="row01_fr"><a href="/bk/jsbl/20244.html">2024年4期</a></span></p></li><li><p class="row01"><span class="topNum">7</span><a href="/bk/sdjy/20246.html" class="row01a">《师道·教研》</a><span class="row01_fr"><a href="/bk/sdjy/20246.html">2024年6期</a></span></p></li><li><p class="row01"><span class="topNum">8</span><a href="/bk/zgdwmy/20246.html" class="row01a">《中国对外贸易》</a><span class="row01_fr"><a href="/bk/zgdwmy/20246.html">2024年6期</a></span></p></li><li><p class="row01"><span class="topNum">9</span><a href="/bk/bl/20246.html" class="row01a">《伴侣》</a><span class="row01_fr"><a href="/bk/bl/20246.html">2024年6期</a></span></p></li><li><p class="row01"><span class="topNum">10</span><a href="/bk/jjjsxzxx/20246.html" class="row01a">《经济技术协作信息》</a><span class="row01_fr"><a href="/bk/jjjsxzxx/20246.html">2024年6期</a></span></p></li></ol> </div></div> </div> </div> <div class="clr"></div> </div> </div> <!--div class="advertisement"> </div--> <div class="footer"> <p><a href="/aboutus/index.html">关于参考网</a></p> </div> <script> if ('serviceWorker' in navigator) { window.onload = function () { navigator.serviceWorker.register('/sw.js'); }; } </script> <script type="text/javascript" src="https://s1.pstatp.com/cdn/expire-1-M/jquery/3.4.0/jquery.min.js"></script> <script type="text/javascript" src="https://s1.pstatp.com/cdn/expire-1-M/sticky-kit/1.1.3/sticky-kit.min.js"></script> <script type="text/javascript" src="https://s1.pstatp.com/cdn/expire-1-M/jquery.lazyload/1.9.1/jquery.lazyload.js"></script> <script type="text/javascript"> document.write('<script src="https://img.fx361.cc/cdn/w/index_cc.js"><\/script>'); </script> </body> </html>