- 博客(26)
- 资源 (3)
- 收藏
- 关注
转载 Darwin Streaming Server 核心代码分析
首先,我针对的代码是Darwin Streaming Server 6.0.3未经任何改动的版本。Darwin Streaming Server从设计模式上看,采用了Reactor的并发服务器设计模式,如果对Reactor有一定的了解会有助于对Darwin Streaming Server核心代码的理解。Reactor模式是典型的事件触发模式,当有事件发生时则完成相应的Ta
2017-06-28 14:50:16 205
转载 Darwin 框架概述
转自: http://www.rosoo.net/a/200904/7285.html1. 前言Darwin Streaming Server是Apple公司提供的开源实时流媒体播放服务器程序。整个程序使用C++编写,在设计上遵循高性能,简单,模块化等程序设计原则,务求做到程序高效,可扩充性好。本文简述了程序的整个结构,目的是为了以后阅读及修改程序的方便。解开程
2017-06-23 17:16:50 2749
原创 C++ 跨平台编程宏定义
操作系统判定宏Windows: WIN32Linux: linuxSolaris: __sun编译器VC: _MSC_VERGCC/G++: __GNUC__SunCC: __SUNPRO_C和__SUNPRO_CC
2017-06-22 16:49:21 2524
转载 关于ndk开发使用jni回掉java方法更新UI的问题
重新整理,原理:应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件, 进行事件分发。耗时的操作,放在一个子线程中,如果子线程涉及到UI更新,那就要用到handler,Android主线程是线程不安全的, 也就是说,更新UI只能在主线程中更新,子线程中操作是危险的。Handler运行在主线程中(UI线程中)
2017-06-21 15:55:56 705
原创 解决Unbantu eclipse 菜单栏目消失的问题
1. 新建一个eclipse.sh文件,加入如下内容,下面的路径是ecipse的路径export UBUNTU_MENUPROXY=0/usr/bin/eclipse //这一行是安装路径一定不能错2. 在终端 sh ./eclipse.sh
2017-06-16 16:40:23 623
转载 linux下epoll如何实现高效处理百万句柄的
开发高性能网络程序时,windows开发者们言必称iocp,Linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高速处理这么多并发连接呢?先简单回顾下如何使用C库封装的3个epoll系统调用吧。
2017-06-16 11:12:28 262
转载 Android学习笔记之AndroidManifest.xml文件解析
一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Service
2017-06-13 17:01:23 354
转载 Android下的JNI创建多线程的方法
一、概述 JNI编程和Linux上的C/C++编程还是挺相似的,每次java调用JNI中的函数时都会传入有关JVM的一些参数(如JNIEnv,jobject),每次JNI回调java中的方法时都要通过JVM的有关参数来实现,当在JNI中涉及到多线程的话还是有一些不一样的地方,就是要在子线程函数里使用AttachCurrentThread()和DetachCurrentThread
2017-06-13 09:03:15 2088
转载 FFmpeg视频播放-SurfaceView
之前已经把FFmpeg集成到项目里面了,剩下的就是做开发了,做过安卓视频播放的都应该知道在播放的时候都有用到SurfaceView,这里我们也采用这种方式。一、定义Java层的调用接口我们需要知道播放视频的网络地址或者是本地路径,并且希望这个地址是可以修改的,所以我们需要有一个参数去接收这个地址。和系统一样,我们也需要传递一个Surface,在Jni中没有Surface这个类型,所
2017-06-09 17:39:14 426
转载 Intent详解
【正文】Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要。一、什么是Intent1、Intent的概念:Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之
2017-06-09 11:08:25 627
转载 Ubuntu下搭建 eclipse+NDK for android JNI 的开发环境
一、准备安装包1、去官网下载adt-bundle-Linux 和 Android-ndk,我的环境是Ubuntu64位,所以我下载的版本是:(1)adt-bundle-linux-x86_64-20131030.zip(2)android-ndk-r9b-linux-x86_64 .tar.bz2下载完后解压,用命令行进入,执行 " ./eclips
2017-06-08 11:33:32 841
转载 Ubuntu 下用NDK编译移植 ffmpeg 2.0 (配置最新版x264) 到android平台
将x264配置到ffmpeg中需要先编译x264,生成静态库或动态库。因为264的静态库本身不大(我编译完成后是1.1M)且考虑到平台移植问题,这里选择的是编译生成静态库。准备,新建工作空间 (1)创建总目录FFmpeg-Androideg: mkdir workspace --> cd workspace --> mkdir FFmpeg-Android --
2017-06-08 11:30:39 505
转载 NDK在自己的SO中调用第三方SO
拷贝第三方的SO及其头文件在Android.mk中申明第三方编译模块在Android.mk的自己编译模块中包含第三方编译模块在自己的代码中调用第三方头文件Android.mk配置说明LOCAL_PATH := $(call my-dir)#第三方的编译模块include $(CLEAR_VARS)LOCAL_MODULE := _3rdsdkLOCAL_SRC_FILE
2017-06-07 17:17:18 853
原创 Unbantu 编译ffmpeg Android版本库
首先需要去FFmpeg的官网http://www.ffmpeg.org/去下载FFmpeg的源码,目前的版本号为FFmpeg3.3(Hilbert)。下载的文件为压缩包,解压后得到ffmpeg-3.3目录。修改ffmpeg-3.3的configure文件:# 原来的配置内容:SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJO
2017-06-07 11:18:23 339
原创 ffmpeg中调用解码器过程
该文将以X264编码器为例所有编码器和解码器都是在avcodec_register_all()函数中注册的。从中可以找到视频的H264解码器和X264编码REGISTER_DECODER(H264, h264);REGISTER_ENCODER(LIBX264, libx264);#define
2017-06-06 11:17:56 1912
转载 Android-SurfaceView与SurfaceHolder对象
调试Media播放时,不时用到SurfaceView与SurfaceHolder对象,写case测试及实际运行效果,基本上搞清楚这两个对象的用法及区别1、SurfaceView public class SurfaceView extends ViewSurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surfa
2017-06-02 15:00:22 230
转载 TextureView+SurfaceTexture+OpenGL ES来播放视频(一)
http://www.jianshu.com/p/d3d3186eefcb
2017-06-02 14:35:18 762
转载 最简单的Android项目(NDK命令行编译)
Android的NDK编程需要下载NDK编译环境,可以从官网下载window64位版,然后解压到任意目录即可。NDK的实现其实是利用里Java的jni方法,所以前期的步骤可以参考jni的实现方法,只是编译时可以利用NDK工具来进行。首先将Java源程序写好,例如: 1 package test.android; 2 3 import android.app.Act
2017-06-02 10:04:44 1952
转载 Android MediaPlayer API 大全
Android MediaPlayer API 大全1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态。当调用了release()方法后,它就处于End状态。这两种状态之间是MediaPlayer对象的生命周期。1.1) 在一个新构建的MediaPlayer对象和一个调用了reset()方法的MediaPlayer对象之
2017-06-02 09:44:39 878
转载 Android学习三、SurfaceView的学习
想要学习SurfaceView,必须了解SurfaceView、Surface、SurfaceHolder。一、Surface下面是Google提供的关于Surface的API的概述:Handle onto a raw buffer that is being managed by the screen compositor.直接从raw缓冲区中读取数据到屏幕。
2017-06-01 11:58:57 275
转载 Android学习二、MediaPlayer播放视频
MediaPlayer主要是用来播放音频的,因此它没有提供图像输出界面,此时就需要借助于SurfaceView来显示MediaPlayer播放时候的图像输出。有几点要注意的:1、MediaPlayer管理播放的,所以状态问题一定不能忽略的。2、SurfaceHolder.setType(int)方法虽然被标记为deprecate的,但是最好还是对SurfaceView进行这
2017-06-01 11:56:27 350
转载 Android学习一、MediaPlayer播放音频
想要使用MediaPlayer播放音频和视频,首先必须了解MediaPlayer的状态问题。下面是Google提供的MediaPlayer的状态图,基本上只要明白了,在MediaPlayer的状态上。就不会出问题了。还有什么不明白的,可以详细的看看Google提供的API。要想用MediaPlayer所写的的音频播放程序健壮的话,不仅需要了解MediaPlaye
2017-06-01 11:45:25 373
转载 JNI中的jclass和jobject的区别
jclass和jobject的迷惑第一次使用JNI,实例引用(jobject)和类引用(jclass)让人觉得很困惑。实例引用与一个数组和java.lang.Object类或它的子类的实例对应。类引用与java.lang.Class实例对应,它代表着类的类型。一个操作如GetFieldID,需要参数jclass,是一个类操作,因为它从一个类中获得field的描述。与此相反,GetInt
2017-06-01 09:38:52 7846
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人