精华内容
下载资源
问答
  • 有了单个的计算机组成,这篇博客还加入了多媒体和网络的知识,这样更类似我们现实生活给计算机搭配上各种装扮(多媒体)和相互之间的桥梁(网络)。当然系统和网络的安全可靠性也是大家担忧的,需要我们好好学习! ...

              计算机组成原理与系统架构,都是电脑底层的一些东西,计算各种效率值,存储量,各类数制的转换等,感觉比较麻烦,需要记得公式挺多。有了单个的计算机组成,这篇博客还加入了多媒体和网络的知识,这样更类似我们现实生活给计算机搭配上各种装扮(多媒体)和相互之间的桥梁(网络)。当然系统和网络的安全可靠性也是大家担忧的,需要我们好好学习!


             计算机组成原理和系统架构有计算机的工作流程流水线,缓存,程序的存储管理等知识点:



             这里我们直接看这张大图,来了解每一块的知识点,向它们的内容和彼此之间的联系:



              当然,有了计算机组成的基础知识,我们来看看他身边的多媒体是如何很好的辅助他呢,多媒体我从基础概念,常见标准,压缩技术(为了提高存储的效率扩大存储的内容量)来进行简单总结:




              当然如今社会,电脑更是离不开网络,我们看看电脑是如何在网络中实现各种通讯,各种功能呢?我下下边五个方面说一下:


            先看前两个基本概念,和OSI模型,这是网络的大概框架知识:


              下边看网络中重要的IP知识,对于子网划分的地方自己还是有点晕,感觉还需要从多个方面来学习:


                当然最后一个就是网络传输中的一些知识了:



               当然,有了这些知识,我还想加上一下系统可靠,网络安全的一些知识,有了这些安全的知识,计算机才能正常的运行工作:


              综上为,计算工作原理和网络的一些基础知识的总结,当然对于安全方面也是非常重要的,由于是数据传输上的安全,这是我们现实生活中每个人都会关心的一个话题。



    展开全文
  • 沸腾展望新闻多媒体系统安全缺陷(通杀目前所有版本)转载请保留版权标记,谢谢 -------------------------------by 大蝉@...因为不是沸腾展望新闻多媒体系统本

    沸腾展望新闻多媒体系统安全缺陷(通杀目前所有版本)

    转载请保留版权标记,谢谢
    -------------------------------by 大蝉@http://blog.gsnsg.com/weblog/usual/ QQ:271607603------------------------------------------

    为什么说是安全缺陷不说是漏洞?因为不是沸腾展望新闻多媒体系统本身的代码问题,问题出在他们使用的zonGG广告系统上,所有版本都忠心耿耿的使用这个系统,都什么年代了,还用这玩艺,呵呵,不多说了,看代码吧:

    zongg/login.asp

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

    <!--#include file="config.asp"-->
    <%
    adsconn.open adsdata
    dim adssql,adsrs,admname,admpass
    admname=trim(request("username"))
    admpass=trim(request("password"))
    set adsrs=server.createobject("adodb.recordset")
    asql="select * from admin where admin='"&admname&"'"
    adsrs.open asql,adsconn,1,1
    if adsrs.bof and adsrs.eof then
    %>
    无此管理员!
    <%
    else
    if admpass=adsrs("passwd") then
    session("masterlogin")="superadvertadmin"
    session("admname")=adsrs("admin")
    session("aid")=adsrs("aid")
    Response.Redirect "index.asp"
    adsrs.close
    set adsrs=nothing
    adsconn.close
    set adsconn=nothing
    else
    %>
    密码错误!
    <%
    end if
    end if
    %>

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

    很明显admname没有做过滤,并且由于对admname是否存在做了判断,返回值不同,所以可以进行注入

    这个漏洞只能得到广告系统管理员密码,但是只能登陆广告系统后台,不能登陆沸腾后台,有人会说这有并没有什么危害,事实并非如此,广告后台可以添加 广告,而广告是纯JS执行,没有进行任何过滤,写什么JS就执行什么,广告代码在所有页面被调用,这就形成了严重的全站范围的跨站漏洞,拿管理员帐号,改 主页,挂马,想做什么做什么,危害大不大?

    建议修补方法

    修改zongg/login.asp内容为

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

    <!--#include file="config.asp"-->
    <%
    adsconn.open adsdata
    dim adssql,adsrs,admname,admpass
    DeInj_set = "'|;|and|(|)|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare"
    DeInj_code = split(DeInj_set,"|")
    admname=trim(request("username"))
    admpass=trim(request("password"))
    For DeInj_no=0 To Ubound(DeInj_code)
           If Instr(LCase(admname),DeInj_code(DeInj_no))<>0 Then
                 %>
                  非法参数!
                 <%
                Response.End
           end if
    next
    set adsrs=server.createobject("adodb.recordset")
    asql="select * from admin where admin='"&admname&"'"
    adsrs.open asql,adsconn,1,1
    if adsrs.bof and adsrs.eof then
    %>
    无此管理员!
    <%
    else
    if admpass=adsrs("passwd") then
    session("masterlogin")="superadvertadmin"
    session("admname")=adsrs("admin")
    session("aid")=adsrs("aid")
    Response.Redirect "index.asp"
    adsrs.close
    set adsrs=nothing
    adsconn.close
    set adsconn=nothing
    else
    %>
    密码错误!
    <%
    end if
    end if
    %>

    --------------------------------------------------- 
    展开全文
  • 多媒体框架

    千次阅读 2014-05-27 15:53:05
    多媒体框架

    多媒体播放框架

    多媒体核心框架涉及到的代码文件有:
    java层:
    frameworks/base/media/java/android/media/MediaPlayer.java

    jni层:
    frameworks/base/media/jni/android_media_MediaPlayer.cpp

    native层:
    frameworks/av/media/libmedia/Mediaplayer.cpp
    frameworks/av/include/media/Mediaplayer.h
    frameworks/av/media/libmediaplayerservice/MediaPlayerService.cpp
    frameworks/av/media/libmediaplayerservice/libmediaplayerservice/MediaPlayerService.h
    frameworks/av/media/libmediaplayerservice/libmediaplayerservice/MediaPlayerFactory.cpp
    MediaPlayerFactory.cpp以下就是具体的播放器的实现了。

    媒体播放的抽象层:

    frameworks/av/include/media/MediaPlayerInterface.h
    以上文件是播放器的abstract base class,类似于硬件抽象层(HAL),是每个具体的播放器都需要根据这个基类来实现对应的MediaPlayerInterface。

    多媒体播放的核心框架主要涉及到两条典型的数据流:
    一个是命令+命令的响应(cmd+respond)
    一个是事件(unsolicited)
         但凡用户跟后台服务一般都有如上的两个接口,如phone,wifi等核心模块,莫不是遵循以上的结构,只不过实现方式有差异。在这里命令和事件通道都是通过ibinder来实现,而phone和wifi模块的命令和事件通道都是通过socket通讯机制来实现的。那么为什么phone和wifi不通过ibinder来实现呢?因为phone的后台服务pppd以及wifi的后台服务wpa_supplicant,他们是linux的原生态代码,这些代码是在android诞生之前就有的,所以当他们提供的通讯机制就是使用的socket,那android本着最少修改的原则,当然就是还是原用了他本身自带的socket通讯来实现的;而多媒体服务这块,则是android自己重新规划实现的,所以他自然就使用他们自己的ibinder通讯机制。在很多场景下,android在条件合适的情况下,一般都会优先使用ibinder通讯,因为ibinder通讯相比socket通讯效率更高,安全性更好,这个后面单独开blog来论述。
    在讲native层的代码框架前,先上过类图:


    frameworks/av/include/media/IMediaPlayer.h定义了ImediaPlayer的binder接口
    frameworks/av/include/media/IMediaPlayerService.h定义了IMediaPlayerService的binder接口
    frameworks/av/include/media/IMediaPlayerClient.h定义了IMediaPlayerClient的binder接口

    上图中的黄色标识部分就是多媒体框架中的后台服务(media.player service),他运行于一个独立的进程中,他既包含了binder的服务器端(BnMediaPlayerService,BnMediaPlayer),也包含了binder的客服端(BpMediaPlayerClient);而蓝色标识的部分,则是媒体播放器的客服端,即player user process,他同样运行于用户所在的进程,客服端同样也包含binder的服务器端(BnMediaPlayerClient),也包含了binder的客服端(BpMediaPlayer,BpMediaPlayerService
    另外media.player service进程包含了两个binder实例,即两个binder服务器端(BnMediaPlayerService,BnMediaPlayer),他们在同一个进程里。那当一个remote ipc过来时,他们怎么区分出来该调用是该路由给BnMediaPlayerService还是路由BnMediaPlayer呢?该问题同样在我的另外的blog中来阐述。在这里只是提出这个问题,为下一篇blog做些知识上的铺垫。

    从binder的分类来讲:
    IMediaPlayerService对应的binder是注册到service manager中去的实名binder,见如下代码段:
    void MediaPlayerService::instantiate() {
        defaultServiceManager()->addService(
                String16("media.player"), new MediaPlayerService());
    }
    
    

    而ImediaPlayer和IMediaPlayerClient对应的binder都是匿名binder,在这里先说这些binder的作用。IMediaPlayerService binder其实只是起个桥梁的作用,目的是为了获取两个匿名binder:ImediaPlayer和IMediaPlayerClient。而ImediaPlayer binder对应前面讲个的用于应用通过这个binder向media service后台服务发送命令和接受命令的响应;而IMediaPlayerClient则是被media service后台服务用来向应用返回媒体播放事件的。
    IMediaPlayerService实名binder的获取方式:
    // establish binder interface to MediaPlayerService
    /*static*/const sp<IMediaPlayerService>&
    IMediaDeathNotifier::getMediaPlayerService()
    {
        ALOGV("getMediaPlayerService");
        Mutex::Autolock _l(sServiceLock);
        if (sMediaPlayerService == 0) {
            sp<IServiceManager> sm = defaultServiceManager();//实名服务的管理者
            sp<IBinder> binder;
            do {
                binder = sm->getService(String16("media.player"));//提供实名服务对应的名字,返回的是binder实例在客服端进程中的引用句柄号。
                if (binder != 0) {
                    break;
                }
                ALOGW("Media player service not published, waiting...");
                usleep(500000); // 0.5 s
            } while (true);
    
            if (sDeathNotifier == NULL) {
                sDeathNotifier = new DeathNotifier();
            }
            binder->linkToDeath(sDeathNotifier);
            sMediaPlayerService = interface_cast<IMediaPlayerService>(binder);//将Bpbinder cast to BpMediaPlayerService
    
        }
        ALOGE_IF(sMediaPlayerService == 0, "no media player service!?");
        return sMediaPlayerService;
    }
    而匿名binder是怎么获取的呢?
    分两部分讲,首先说IMediaPlayerClient binder是如果告诉后台服务的:
    virtual sp<IMediaPlayer> create(//frameworks/av/media/libmedia/IMediaPlayerService.cpp
                const sp<IMediaPlayerClient>& client, int audioSessionId) {
            Parcel data, reply;
            data.writeInterfaceToken(IMediaPlayerService::getInterfaceDescriptor());
            data.writeStrongBinder(client->asBinder());//将IMediaPlayerClient binder实体传递到binder驱动中
            data.writeInt32(audioSessionId);
    
            remote()->transact(CREATE, data, &reply);
            return interface_cast<IMediaPlayer>(reply.readStrongBinder());//获取ImediaPlayer binder实体在当前进程中的引用句柄,并将它封装在BpMediaPlayer实例中。
        }

    而服务器端是如何将ImediaPlayer binder实体传递到应用段所在的进程的呢?
    status_t BnMediaPlayerService::onTransact(//frameworks/av/media/libmedia/IMediaPlayerService.cpp
        uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
    {
        switch (code) {
            case CREATE: {
                CHECK_INTERFACE(IMediaPlayerService, data, reply);
                sp<IMediaPlayerClient> client =
                    interface_cast<IMediaPlayerClient>(data.readStrongBinder());//获取BpMediaPlayerClient
                int audioSessionId = data.readInt32();
                sp<IMediaPlayer> player = create(client, audioSessionId);//创建BnMediaPlayer实体
                reply->writeStrongBinder(player->asBinder());//将BnMediaPlayer binder实体写到驱动中。
                return NO_ERROR;
            } break;
            case DECODE_URL: {

    以上就是匿名binder实体如何通过实名binder实体来进行传递的概要说明。

    而播放器的播放调用过程如下:
    MediaPlayer  mMediaPlayer = new MediaPlayer( );
    mMediaPlayer.setDataSource(mContext, mUri);
    mMediaPlayer.setDisplay(mSurfaceHolder);
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mMediaPlayer.prepareAsync();
    mMediaPlayer.start();

    下面以setDataSource调用过程为列来说明用户的命令是如何从客服端发送到媒体后台服务的。

    MediaPlayer::setDataSource //MediaPlayer.cpp
      |-->const sp<IMediaPlayerService>& service(getMediaPlayerService());//获取BpMeidaPlayerService
      |-->sp<IMediaPlayer> player(service->create(this, mAudioSessionId));//返回BpMediaPlayer
      |-->player->setDataSource(url, headers)//调用BpMediaPlayer.setDataSource(ImediaPlayer.cpp)
      以上调用会通过binder调用到binder实体对应的函数:
      MediaPlayerService::Client::setDataSource
            |-->MediaPlayerFactory::getPlayerType()//获取播放器的类型
    		|-->setDataSource_pre(playerType)//根据playerType创建具体的播放器实例,例如ffplayer(见ffplayer.cpp) 
    		|-->p->setDataSource//调用具体播放器的setDataSource函数

    下面再说下媒体播放器的事件是如何通知到用户的。分两部分来论述:媒体后台服务器端和用户端
    媒体后台服务器端:
    MediaPlayerService::Client::notify //MediaPlayerService.cpp
     |-->sp<IMediaPlayerClient> c;
     |-->c = client->mClient;//获取BpMediaPlayerClient,即binder的客服端             
     |-->c->notify();
    以上调用会通过binder调用到BnMediaPlayer,即binder实体端: 
    MediaPlayer::notify(int msg, int ext1, int ext2, const Parcel *obj)//MediaPlayer.cpp
    |-->listener->notify()
    
    而以上MediaPlayerService::Client::notify函数会通过如下过程传递到具体的播放器中,以供播放器来上报事件。
    MediaPlayerService::Client::createPlayer
    |--->MediaPlayerFactory::createPlayer(playerType, this, notify)
         |--->p->setNotifyCallback  //MediaPlayerInterface.h
              |->mNotify = notifyFunc
              |->sendEvent //上面初始化的mNotify函数,被sendEvent函数调用
                 |->mNotify(mCookie, msg, ext1, ext2, obj);

    所以在具体的播放器实现中,可以直接调用MediaPlayerBase::sendEvent来将事件发送到用户。

    播放器的用户端:
    回到MediaPlayer.cpp文件中的MediaPlayer::setListener函数,该函数设置了侦听者,到收到事件时,会调用该侦听者。该侦听者的初始化过程如下:
    android_media_MediaPlayer_native_setup//android_media_MediaPlayer.cpp
       |-->sp<MediaPlayer> mp = new MediaPlayer();
       |-->sp<JNIMediaPlayerListener> listener = new JNIMediaPlayerListener(env, thiz, weak_this);
       |-->mp->setListener(listener);//即为<span style="font-size:18px;">MediaPlayer::setListener函数</span>
       以上过程,将<span style="font-size:18px;">侦听者设置为JNIMediaPlayerListener,所以当事件产生时,会调用
    </span>   void JNIMediaPlayerListener::notify(int msg, int ext1, int ext2, const Parcel *obj)
          |-->env->CallStaticVoidMethod(mClass, fields.post_event...);//从jni调到MediaPlayer.java
              |--->postEventFromNative //MediaPlayer.java
                   |-->Message m = mp.mEventHandler.obtainMessage(what, arg1, arg2, obj);
                   |-->mp.mEventHandler.sendMessage(m);
                    //MediaPlayer.mEventHandler = new EventHandler(this, looper);

    具体到用户的播放器界面中,用户可以通过实现如下函数:
    MediaPlayer.OnCompletionListener
    MediaPlayer.OnTimedTextListener
    MediaPlayer.OnInfoListener
    MediaPlayer.OnPreparedListener
    MediaPlayer.OnBufferingUpdateListener
    MediaPlayer.OnBufferingUpdateListener
    来实现对相应事件的处理。


    相关的参考文档:
    http://developer.android.com/guide/topics/media/mediaplayer.html


    展开全文
  • 同样安全的需求,也越发的强烈。开放透明是未来的趋势,视频的输出是开放透明的方式手段。将传统的行业监控转换为互联网直播,势在必行。 视频流媒体能力 基于直播/分发能力的场景方案 多媒体教室教学方案 用于学校...

    引言

    随着带宽能力的逐渐提高,4G的全面开展,5G时代的准入。全民直播/点播的需求越来越变得轻而易举。手机是人们双眼感官延伸的,人们需要可以在手机浏览器、微信、或视频APP中观看视频。同样安全的需求,也越发的强烈。开放透明是未来的趋势,视频的输出是开放透明的方式手段。将传统的行业监控转换为互联网直播,势在必行。

    视频流媒体能力

    视频流媒体能力

    基于直播/分发能力的场景方案

    多媒体教室教学方案

    用于学校的场景直播或是课堂上的老师教学直播
    教室直播

    教室直播

    传统推流设备互联网无插件直播

    将传统的推流摄像机或是推流终端等,进行互联联网无插件直播
    传统推流设备互联网无插件直播

    基于转码/分发能力的场景方案

    • 在线精品课堂教育
    • 企业内部活动视频
    • 手机短视频
      基于转码/分发能力的场景方案

    基于接入/分发能力的场景方案

    • 幼儿园监控
    • 透明装饰
    • 安全工地
      安防监控

    获取更多信息

    安防流媒体互联直播-QQ交流群:615081503

    国标GB28181无插件LiveGBS-QQ交流群:947137753

    WEB:https://www.liveqing.com

    Copyright © LiveQing.com 2016-2019

    展开全文
  • 多媒体之声音总结】

    热门讨论 2016-10-30 17:04:08
    多媒体,相信我们大家并不陌生,软考的备考阶段,正是深深的接触了它,在计算机领域中,“多媒体”常常被作为“多媒体技术”的同义词。今天小编来带大家从多媒体的基本概念出发,了解多媒体的表现形式之一——声音。...
  • 在使用阿里百川多媒体云服务的时候遇到了两个错误。本不该出现的错误浪费了...这个错误产生的原因:多媒体云需要安全图片,如果引入外部jar的话,就只需要在外部jar里面有安全图片就可以了,而我多此一举的把自己的项目
  • 多媒体信息发布系统源码

    千次阅读 2020-08-25 15:34:23
    多媒体信息发布系统源码 (快速定制,源码交付) 介绍 图艨科技多媒体信息发布系统3.0(简称MIPS)是一套采用“分散控制、集中管理”的B/S和C/S相结合的多媒体整体解决方案系统,支持终端Android、Linux、Windows...
  • Android多媒体开发介绍

    千次阅读 2014-04-14 14:29:07
    Android多媒体开发介绍 一、 多媒体架构 基于第三方PacketVideo公司的OpenCORE来实现,支持所有通用的音频/视频/静态图像格式,包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等。从功能上分为两部分,一是音...
  • 《实用多媒体技术》课程习题解答第一章 多媒体计算机概述单项选择题1-6:1、请根据多媒体的特性判断以下哪些属于多媒体的范畴?(1)交互式视频游戏 (2)有声图书 (3)彩色画报 (4)彩色电视(A)仅(1) ...
  • 带你走进多媒体世界:视频文件是怎么播放出来的

    千次阅读 多人点赞 2021-05-19 16:53:22
    维基百科的解释是:多媒体(Multimedia),在电脑应用系统中,组合两种或两种以上媒体的一种人机交互式资讯交流和传播媒体。使用的媒体包括文字、图片、照片、声音(包含音乐、语音旁白、特殊音效)、动画和影片,...
  • 多媒体技术期末复习资料

    千次阅读 2019-01-11 22:02:32
    系统安全可靠,具有安全防范能力,具有良好的可扩展性,能够适应移动多媒体广播电视技术和业务的发展要求。 采用卫星和地面网络相结合的方式实现“天地一体”协同覆盖,信道传输采用STiMi技术。 全国节目通过S...
  • 兰州交通大学多媒体技术复习

    千次阅读 2016-01-04 12:11:50
    1. 概念1.1 媒体媒体是信息表示和传输的载体1.2 多媒体一般而言,不仅指多种媒体信息本身的有机组合,而且指处理和应用多媒体信息的相应技术。 因此,多媒体通常被当做多媒体技术的同义词。 通常可以把多媒体看做是...
  • 微软Windows多媒体技术介绍

    千次阅读 2014-03-03 14:25:31
    微软为开发者提供开发桌面应用程序和驱动的API,包括1)应用程序...8)安全和认证API;9)系统服务API;10)桌面应用程序接口API;11)桌面环境API;12)Windows 8和8.1API 1、音视频API  微软提供让应用程序开发者、
  • 当我们将视频上传并保存到tomcat等服务器文件夹时, 我们可能保存的路径可能是这样的:E:\apache-tomcat-...当我们利用video、object、embed等多媒体元素播放时,可能需要将该路径放到src中,但是这样的路径是属于本地
  • Android多媒体框架的核心 OpenCore 解析

    千次阅读 2017-07-04 16:54:20
    1. OpenCore介绍OpenCore是android多媒体框架的核心,所有Android平台的音视频采集,播放的操作都是通过它来实现。通过Open Core程序员可以方便快速的开发出想要的多媒体应用程序,例如:音视频的采集,回放,视频...
  • 浙江省多媒体竞赛感想(网站组)

    千次阅读 2017-12-05 19:01:40
    几天前在浙江万里学院参加了第十六届的多媒体竞赛,有一些感想做个分享 一些注意事项 1.入围答辩的奖项数目,本届网站本科组入围答辩21组,入围不答辩10组,其中一等5组,二等11组,所以入围答辩还是有5...
  • 实用多媒体技术 课程习题及解答

    千次阅读 2018-11-13 04:58:09
    实用多媒体技术 课程习题及解答
  • 多媒体本身有两个方面,和所有现代技术一样它是由硬件和软件,或机器和思想混合组成。可以将多媒体技术和功能在概念上区分为控制系统和信息。 多媒体之所以能够实现是依靠数字技术。多媒体代表数字控制和数字媒体的...
  • Android MediaScanner 多媒体扫描流程

    万次阅读 2016-05-15 20:28:21
    在4.4平台之前可以通过两种方式来扫描多媒体文件: 1、MediaScannerConnection.scanFile()方法,  MediaScannerConnection.scanFile(this, new String[] {Environment.getExternalStorageDirectory()....
  • 多媒体播放器多媒体架构 ...在此我们运用到了AsyncQueryHandler 这样安全性更高 点击歌曲条目得到歌曲的详细信息,用意图带参数传入播放界面。 播放界面 在播放界面我们使用到了SeekBar控件
  • IMS (IP多媒体子系统)

    千次阅读 2016-02-22 16:02:41
    IMS(IP Multimedia Subsystem)是IP多媒体子系统,是一种全新的多媒体业务形式,它能够满足现在的终端客户更新颖、更多样化多媒体业务的需求。 中文名 IP多媒体子系统 外文名 IMS(IP Multimedia Su
  • 随着信息技术的飞速发展与教育信息化工作的不断推进,高校运用多媒体设备开展教学越来越普遍,同时随着而来的多媒体教室管理使用中的问题也日益明显。其管理的质量和效率直接影响到高校的教学。 多媒体教室运维现状...
  • 多媒体流式传输解决方案

    千次阅读 2008-12-18 09:48:00
    多媒体的流式传输实际上牵涉到两方面的技术。其一是服务器与客户端的通信技术,包括多媒体数据的传输、命令控制等;其二是客户端对接收到的多媒体流实时解码后播放的技术。显然网络通信可以使用Windows Socket技术,...
  • 第一章 多媒体技术概述 多媒体是指信息表示媒体的多样化,常见的多媒体有文字、图形、图像、声音、音乐、视频、动画 等多种形式。 多媒体技术是利用计算机技术把文本、声音、视频、动画、图形和图像等多种媒体进行...
  • 整理一些android多媒体相关框架介绍
  • 请务必将通知的可见性设为 VISIBILITY_PUBLIC,以将通知标记为安全,从而显示在任何锁定屏幕上(以安全方式或其他方式)。 要让应用在 Android TV 或 Wear 平台上运行时显示媒体播放控件,则实现 MediaSession 类...
  • Android多媒体框架初步分析

    千次阅读 2009-12-22 18:21:00
    Android 系统整体架构: 我们先看一下多媒体框架在整个Android系统所处的位置 从框架图可以看出Media Framework处于Libraries这一层,这层的Library不是用Java实现,一般是C/C++实现,它们通过Java的JNI方式调用。...
  • Android多媒体框架初步分析

    千次阅读 2010-12-08 22:15:00
    Android 系统整体架构: 我们先看一下多媒体框架在整个Android系统所处的位置 <br />  <br />从框架图可以看出Media Framework处于Libraries这一层,这层的Library不是用Java实现,一般是C/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,480
精华内容 27,792
关键字:

多媒体安全