精华内容
下载资源
问答
  • 随着科学技术的进步和互联网信息技术的快速发展,数字多媒体设计不断创新和发展,它不仅丰富了传统艺术设计的形式,而且在一定程度上丰富了艺术内容,本文从艺术设计设计的现状,阐述了数字多媒体设计创新的必要性,...

    随着科学技术的进步和互联网信息技术的快速发展,数字多媒体设计不断创新和发展,它不仅丰富了传统艺术设计的形式,而且在一定程度上丰富了艺术内容,本文从艺术设计设计的现状,阐述了数字多媒体设计创新的必要性,然后介绍未来行业的发展趋势。

    数字多媒体艺术设计的创新需要技术创新,技术是艺术创新的动力,无论哪种艺术设计形式,都有赖于技术的进步。数字多媒体艺术技术为艺术创作提供了新鲜的血液,改变了传统的艺术表现方式。将虚拟现实、增强现实、5 G+4 K/8 K超高清、无人驾驶飞机等技术应用于文化领域,开发全息互动投影、无人驾驶飞机表演、夜景秀等产品,促进现有文化内容向沉浸式内容移植,丰富虚拟体验内容。

    当科技进步的时候,要注重“科技+文化”,一个好的项目不能只有美,更要有文化有灵魂,支持文化遗产单位、景区景点、主题公园、园区街区等方面运用文化资源开发沉浸式的体验项目,开展数字多媒体展馆、虚拟景区等服务。带动了城市公共空间、特色小镇等多种业态的融合发展。发展沉浸式旅游演艺、沉浸式娱乐体验产品,促进旅游演艺、沉浸式娱乐数字多媒体。发展数字多媒体展示产业,推进数字多媒体在重点领域和场景的应用创新,更好地继承中国文化传承精神。

    在数字多媒体飞速发展的今天,可以由作者的臆想,运用科技手段模拟出的影像,从众多作品中可以看出,如《又见平遥》、《又见敦煌》、《印象普陀》、《印象武隆》等等,这些作品深受广大观众的喜爱,因此,数字多媒体视觉艺术设计有着广阔的发展前景,深受大众喜爱。

    其中,最值得注意的是沉浸式夜游,“沉浸式夜游”早已风靡旅游圈,引来众多旅游景点的热议,夜游迅速催生出新型“沉浸式夜游”。根据园区的特点,定制主题灯光秀、实景水秀、风景表演、新媒体光影艺术…或欢快、或震撼、或浪漫,打破单一的夜赏模式,创造夜情的极致体验。从头熟悉白昼,到惊喜黑夜,旅游业完成了一次重大的消费升级,当节日的主题化遇上演艺常规、娱乐艺术化,全方位的组合模式让黑夜变得更加有趣。

     

    展开全文
  • 多媒体技术期末论文

    2011-11-15 14:48:59
    MPEG—4是现在最重要最有影响的多媒体数据编码国际标准之一。基于对象的编码思想使其具有高压缩比、可扩展性、可交互性等许多特点。本论文首先系统介绍了MPEG-4视频编码的核心思想,接着分析了MPEG-4的主要关键技术...
  • Android多媒体

    千次阅读 2015-07-01 09:28:08
     作为多媒体处理的基本的组成部分,音频处理在移动终端上十分复杂。音频的播放、记录、以及多种场景(如电话、音乐、提示音、录音等)的冲突、并发策略无疑增加了开发的难度。好在Google在设计Android时充分考虑...

            多媒体接口和娱乐、游戏等业务密切相关,灵活地采用多媒体接口,可以使应用具备更强的吸引力。

    1.音频处理

            作为多媒体处理的最基本的组成部分,音频处理在移动终端上十分复杂。音频的播放、记录、以及多种场景(如电话、音乐、提示音、录音等)的冲突、并发策略无疑增加了开发的难度。好在Google在设计Android时充分考虑了这些问你,在底层设计了一套围绕AndioFlinger、AudioPolicyManager的音频框架,使应用层的开发者可以忽略不同场景下的并发策略。通过这种方法,极大简化了音频应用的开发。

            在应用层,开发者可以调用MediaPlayer、MediaRecorder、SoundPool等进行音频的播放、记录以及游戏的特效音的制作等。在框架层,AudioFlinger、AudioPolicyManager、AudioService、AudioHardwareInterface构成了音频控制的基本骨架。框架层本身包括Java、C++两部分,并通过JNI进行通信,其中对服务的调用是基于C/S架构实现的。内核层提供不同音频设备的驱动和ALSA架构等。而音频本身的播放涉及的多媒体引擎是OpenCore和Stagefright。在默认情况下,OpenCore在Android2.2及以前版本中应用,而在较新的Android版本中,Stagefright则成了默认的多媒体引擎。

            AudioPolicyService所负责的工作在早期版本中是在AudioFlinger中实现的。随着场景的复杂化,Google将关于音频设备的链接状态、音频的并发策略、音量的处理等工作放置到AudioPolicyService中,而AudioFlinger更侧重于音频流的控制。AudioHardwareInterface则是对不同设备厂商的音频设备的驱动与框架层的适配接口,为框架层提供一个与驱动通信的统一接口,这样可以有效地保护硬件厂商的商业利益。
           

             (1)音频播放

                    根据播放方式的不同,Android为应用层提供了多个播放接口,如MediaPlayer、SoundPool、AudioTrack、AsyncPlayer、JetPlayer、ToneGenerator等,他们适合用于不同的场景。

                   1)基于MediaPlayer播放

                             MediaPlayer具有非常强大的播放功能,对音频和视频的播放均提供了支持。为了保证播放期间系统的正常工作,需要设置android.permission.WAKE_LOCK权限。

                             MediaPlayer支持的音频格式包括AAC、AMR、FLAC、MP3、MIDI、OGG、PCM等。考虑到MediaPlayer的复杂性,在原生层MediaPlayer有状态机控制。 

                                    

                             当调用reset方法时,MediaPlayer会返回到MEDIA_PLAYER_IDLE状态,MediaPlayer还存在一个出错的状态,即MEDIA_PLAYER_STATE_ERROR。监听出错的监听器为MediaPlayer.OnErrorListener。

                            对于背景音乐,将MediaPlayer封装在Service中即可实现。

                            MediaPlayer支持元数据、音频文件、音频流等形式的源数据的播放。

                            (1)播放元数据

                                    所谓元数据即raw文件夹下的资源文件,调用方法如下:

                                            mMediaPlayer=MediaPlayer.create(this, R.raw.test_cbr);

                                            mMediaPlayer.start();

                            (2)播放音频文件

                                    对于本地文件,其数据源可以通过Uri来表示,在开始播放前需要设置播放类型并加载缓冲,示例如下:

                                            Uri myUri=...;

                                            MediaPlayer mediaPlayer=new MediaPlayer();

                                            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

                                            mediaPlayer.setDataSource(getApplicationContext(), myUri);

                                            mediaPlayer.prepare();    //加载缓冲

                                            mediaPlayer.start();

                           (3)播放流

                                   MediaPlayer支持基于网络的流播放,其支持的网络协议包括RSTP(RTP、SDP)、HTTP渐进流(HTTP Progressive Streaming)、HTTP生活流(HTTP Live Streaming Draft Protocol,仅Honeycomb版本中用到)等。Android4.0开始支持HTTPS协议,在网络播放和本地播放上略有不同,示例如下:

                                           String url="http://zhangmenshiting.baidu.com/***.mp3;

                                           MediaPlayer mediaPlayer=new MediaPlayer();

                                           mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

                                           mediaPlayer.setDataSource(url);

                                           mediaPlayer.prepareAsync();

                                           ...

                                           mediaPlayer.start();

                                    需要说明的是,考虑到网络情况的复杂性,以及获取数据和解码可能耗时较长,不退将在播放流时通过prepare方法来加载缓冲,尤其不能再UI主线程中调用prepare方法。应通过prepareAsync方法将加载缓冲的工作放置在非UI主线程中进行,当准备工作完成时,MediaPlayer通过MediaPlayer.OnPreparedListener监听器可以监听到该事件。设置监听器的方法如下:

                                            mMediaPlayer.setOnPrepareListener(mPreparedListener);

                                    通常在准备工作完成后开始进行播放。监听器处理加载缓冲结束的消息方法如下:

                                            MediaPlayer.OnPreParedListener mPreparedListener=new MediaPlayer.OnPreparedListener(){

                                                    public void onPrepared(MediaPlayer mp){

                                                            ...

                                                            mediaPlayer.start();

                                                    }

                                           }

                                    当播放结束时,通过MediaPlayer.OnCompletionListener可以监听到播放结束的消息,示例如下:

                                            mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){

                                                   public void onCompletion(MediaPlayer mediaPlayer){

                                                           ...

                                                   }

                                           });

                    2)基于SoundPool播放

                            SoundPool能够播放音频流的组合音,这对游戏应用而言显然非常有用。其对应的JNI接口为android_media_SoundPool.cpp。

                            SoundPool可以通过APK包中的资源文件或文件系统中的文件将音频资源加载到内存中。在底层实现上,SoundPool通过媒体播放服务(MediaPlaybackService)可以将音频资源解码为一个16位的单声道或者立体声的PCM流,是应用避免了在回放过程中进行解码造成的延迟。

                            除了回放过程中延迟小的优点外,SoundPool还能够对一定数量的音频进行同时播放。当要播放的音频流数量超过SoundPool所设定的最大值时,SoundPool将会停止已播放的一条低优先级的音频流。SoundPool对最大播放音频流数量的设置(默认为32),可以避免CPU过载和影响用户体验。

                            对游戏等应用而言,MediaPlayer会使性能降低。在Android中,专门提供了SoundPool类来执行此类音频播放。SoundPool类占用的CPU资源较少、反应较快。

                            和其他音频播放类相比,SoundPool类可以自行设置音频播放时的品质、音量、播放速率等,并且可以管理多个音频流,每个流均拥有自己独立的ID,对单个音频流的管理均是通过其ID来进行的。SoundPool类适用的场景包括应用程序中的声效(按键提示音、消息等)、游戏中密集而短暂的声音(如多个飞船同时爆炸)。

                     3)基于AudioTrack播放

                             AudioTrack主要用于管理单个音频,这是一个较底层的音频播放方法,在构建AudioTrack时,需要指明流类型、采样率、通道配置、音频格式、缓冲大小、播放模式等参数。

                            AudioTrack支持STREAM_VOICE_CALL、STREAM_SYSTEM、STREAM_RING、STREAM_MUSIC和STREAM_ALAARM等流类型。

                            AudioTrack支持单声道(CHANNEL_OUT_MONO)和立体声(CHANNEL_OUT_STREAMO)两种通道。

                            AudioTrack支持ENCODING_PCM_16BIT和ENCODING_PCM_8BIT两种编码格式。

                            AudioTrack支持静态模式和流模式两种播放模式。静态模式由于没有从Java层向原生层传递数据造成的延迟,因此时延很小。当然。受限于音频缓冲的大小,静态模式通常在游戏场景中用于播放时长很短的音频资源。当音频流较大不足以在音频缓冲中一次写入时,可采用流模式。

                            在设置音频缓冲时,其大小与采样率、通道和音频格式有关。缓冲大小的计算公式如下:

                                    缓冲大小=最小帧数*(通道==CHANNEL_OUT_STETEO ?2:1)*(音频格式==278带格式的:边框:底端:(PCM16?2:1)

                            而最小帧数则与采样率和音频设备的延迟等因素有关。

                            AudioTrack的播放状态包括PLAYSTATE_STOPPED、PLAYSTATE_PAUSED、PLAYSTATE_PLAYING等。

                            AudioTrack、示例的状态包括STATE_INITIALIZED、STATE_NO_STATIC_DATA、STATE_UNINITIALIZED等。

                            向音频缓冲中添加数据的方法为write,其应用格式如下:

                                    public int write(short[] audioData. int offsetInShorts. int sizeInShorts)

                            通过AudioTrack.OnPlaybackPositionUpdateListener监听器可以监听播放进度。

                    4)基于AsyncPlayer播放

                            对于不希望阻塞当前线程的简单播放,可以考虑AsyncPlayer,从而使播放线程可以从容加载缓冲。AsyncPlayer的示例如下:

                                    final Uri PLAY_URI=Settings.System.DEFAULT_NOTIFICATION_URI;

                                    AsyncPlayer asyncPlayer=new AsyncPlayer(null);

                                    asyncPlayer.play(getContext(), PLAY_URI, true, AudioManager,STREAM_RING);

                                    final int PLAY_TIME=3000;

                                    Thread.sleep(PLAY_TIME);

                                    asyncPlayer.stop();

                            虽然在底层依然是通过MediaPlayer进行播放的,但是AsyncPlayer支持的播放控制有限。

                    5)基于JetPlayer播放

                            在Android中,还提供了对Jet播放的支持。它包括两部分:Jet播放器和Jet引擎。Jet常用于控制游戏的声音特效,采用MIDI格式。

                            MIDI数据由一套音乐符号构成,而非实际的音乐,这些音乐符号的一个序列被称为MIDI消息。Jet文件包含多个Jet段,而每个Jet段又包含多个轨迹,一个轨迹是MIDI消息的一个序列。

                            JetPlayer是Jet在应用层的接口,JetPlayer类内部有个存放Jet段的队列,其主要作用是向队列中添加Jet段或清空队列,其次就是控制Jet段的轨迹是否处于打开状态,需要注意的是,在Android中,JetPlayer是基于单子模式实现的,在整个系统中,仅存在一个JetPlayer的对象。

                            通过JetPlayer.OnJetEventListener可以处理播放事件。JetPlayer在普通应用开发中并不常见。

                    6)基于ToneGenerator播放

                            ToneGeneator提供了对DTMF音,以及呼叫监督音和专用音中规定音频的支持,对应的JNI接口文件为android_media_ToneGenerator.cpp。

                            停止ToneGenerator播放的方法为stopTone。

                            需要说明的是,DTMF音为WAV格式,相关的音频类型定义位于ToneGenerator.h文件中。

                    7)基于Ringtone播放

                            Ringtone和RingtoneManager为铃声、提示音、闹钟等提供了快速播放及管理的接口。

                            Ringtone提供了播放铃声、提示音的快速方法,通常和RingtoneManager配合使用。RingtoneManager在系统中维护着一个铃声数据库。

                            RingtoneManager管理来电铃声、提示音、闹铃铃声等,在本质上,Ringtone是对MediaPlayer的再封装。

            (2)音频录制

                    录音的方式相对播放而言比较简单,Android仅提供了MediaRecorder、AudioRecord两个用于音频录制。

                    为了录制音频,必须设置音源、输出路径、录制格式等。其中音源由MediaRecorder.AudioSource统一定义。音源包括MIC、VOICE_UPLINK、VOICE_DOWNLINK、VOICE_CALL、CAMCORDER、VOICE_RECOGNITION和VOICE_COMMUNICATION(VOIP)。

                    1)基于MediaRecorder录制

                            MediaRecorder支持的音频编码包括AMR_NB、AMR_WB和AAC等,支持的输出格式包括AMR_NB、AMR_WB、MPEG_4、RAW_AMR和THREE_GPP等。

                    2)基于AudioRecord录制

                            AudioRecord支持ENCODING——PCM_16BIT和ENCODING_PCM_8BIT等编码,支持CHANNEL_IN_MONO、CHANNEL_IN_STEREO、CHANNEL_IN_LEFT和CHANNEL_IN_RIGHT等声道。

            (3)音频管理

                    音频管理主要是通过AudioManager来进行,通过AudioManager可以进行设备、音量、资源竞争、音效播放等方面的管理工作。

                    1)设备管理

                             AudioManager的强大主要体现在对蓝牙、扬声器、麦克风、耳机振动等音频相关设备的管理等方面。AudioManager对音频设备进行管理的主要方法如下:

                                     public void setBluetoothScoOn(boolean on)

                                     public void setMicrophoneMute(boolean on)

                                     public void setSpeakerPhoneOn(boolean on)

                                     public void setVibrateSetting(int vibrateType, int vibrateSetting)

                             setRouting()、setWiredHeadsetOn()等方法已经被抛弃,不建议继续使用。另外,AudioManager还支持对流的管理,方法如下:

                                     public void setStreamMute(int streamType, boolean state)

                                     public void setStreamSolo(int streamType, boolean state)

                            当用户正在使用耳机欣赏音乐时,可能无意间因走动等造成耳机和终端断开,这时就需要处理Action为android.media.AUDIO_BECOMING_NOISY的广播消息,暂停播放,以避免外放而产生噪声。

                    2)音量调整

                            AudioManager支持对特定流或整体的音量调节,方法如下:

                                    public void adjustStreamVolume(int streamType, int direction, int flags)

                                    public void adjustVolume(int direction, int flags)

                           音量调节的方向包括ADJUST_RAISE、ADJUST_LOWER、ADJUST_SAME等,标志位可以是FLAG_SHOW_UI、FLAG_ALLOW_RINGER_MODES、FLAG_PLAY_SOUND、FLAG_VIBRATE、FLAG_REMOVE_SOUND_AND_VIBRATE等,示例如下:

                                   if(mAudioManager.isMusicActive()){     //判断是否有音乐播放

                                           mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, keyCode==KeyEvent.KEYCODE_VOLUME_UP?AudioManager,ADJUST_RAISE: AudioManager.ADJUST_LOWER, 0);

                    3)资源竞争

                            在Froyo版本以前,没有对多个应用竞争有限的扬声器资源提供内置的处理策略,用户体验不佳,故在Froyo版本中,引入了Audio Focus策略来处理这一问题。

                            当需要资源时,应用通过AudioManager的requestAudioFocus方法获得Audio Focus。一旦失去了Audio Focus,当前的播放会被剥夺资源。

                    4)音效播放

                            AudioManager还支持音效播放,方法为playSoundEffect。在播放音效前,必须调用loadSoundEffects方法,即创建一个SoundPool对象来执行实际的播放。

            (4)音效处理

                    在Android2.3中,对音频播放提供了更强大的音效支持,其实现位于android.media.audiofx包中。

                    1)重低音

                            BassBoost通过放大音频中的地拼音来实现重低音特效。重低音的细节有OpenSL ES 1.0.1定义。

                            要想在通过AudioTrack、MediaPlayer进行音效播放时具有重低音特效,在构建BassBoost示例时指明音频流的会话ID即可。如果指定的会话ID为0,则BassBost作用于主要的音频输出混音器(mix)上,BassBoost将会话ID指定为0需要具备android.permission.MODIFY_AUDIO_SETTINGS权限。BassBoost的应用示例如下:

                                    mBassBoost=new BassBoost(0, 0);

                                    if(mBassBoost.getStringthSupported()){

                                            mBassBoost.setStrength(mBassBoost.getRoundedStrength());        //设置强度

                                    }

                    2)环绕音

                            环绕音依赖于输出和输入通道的数量和类型,需要打开立体声通道。环绕音通过将音源放置于不同的位置,完美地再现了声音的质感和饱满度。在创建Virtualizer示例时,在音频框架层会同时创建一个环绕音引擎。环绕音的细节由OpenSL ES 1.0.1规范定义。

                            要想在通过AudioTrack和MediaPlayer进行音频播放时具有环绕音特效,在构建Virtualizer示例时指明音频流的会话ID即可。如果指定的会话ID为0,则Virtualizer作用于主要的音频输出混音器上,Virtualizer将会话ID指定为0需要具备android.permission.MODIFY_AUDIO_SETTINGS权限。Virtualizer的应用示例如下:

                                    mVirtualizer=new Virtualizer(0, 0);

                                    Virtualizer.Settings settings=mVirtualizer.getProperties();

                                    String str=settings.toString();

                                    settings=new Virtualizer.Settings(str);        //设置属性

                    3)均衡器

                            均衡器是一种可以分别调节各种频率电信号放大量的电子设备,它通过对各种不同频率电信号的调节来补偿扬声器和声场的缺陷,补偿和修饰各种声源,以及提供其他特殊作用。一般均衡器仅能对高频、中频、低频三段频率电信号分别进行调节。

                            要想在通过AudioTrack和MediaPlayer进行音频播放时具有均衡器特效,在构建Equalizer示例时指明音频流的会话ID即可。如果指定的会话ID为0,则Equalizer作用于主要的音频输出混音器上,Equalizer将会话ID指定为0需要具备android.permission.MODIFY_AUDIO_SETTINGS权限,相关的示例如下:

                                    mp=new MediaPlayer();

                                    equalizer=new Equalizer(0, mp.gerAudioSessionId());        //附着音频流

                                    equalizer.setEnable(true);

                                    equalizer.release();

                                    mp.release();

                    4)混响

                            混响是通过声音在不同路径上传播造成的反射叠加而产生的声音特效。在Android中,Google给出了两个实现:EnvironmentalReverb和PresetReverb,推荐在游戏场景中应用EnvironmentalReverb,在音乐场景中应用PresetReverb。在创建混响示例时,在音效框架层将会同时创建一个混响引擎。

                            要想在通过AudioTrack和MediaPlayer进行音频播放时具有混响特效,在构建EnvironmentalReverb示例时指明音频流的会话ID即可,。如果指定的会话ID为0,则EnvironmentalReverb作用于主要的音频输出混音器上,EnvironmentalReverb将会话ID指定为0需要具备android.permission.MODIFY_AUDIO_SETTINGS权限。

                            通过EnvitonmentalReverb还可以设置反射、房间等场景的强度和延迟等,PresetReverb的用法和EnvironmentalReverb类似。

                    5)可视化

                           可视化分为两种情况:波形可视化和频率可视化。可视化的使用要求具备android.permission.RECORD_AUDIO全乡。在创建Visualizer示例时,将会同时在音频框架层创建一个可视化引擎。

                           要想在通过AudioTrack和MediaPlayer进行音频播放时具有可视化特效,在构建Visualizer示例时指明音频流的会话ID即可。如果指定的会话ID为0,则Visualizer作用于主要的音频输出混音器上,Visualizer将会话ID指定为0,需要具有android.permission.MOSIFY_AUDIO_SETTINGS权限。

    2.视频处理

            在Android中,视频处理大致可以分为视频播放、视频记录和视频电话等3个部分,其中视频播放主要基于MediaPlayer进行,视频录制主要通过mediaRecorder进行,而视频电话则相对复杂。视频电话涉及多路视频、视频协议栈3G-324M等内容。

            (1)视频播放

                    在Android中,视频的播放有两种方案,一种是基于VideoView的,一种是基于SurfaceView的。基于VideoView的方案实现简单,但无法进行更多的个性化配置,不支持播放界面的动态变化;而基于SurfaceView的方案则具备更多的能力,但实现较复杂,多用于商业应用中。视频播放的部分参数受制于实际的硬件。

                    1)视频状态机

                            从视频播放的状态分析,除了正常播放、进度控制等外,视频播放还需要支持缓冲刷新等功能。

                            视频播放的状态包括MEDIA_NOP、MEDIA_PREPARED、MEDIA_PLAYBACK_COMPLETE、MEDIA_BUFFERING_UPDATE、MEDIA_SEEK_COMPLETE、MEDIA_SET_VIDEO_SIZE、MEDIA_ERROR、MEDIA_INFO等。

                            视频播放的进度控制和音频播放类似,这里不再详述,当缓冲发生更新时,通过OnBufferingUpdateListener监听器即可收到缓冲进度信息。

                    2)基于SurfaceView的播放

                            基于SurfaceView来播放视频可以充分利用系统的硬件加速能力,保障播放的流畅。Surface渲染是Android底层框架的一个重要技术,其管理由SurfaceFlinger进行。基于SurfaceView的播放框架如下图:

                                   

                            Android 4.0中提供了与SurfaceView相似的TextureView来支持视频或OpenGL场景,但TextureView的用法更类似于普通的视图。开发者还可以显示地设置Surface,方法为setSurface。

                            为了将播放信息及时地反馈给UI',MediaPlayer提供了多个监听器供开发者选择。这些监听器包括OnBufferingUpdateListener(用于监听缓冲的变化)、OnCompletionListener(监听播放是否完成)、OnErroListener(监听播放过程中出错信息)、OnInfoListener(监听播放过程中的提示等)、OnPreparedListener(监听播放时资源的分配情况)、OnSeekCompleteListener(监听跳转的完成情况)、OnVideoSizeChangeListener(监听视频大小的变化)等。

                    3)基于VideoView的播放

                            VideoView事实上是对SurfaceView和MediaPlayer的一种封装,VideoView支持数据源的设置、播放状态控制、播放信息获取等。

                            VideoView支持通过Uri和路径两种方式设置数据源,其方法如下:

                                    public void setVideoPath(String path)

                                    public void setVideoURI(Uri uri)

                            对于播放状态控制,VideoView支持播放控制器的设置和直接进行状态控制。

                            对于播放信息,VideoView支持文件播放时长和当前进度的获取。

                    4)播放控制器

                            MediaController是一个提供控制条的Widget,利用MediaController,开发者可以避免不必要的重复工作。

                            但对于商业开发而言,图形界面产生的用户体验是吸引用户的第一道关口,软件能否复用并非开发者和厂商关注的重点,所以MediaController的作用基本可以忽略。厂商通常会指定自己的播放控制界面。

            (2)视频录制

                    录制视频是主流移动终端的基本功能,随着硬件能力的提升,其支持的视频记录格式越来越多,主要有H263、H264 AVC等,相关的后缀有.3gp、.mp4、.ts等。录制视频的部分参数受制于实际的硬件配置。

                    通过MediaRecord进行视频录制于进行音频录制的主要区别在于前者需要设置视频源,并且输出格式不同。为了录制视频,需要设置很多参数。

                    MediaRecorder的许多方法间存在依赖关系,如setVideoSource方法和setAudioSource方法必须在setOutFormat方法前设置;通过setOrientationHint方法设置角度,必须在prepare方法前调用;通过setMaxDuration方法设置持续时间,则必须在setOutFormat方法后并在prepare方法前进行。在开发视频录制的应用前,必须了解这些依赖关系。

                    在Android 4.0中,当完成一段视频的录制后,系统会广播android.hardware.action.NEW_VIDEO消息。

    3.Camera服务

            Camera是目前最常见的业务之一,主要用于拍照、录像、预览、设置参数等,调用Camera需要如下权限:

                    <uses=permission android:name="android.permission.CAMERA"/>

                    <uses=feature android:name="android.hardware.camera"/>

                    <uses=feature android name="android.hardware.camera.autofocus"/>

            为了支持Camera功能,驱动层必须实现CameraHardwareInterface接口。Android支持前后摄像头,默认为后置摄像头,对应的选项为CameraInfo.CAMERA_FACING_BACK、CameraInfo.CAMERA_FACING_FRONT等,通过如下方法可以获得摄像头的数量:

                    int numberOfCameras=Camera.getNumberOfCaneras();

            (1)为了实现预览和参数设置

                    1)通过open方法获得摄像头实例,在打开摄像头时,如果是切换摄像头的场景,一定要项停止预览,然后释放摄像头头,再打开新摄像头。用到的方法如下:

                             private void stopPreview();

                             public final void release();

                    2)设置摄像头参数。摄像头的参数很多,具体的参数项位于Camera.parameters类中,获得Camera.Parameters类实例的方法如下:

                             Camera.Parameters parameters=camera.getParameters();

                          通过Camera.Perameters类可以设置摄像头的预览大小、JPEG质量、速率、照片大小、拍照格式、白平衡、缩放、特效等。

                    3)设置显示方向

                           设置显示方向是通过setDisplayOrientation方法进行的。Android支持0度、90度、180度、270度旋转。需要注意的是,在预览时,不允许调用该方法。另外该方法仅对预览起作用。

                    4)设置Surface

                            要设置Surface,必须创建一个SurfaceHolder.Callback类来监听SurfaceView的创建和销毁。

                    5)启动预览

                            启动和停止预览非常简单。

            (2)拍照

                    为了拍照,必须调用如下方法:

                            public final void takePicture(ShutterCallback shutter, PictureCallback raw, PictureCallback postview, PictureCallback jpeg);

                    照片的拍摄和编码是个复杂的过程,而takePicture是个异步的方法,通常需要轻微的延迟才能得到最终的数据,因此Android提供了ShutterCallback、PictureCallback回调用于处理相关的数据。

                    ShutterCallback回调会在照片拍摄后触发,用于播放拍照音;当照片的元数据可用时,会触发PictureCallback回调;PictureCallback回调在生成缩放图像后触发(并非所有硬件都支持);PictureCallback回调在压缩JPEG图像生成时触发。

                    在Android 4.0中,在拍摄完一张照片后,系统会广播android.hardware.action.NEW_PICTURE消息。

    4.TTS的实现

            在Android 1.6及以后版本中,Android开始通过支持语音合成的Svox语音引擎,即TTS。

            TTS引擎目前支持English、French、German、Italian和Spanish等语言。当然,对于同一种语言,Android支持不同的语言变种,如美式英语和英式英语。

            (1)TTS语言资源

                    由于设备存储空间的限制,并非所有设备上均安装了所有的TTS语音资源,为了判断请求的TTS语音资源是否可用,可用空间是否足够,需要进行检测,检测方法如下:

                            Intent cheakIntent=new Intent();

                            checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);

                            startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);

                    上述程序如果返回的标识符为TextToSpeech.Engine.CHECK_VOICE_DATA_PASS表示请求的TTS语音资源存在,否则可以通过Action为ACTION_INSTALL_TTS_DATA的Intent来请求安装相应TTS语言资源。

            (2)TTS应用开发

                    TTS的功能主要依据TextToSpeech进行,为了开发TTS应用,需要经过4步。

                    1)创建TextToSpeech对象

                            在创建TextToSpeech对象的过程中,TTS引擎会进行一系列参数设置并调用TextToSpeech.OnInitListener监听器监听初始化的万层情况,具体方法如下:

                                    public TextToSpeech(Context context, OnInitListener listener)

                            当TTS引擎初始化成功时,会在初始化回调函数OnInitListener中返回TextToSpeech.SUCCESS状态,否则返回TextToSpeech.ERROR状态。

                    2)处理初始化回调

                            如果希望在TTS希望在TTS引擎初始化完成后立即执行某些动作,则必须处理初始化回调,其方法为inInit,实例如下:

                                    public void onInit(int state){

                                            if(status==TextToSpeech.SUCCESS){

                                                    int result=mTts.setLanguage(Locale.US);

                                            }

                                   }

                    3)执行语音合成

                            执行语音合成的方法如下:

                                    public int speak(String text, int queueMode, HashMap<String, String> params)

                            目前,TTS引擎支持QUEUE_FLUSH和QUEUE_ADD两种排队方法,前者抛弃当前队列中的其他选项,立即处理当前项,后者将当前项添加到当前队列的尾部。判断合成语音是否播放完成,可以通过TextToSpeech.OnUtteranceCompletedListener监听器监听。

                            另外TTS还支持字符串和音频资源和音频文件的映射,用于实现更复杂的音频内容播放,实现方法如下:

                                    public int addSpeech(String text, String packagename, int resourceId)

                                    public int addSpeech(String text, String filename)

                            要保持合成的语音,可采用如下方法:

                                    public int synthesizeToFile(String text, HashMap<String, String>param, String filename)

                            判断是否正在进行TTS的方法为isSpeaking,停止TTS的方法为stop,另外通过setSpeechRate方法还可以设置合成语音速率。

                    4)关闭TextToSpeech

                            当不再使用TTS引擎时,应关闭TextToSpeech,方法为shutdown,这会释放一些TTS引擎占用的原生资源。

    展开全文
  • 多媒体技术是当今信息技术领域发展快、活跃的技术,集文本、图形、动画、声音、影视等各种交流媒介于一体的计算机多媒体技术,是21世纪计算机科学技术发展的一个重要领域。本文通过对多媒体技术的概念、特点、...
  • 多媒体技术的前景

    千次阅读 2020-02-23 21:00:12
    多媒体技术的前景   多媒体技术是计算机技术和通信技术,以及社会需求相...也正是因为有这样的特性,多媒体在多个领域都有着不可或缺的重要作用。这一门融合了计算机科学、通信和网络技术、人工智能、微电子技术...

    多媒体技术的前景
      多媒体技术是计算机技术和通信技术,以及社会需求相结合的产物,多媒体让我们获取和交互信息的方式发生了质的变化,它已经渗透入我们生活的点点滴滴。利用多媒体是计算机发展的必然趋势。
      多媒体具有集成性、交互性和信息载体多样性,其中集成和交互是多媒体的精髓。也正是因为有这样的特性,多媒体在多个领域都有着不可或缺的重要作用。这一门融合了计算机科学、通信和网络技术、人工智能、微电子技术、图形处理技术等的学科,已经渗透到社会生活的许多方面,具有十分宽阔的应用前景。
      在通信领域,通过多媒体,我们可以实现信息的快速、高效传递,语音交流、视频会议等的流行让信息的传输更加快速、高效、全面;在工业生产方面,许多企业已经开始了自动化、智能化的进程,通过多媒体技术来处理各种信息,如零件的识别和质量检验等,对于提高生产能力,增强管理效率有重要意义。
      在医疗领域,多媒体技术的应用更加广泛,CT、超声波、X射线成像、血管造影等应用对于医生的诊断和治疗过程很有帮助,这些技术现已十分成熟,也是多媒体在医疗领域最为直接的体现。多媒体在医疗领域还有着其他重要应用,比如使用到多媒体技术的医学信息数据库,可以高效快速地查阅信息。随着计算机网络和通信技术地发展,远程医疗也逐渐成为现实,为治疗和诊断提供了新的途径。
      在教育行业,多媒体技术的发展改变了传统的教学模式,丰富了教学手段,让教学不再仅仅是简单固定的板书形式,将图像、声音、视频等多种元素有效组合利用,增强了教学的趣味性和互动性。此外,网络教学也在蓬勃发展,在2020年新型冠状病毒疫情期间,诸多学校采取网上教学的方式,让教育更趋向于数字化学习、移动学习和泛在学习。
      在上述领域,多媒体已经有着较为广泛的使用和光明的应用前景,而在许多新兴产业中,多媒体也有着自己的一席之地。2016年常被称为VR元年,Google推出Daydream,Windows10提供对VR的支持,各大厂商纷纷发布自己的VR产品……虚拟现实技术真正走到了人们的身边。现阶段,VR虚拟现实技术被广泛在城乡规划、工业仿真、文物修复、道路设计、旅游展示等众多领域,并取得了较好效果。虚拟现实技术可以更好地复现真实环境,满足各个领域的具体需求,提供更精准的信息服务,因此我们可以大胆推断,计算机多媒体技术在未来一段时间会更倾向于向虚拟现实方向发展。
      除了虚拟现实化,多媒体技术在未来也会更加注重交互性,人机交互方式的多样化、智能化发展可以给我们带来更加丰富的使用体验。语音识别和引导、感知触觉交互、表情识别、人脸识别等应用都让生活更加丰富多彩。此外,互动式电影在近年来也受到观众的青睐,这些都体现出多媒体在交互方面还可以走的更远。
      眺望未来,多媒体技术是一门综合性强、包容性强、泛用性强的技术,和许多技术的融合可以迸发不一样的火苗,从而推动整个社会的发展。
      2019年作为“5G元年”,5G技术和多媒体的深度融合,无疑是一件值得期待的事情。预计到2021年,网络视频在全网的流量占比将会超过80%,并且更多的群众在呼吁高清和超高清的分辨率,于此同时,VR和AR的应用也意味着需要更快的传输速度,这就需要更新的技术支持。5G技术的发展可以提供大带宽、低时延、高移动性的服务,在5G技术的支持下,多媒体服务可以更好地满足人民的视听享受,在生活中占有更重要的地位。
      多媒体技术已经成为我们日常生活中不可或缺的一部分,善用多媒体,我们的生活无疑会变得更加美好。

    参考文献:
    [1] 田振蒙.多媒体技术的应用现状及其发展前景研究[J].科技传播,2018,10(22):162-163.
    [2] 谭庭俊.计算机多媒体技术的现状及发展前景[J].电子技术与软件工程,2016(19):178.
    [3] 毛惠超.计算机多媒体技术的应用与发展研究[J].电声技术,2019,43(11):30-31+39.
    [4] 于敬卓.数字媒体时代多媒体终端的人机交互方式新发展[J].数字技术与应用,2019,37(09):232+234.
    [5] 张富凯. 5G网络多媒体传输性能研究[D].北京邮电大学,2019.

    展开全文
  • 嵌入式系统多媒体框架分析

    千次阅读 2014-08-07 16:02:40
    嵌入式系统多媒体框架分析 1 Android系统的多媒体框架 Google正式对外发布的Android版本,在Android2.3版本之前,使用的是Opencore多媒体框架,Android2.3版本及之后的Android系统,以Stagefright多媒体框架取代...

    1 Android系统的多媒体框架

            Google正式对外发布的Android版本,在Android2.3版本之前,使用的是Opencore多媒体框架,Android2.3版本及之后的Android系统,以Stagefright多媒体框架取代Opencore多媒体框架。Opencore多媒体框架结构过于庞大复杂,Stagefright多媒体框架提高了多媒体框架的灵活性和可开发性。

    1.1 Opencore

            Android系统的Opencore多媒体框架,基于第三方PacketVideo 公司的Opencore platform来实现。支持所有通用的音频,视频,静态图像格式codec。使用OpenMAX 1L interface 接口进行扩展,可以方便得支持hardware / software codec plug-ins

    Opencore的优点是兼顾了跨平台的移植性,其缺点是过于庞大复杂,需要耗费较多时间维护。


    1.2 Stagefright

            在Google正式发布Android2.3 Gingerbread之后,多媒体框架默认预设Stagefright,但是该框架也保留了Opencore的可移植性。架构相对Opencore而言较为简洁,更容易维护。

    Stagefright框架中,比较重要的部分是AwesomePlayerAudioPlayerMediaExtractorColorConverterAwesomePlayerAudioPlayer负责播放音视频图像和声音,MediaExtractor负责处理多媒体文件的解析,Color Converter负责图像色彩空间的转换。

    Stagefright框架在MediaPlayerService层实现了一个OMX层,对Opencoreomx组件部分做了引用。


     图一  Stagefright框架图

    1.3 Opencore/Stagefright的差异

    1)支持的文件格式不同:

             OpencoreStagefright支持的音视频编解码格式更多;

    2)Parsercodec部分开发有差异:

            Opencore框架中,parser必须按照其规范完成相应的parser-nodecodec必须要实现相应的组件,parsercodec分离;Stagefright框架中,只需要按照其规范实现相应的extractordecoderparsercodec捆绑在一起。

    3)数据处理机制不同:

            Opencore框架中,通过节点控制输出,节点并行处理数据,有一个判定AV同步的依据,设定一个主时钟,使audio/video分别与主时钟同步,且音频会不断校准主时钟;Stagefright框架中,通过事件(callbackvideoevent)来驱动数据输出,串行处理数据,利用传统的利用时间戳的AV同步方式,用callback驱动audio数据流,video部分用onVideoEvent事件获取audio的时间戳。

     

    2  Linux系统的多媒体框架

     

    2.1 Gstreamer

            GStreamer 是 GNOME 桌面环境下用来构建流媒体应用的多媒体框架(framework)。它是一个开源的多媒体框架库,利用它,可以构建一系列的媒体处理模块,包括从简单的播放功能到复杂的音频(混音)和视频(非线性编辑)的处理。

            GStreamer是一个基于管道的多媒体框架,采用c语言开发,基于GObject是跨平台的,包括Linux (x86, PowerPC and ARM), Solaris (Intel and SPARC) and OpenSolaris, FreeBSD, OpenBSD, NetBSD, Mac OS X, Microsoft Windows and OS/400

            GStreamer通过把若干elements链接在一起构成pipeline实现对媒体内容的处理,element通过plug-in的方式提供。bin是一种特殊的element,是由多个其它elements组成的。

    element之间通过pad进行数据通讯,一个element的源pad可以链接到另一个elementsink padpad之间的数据类型通过capability来协商。pipeline有多种状态,当处于playing状态的时候,数据buffer就从源padsink pad传送。

            GStreamer的核心实现了对plug-in的注册和加载等功能,plug-in是以动态库的形式存在的。当需要某个element的时 候,Gstreamer就动态的加载对应的动态库。可以通过编写plug-in方式对gstreamer的功能进行扩展,包括编码方式,封装格式等各种功能。


    图二  GStreamer pipeline

           GStreamer采用基于插件(plugin)和管道(pipeline)的体系结构,框架中的所有的功能模块都被实现成可以插拔的组件(component),能够很方便地安装到任意管道上。GStreamer使用插件架构并造就了大量的GStreamer的共享库。


    图三 Gstreamer overview

    2.1 Phonon

            PhononKDE 4的多媒体API 。Phonon提供一个稳定的API允许KDE 4独立于任何一个声音系统服务器如xine

         使用了phonon,用四行C++程式码就能播放档案 ,而旧声音框架(aRts)则需要用到30行.

     media = new MediaObject(this);
     connect(media, SIGNAL(finished()), SLOT(slotFinished()));
     media->setCurrentSource("/home/username/music/filename.ogg");
     media->play();
    

         Phonon并非只能运行于Unix系统,他的后端可以是在其它平台如 Microsoft Windows 并提供相同的功能。

      • Phonon让各种后端提供界面给开发者所谓的"引擎";每个引擎运作在一个具体的后端。每个后端都可让Phonon控制基本功能,如播放、暂停和搜寻。Phonon也支持更高层次的功能,如让音轨转化之间变微弱。[3]
      • 使用Solid,Phonon将给予用户更多配件的控制能力如耳机、扬声器、麦克风。一个例子是,因为你可能只有一个VoIP会话使用您的耳机,但所有其他的声音通过扬声器出来。[3]
      • 支援 Unix-like 系统下的后端xineVLCMPlayer[4]
      • 支援 Windows 下的后端 DirectShowVLCMPlayer.
      • 支援 Mac OS X下的后端QuickTime

    3 Windows系统的多媒体框架


    3.1 DirectShow

            DirectX软件开发包是微软公司提供程序员的一套在Windows操作平台上开发高性能图形、声音、输入、输出和网络游戏的编程接口。微软将DirectX定义为“硬件设备无关性”,即使用DirectX可以用于设备无关的方法提供设备相关的(高)性能。DirectX标准的建立,可以为硬件开发提供策略,硬件厂商不得不按照这一标准进行产品改进,同时,通过使用DirectX所提供的接口,开发人员可以尽情地利用硬件可能带来的高性能,而无需关系硬件的具体执行细节。

            DirectX采用了COM(组件对象模型)标准,因此不同对象的版本可以有不同的接口,这使用DirectX开发的程序即使在未来也能得到完全的兼容和支持。

        DirectShowDirectX家族成员中为在Windows平台上处理各种格式的多媒体文件的回放、音视频采集等高性能要求的多媒体应用提供了完整的解决方案;DirectShow集成了DirectX家族中其他成员(如DirectDrawDirectSound等)的技术,为我们的多媒体应用提供了一下的方便:

    1)、保证了数据量巨大的多媒体应用数据处理的高效性;

    2)、解决了音频和视频时刻保持同步;

    3)、用最简单的方法处理复杂的多媒体源问题,包括本地文件、计算机网络、广播电视以及其他一些数码产品等;

    4)、提供了解决处理各种多媒体格式文件的方法;

    5)、支持目标系统中不可预知的硬件变动。

     DirectShow使应用程序开发人员从复杂的数据传输、硬件差异、同步性等工作解脱出来,总体应用框架和底层工作由DirectShow来完成。


    图四 DirectShow系统框图

    展开全文
  • Android Multimedia框架总结(五)多媒体基础概念

    千次阅读 多人点赞 2016-09-04 13:40:07
    上篇中介绍了MediaPlayer从prepare到playback的其他过程,但是很多的一些音视频的基础概念可能还不是很清楚,今天将介绍下对于多媒体开发时,常常有一些基本概念。看下今天的Agenda: 对杂而乱的媒体概念进行归类
  • 多媒体基础知识--编解码学习

    千次阅读 2012-09-12 09:46:46
    视频是现在电脑中多媒体系统中的重要一环。为了适应储存视频的需要,人们设定了不同的视频文件格式来把视频和音频放在一个文件中,以方便同时回放。视频档实际上都是一个容器里面 包裹着不同的轨道,使用的容器的...
  • WAP技术在多媒体信息服务中扮演了重要角色。通过WAP的Push、Notification和Poll的功能,终端用户能完成与系统的通信。 以系统向手机发送信息为例,分析一下多媒体信息服务的流程。在过程分析中省略了有关无线接...
  • 从事多媒体制作工作的人大多使用过 Director ,还有一部分人使用过 ToolBook。这两个软件占了多媒体著作市场的大部分。也许我这么说,有些人并不同意。他们会说:还有 Aurthorware, VB ,OMO 呢?的确有不少人在使用...
  • 云计算平台最重要的五项技术

    千次阅读 2015-07-01 15:48:24
    云计算平台最重要的五项技术 1、云服务器 云服务器提供简单高效,处理能力可弹性伸缩的计算服务,支持国内领先的云计算技术和大规模分布存储技术,使您的系统更稳定、数据更安全、传输更快速、部署更...
  • 多媒体会议系统中的延迟

    千次阅读 2007-11-02 08:33:00
    多媒体会议系统中的延迟 端 对端的音频...这就使得延迟成为语音通信系统设计中所要考虑的最重要的因素之一。 对于不同环境,不同的人感觉到延迟变化很大。有些人看来比别人对延迟更敏感。这可能与会谈方式或个性有关系
  • 多媒体信息技术》复习思考题

    万次阅读 2017-07-06 09:17:48
    多媒体信息技术》复习思考题 一、思考题  1. 什么是多媒体?什么是多媒体技术? 多媒体有哪些关键技术? 答: ①多媒体是融合两种或者两种以上媒体的一种人-机交互式的信息交流和传播媒体。 对信息技术而言...
  • 在中国多媒体大会产业前沿论坛,快手科技算法科学家周超博士发表题为《多媒体传输算法应用和展望》的演讲,首次对外公开了其多媒体传输协议KTP(Kwai Transport Protocol,快手传输协议),该协议解决了重要的内容...
  • Qt4 Phonon多媒体框架详解及简单实例

    千次阅读 2012-03-25 17:36:34
    Qt 使用 Phonon 这个多媒体框架来提供播放常见多媒体格式文件的功能,其中媒体文件可以是本地文件或者通过 QURL 指向的网络流文件。  整体来说,Phonon的架构只需要记住以下的三东西: media ...
  • 多媒体技术填空题

    万次阅读 2020-08-06 10:07:46
    1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 17、 18、 19、 20、 21、 22、 23、 24、 25、 26、 27、 28、 29、 30、 31、 32、 33、 34、 35、 36、 37、 38、 ...6
  • 有了单个的计算机组成,这篇博客还加入了多媒体和网络的知识,这样更类似我们现实生活给计算机搭配上各种装扮(多媒体)和相互之间的桥梁(网络)。当然系统和网络的安全可靠性也是大家担忧的,需要我们好好学习! ...
  • linux多媒体音频架构

    千次阅读 2013-11-29 23:20:09
    其实这些都不重要,对于开发者来说,简单、便捷、高效、实用才是王道,优美的框架结构,完善的文档支持强过口水战百倍。 目前ALSA已经成为Linux系统里主流的音频系统框架,在2.6.21的内核里已经看不到OSS的影子了...
  • 多媒体技术及应用课后习题

    千次阅读 2019-10-01 23:36:40
    @多媒体技术及应用课后习题 第一章习题 思考题 1.什么是多媒体? 答:使用计算机交互式综合技术和数字通信网络技术处理多种表示媒体——文本、图形、图像和声音,使多种信息建立逻辑连接,集成为一个交互式系统。...
  • 带你走进多媒体世界:视频文件是怎么播放出来的

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

    千次阅读 2013-09-28 18:59:35
    多媒体技术和Internet的发展给人们带来巨大的多媒体信息海洋,并进一步导致了超大型多媒体信息库的产生,光凭关键词是很难做到对多媒体信息的描述和检索的,这就需要有一种针对多媒体的有效的检索方式。如何有效的...
  • 如何把多媒体技术运用于科学课实验中 随着社会...实验是自然教学中最常用和最重要的教学手段由于目前小学实验室条件有限实验的科学性直观性探索性和操作性的特点在教学中很难充分体现把现代教育 技术中的多媒体 技术应
  • 多媒体技术复习题

    千次阅读 2017-05-23 20:29:49
    多媒体技术复习题 一. 选择题 1. 所谓媒体是指:( b ) A. 二进制代码 B. 表示和传播信息的载体 C. 计算机输入与输出的信息 D. 计算机屏幕显示的信息   2. 帧频率为25帧/秒的电视制式有( b )。 A. ...
  • Windows多媒体开发框架介绍

    千次阅读 2019-01-27 15:55:21
    Windows 多媒体开发框架介绍欢迎来到 Windows 的多媒体开发世界2D 图形 API1. [GDI](https://docs.microsoft.com/en-us/windows/desktop/gdi/windows-gdi)2. [GDI+]...
  • Android多媒体相关框架

    千次阅读 2016-03-11 14:44:15
    From:... 七、多媒体相关 cocos2d-x 跨平台的 2d 游戏框架,支持 Android、IOS、Linux、Windows 等众多平台 项目地址:https://github.com/cocos2d/cocos2d-x 文档介绍:http://www.
  • VC多媒体编程

    万次阅读 2007-04-28 14:09:00
    -- VC多媒体编程 -- Visual C++中基于多文档视窗模型的重叠图象拼接技术摘要 图象拼接是在全景视频系统、地理信息系统等应用中经常遇到的一个问题,本文基于网格匹配的方法对边界部分有重叠的图象提出了一种...
  • Intel CPU发展历程和多媒体指令集

    千次阅读 2006-09-11 21:04:00
    Intel CPU发展历程和多媒体指令集PeterLee 2006.08.02 viedosky.9126.com一、Intel CPU发展历程 推出时间 CPU型号
  • 海思多媒体处理平台(MPP)分为:视频输入(VI),视频处理(VPSS),视频编码(VENC),视频解码(VDEC),视频输出(VO)、视频侦测分析(VDA),音频输入(AI),音频输出(AO),音频编码(AENC),音频解码(ADEC),区域管理(REGION)等模块....
  • android 多媒体播放 MediaSession 框架

    千次阅读 2018-02-03 14:59:03
    在MediaSession框架中,最重要的三个类的概念就这么多, 核心类 MediaSessionCompat PlaybackStateCompat MediaMetadataCompat MediaSessionCompat.Callback 初始化配置 /** * ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,406
精华内容 30,162
关键字:

多媒体最重要的特征