c++流媒体解码编程技巧讨论

上传人:第*** 文档编号:31072536 上传时间:2018-02-04 格式:DOC 页数:16 大小:181.50KB
返回 下载 相关 举报
c++流媒体解码编程技巧讨论_第1页
第1页 / 共16页
c++流媒体解码编程技巧讨论_第2页
第2页 / 共16页
c++流媒体解码编程技巧讨论_第3页
第3页 / 共16页
c++流媒体解码编程技巧讨论_第4页
第4页 / 共16页
c++流媒体解码编程技巧讨论_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《c++流媒体解码编程技巧讨论》由会员分享,可在线阅读,更多相关《c++流媒体解码编程技巧讨论(16页珍藏版)》请在金锄头文库上搜索。

1、转帖C+ 流媒体解码编程技巧讨论 洳既往噯伱 1 楼话说 C/C+以速度快,性能高而著称,C/C+本质是一种中级的计算机程序设计语言,它即保证了类似低级汇编语言效率,同时也坚固类似高级语言所具有的特点,C/C+的程序编写不依赖于计算机的硬件,所以你即可以拿它来编写系统软件,也可以用来开发应用软件,它的应用越乎我们的想像,除了 PC 机上的开发外,也被广泛的用在单片机,嵌入式等手机开发等领域,目前市场上流行的大部分程序都是建立在C 语言的基础上来完成的 2009-10-15 11:05 回复 洳既往噯伱 2 楼嘿嘿 ,接楼上。现在”3G 网络”的概念成为了人们对未来网络最常见的一种说法,不过什么

2、是 3g 呢,其实它的全称为 3rd Generation,即第三代数字通信。它能够处理比以前更多的服务,如图像,音视频等多种多媒体形式提供给用户,而它和前两代的唯一区别就是 3G 网络最大的速率可以达到 2Mbps,远远超过了前两代网络,这使得手机影院等大数据流应用,可以实现,为用户带来更好的移动体验。电信运营商及通信设备制造商都非常关注。3G 网络的到来,为移运运营商提供了商机,目前中国三个运营商纷纷引入自己的 3g 标准,其中,移动做为 3g 的先导者,自然不会错失这个机会,在今年 08 年推出了自己的手机系统 OPhone OS 平台,OPhone OS 平台本身是基于 Linux开放

3、系统所设计,并不断的完善,相信不少见过 OPhone OS手机的用户都被它的惊人的人性化界面所打动,其实OPhone OS 系统所拥有的不单单是这些,为了极大的满足人们日益的需求,OPhone OS 平台除保留了 Gmail,Gtalk 等原有业务外,还内置了中国移动的全部增值服务,为用户提供了更贴心的体验。同时移动还推出了线上软件销售商店Mobile Market,为个人和公司提供了面向移动拥有的 5 亿手机用户和庞大商业客户的销售机会。这样看来,手机上的个人娱乐软件和商业管理软件,如果中国移动大力推动,会带来很大市场。联通、电信虽然手机用户规模相对小些,但相信也会大力发展。这也是我为什么要

4、在下面向大家,以 OPhone 平台为例,介绍移动平台上流媒体编成的技巧。话说回来,和 Linux 一样,OPhone OS 保留了原有的开发语言 C/C+,Java,不过 OPhone OS 对其进行了极大的优化,C/C+虽然效率高,不过这样并不安全,因为恶意的程序,会使得系统变得不安全,Java 虽然很安全,不过效率太低,不利于大的项目开发,而且单纯的 Java 程序并不能完成一些特定的任务,在这种情况下,OPhone OS 平台寻求到了完美的解决方案,JNI(Java Native Interface,Java 本地化方法)技术运用而生,JNI 简单的说,是让 C/C+做完底层开发,并为

5、 Java 提供接口以为调用,这样,JNI 方式即不失低效率,也保证了平台安全性 2009-10-15 11:06 回复 o012340ofei 41 位粉丝 3 楼楼主太监了 这条留言是通过手机发表的,我也要用手机发表留言! 2009-10-15 11:13 回复 洳既往噯伱 4 楼OPhone OS 平台的流媒体支持OpenCore 模块为 OPhone OS 平台提供了核心的多媒体支持,它处于整个平台的 Libraries 层,以os 的方式为上层语言提供服务,OpenCore 主要是用 C/C+来实现,开发者可以修改及移植别的编/解码器,然后通过上层软件使用, OpenCore不能直接

6、被用户所使用,必需借住其它的方式调用,如 Java 的 JNI 方式,OpenCore 模块内置了OpenMAX1L interface 接口进行扩展,这种技术分离了具体硬件的依赖,方便了开发者的移植,目前 OPhone OS 平台提供了 3GP,MP4,ACV 等媒体格式的支持,如果是在线看的话,还支持http,rtp 等协议OPhone OS 媒体源码文件曾经写过一个关于音频部分的,介绍过如何下载这部分的源码,接着我简单讲一下相关的 C 代码Opencore 目录包括了所有关于媒体方面的源码,其中最重要的是 android,engines 和codecs_v2,protocols 四个目录

7、, android 主要包括了一些纯虚类,为适配器,engines 为媒体引擎部分,主要是 OPhone OS 平台内置的编解码程序,后一个为第三方所提供,为 OPhone OS 系统的扩展应用,protocols 目录里提供了在线流媒体的协议,包括 http,rtp,rtsp,我们重点说一下 protocols的结构,(代码太长,分段了。 。 ) 2009-10-15 11:14 回复 洳既往噯伱 5 楼opencoreprotocolshttp_parcomincludehttp_composer.h 头文件中enum HTTPVersionHTTP_V1_0 = 0,HTTP_V1_1;

8、/ HTTPMethod enumenum HTTPMethodHTTP_METHOD_GET = 0, / both HTTP 1.0 and HTTP 1.1HTTP_METHOD_HEAD, / both HTTP 1.0 and HTTP 1.1HTTP_METHOD_POST, / both HTTP 1.0 and HTTP 1.1HTTP_METHOD_DELETE, / both HTTP 1.0 and HTTP 1.1HTTP_METHOD_LINK, / HTTP 1.0 onlyHTTP_METHOD_UNLINK, / HTTP 1.0 onlyHTTP_METHOD

9、_OPTIONS, / HTTP 1.1 onlyHTTP_METHOD_PUT, / HTTP 1.1 onlyHTTP_METHOD_TRACE, / HTTP 1.1 onlyHTTP_METHOD_CONNECT, / HTTP 1.1 only;列出来 http 协议下流媒体的支持的 http 协议为 1.0 和 1.1,从中我们可以看出来,OPhone OS 媒体部分支持 Get 和 Post 方式播放数据 2009-10-15 11:16 回复 洳既往噯伱 6 楼还是太长,疯了下面我们来通过 Java 的 JNI 方式去调用,我们以 SDK 中的MediaPlayerDemo_V

10、ideo.java 说明package com.example.android.apis.media;import com.example.android.apis.R;import com.example.android.apis.app.AlarmController;import android.app.Activity;import android.graphics.PixelFormat;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer

11、.OnBufferingUpdateListener;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import android.util.Log;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import an

12、droid.widget.Toast;public class MediaPlayerDemo_Video extends Activity implementsOnBufferingUpdateListener, OnCompletionListener,MediaPlayer.OnPreparedListener, SurfaceHolder.Callback private static final String TAG = MediaPlayerDemo;private int mVideoWidth;private int mVideoHeight;private MediaPlay

13、er mMediaPlayer;private SurfaceView mPreview;private SurfaceHolder holder;private String path;private Bundle extras;private static final String MEDIA = media;private static final int LOCAL_AUDIO = 1;private static final int STREAM_AUDIO = 2;private static final int RESOURCES_AUDIO = 3;private static

14、 final int LOCAL_VIDEO = 4;private static final int STREAM_VIDEO = 5; /* * Called when the activity is first created.*/public void onCreate(Bundle icicle) super.onCreate(icicle);setContentView(R.layout.mediaplayer_2);mPreview = (SurfaceView) findViewById(R.id.surface);holder = mPreview.getHolder();h

15、older.addCallback(this);holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);extras = getIntent().getExtras(); 2009-10-15 11:18 回复 洳既往噯伱 7 楼private void playVideo(Integer Media) try switch (Media) case LOCAL_VIDEO:/* TODO: Set the path variable to a local media file path.*/path = ;if (path = ) / Tell the user to provide a media file URL.Toast.makeText(MediaPlayerDemo_Video.this,Please edit MediaPlayerDemo_Video Activity, + and set the path variable to your media file path.+ Your media file must be stored on sdcard., 2009-10-15 11:19 回复 洳既往噯伱 9 楼.makeT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号