当前位置:  编程技术>移动开发
本页文章导读:
    ▪H264门类        H264类型 需要从硬压卡上获取的NALU封装成RTMP协议格式发送给RED5/FMS进行实时发布.   RTMP中传送 H.264使用的视频封装格式既是 FLV规范 中的 VideoTag   Frame Type UB [4] Type of video frame. The following valu.........
    ▪ Spring自动安装模式之:byName的解析        Spring自动装配模式之:byName的解析 Spring自动装配模式二:byName的解析自己简述:byName,就是要设置自动装载为byName的Bean,如果该BEAN中有某一个属性,那么,它就会在该配置文件XML中,找到.........
    ▪ 运用Tab Bar切换视图       使用Tab Bar切换视图 上一篇文章提到了多视图程序中各个视图之间的切换,用的Tool Bar,说白了还是根据触发事件使用代码改变Root View Controller中的Content View。这次,我们还是讲一讲切换视图.........

[1]H264门类
    来源: 互联网  发布时间: 2014-02-18
H264类型

需要从硬压卡上获取的NALU封装成RTMP协议格式发送给RED5/FMS进行实时发布.

 

RTMP中传送 H.264使用的视频封装格式既是 FLV规范 中的 VideoTag

 

Frame Type UB [4]

Type of video frame. The following values are defined:
1 = key frame (for AVC, a seekable frame)
2 = inter frame (for AVC, a non-seekable frame)
3 = disposable inter frame (H.263 only)
4 = generated key frame (reserved for server use only)
5 = video info/command frame


CodecID UB [4]

Codec Identifier. The following values are defined:
2 = Sorenson H.263
3 = Screen video
4 = On2 VP6
5 = On2 VP6 with alpha channel
6 = Screen video version 2
7 = AVC


AVCPacketType F UI8

The following values are defined:
0 = AVC sequence header
1 = AVC NALU
2 = AVC end of sequence (lower level NALU sequence ender is
not required or supported)


CompositionTime SI24
IF AVCPacketType == 1
Composition time offset
ELSE
0
See ISO 14496-12, 8.15.3 for an explanation of composition
times. The offset in an FLV file is always in milliseconds.

 

在第一个RTMP Message的数据包中,需要发送 AVC sequence header, 也就是AVCDecoderConfigurationRecord

其中就包含有Profile / Level / SPS / PPS 等解码需要的信息

 

然后就开始发送NALU了。

NALU在一个RTMP Message可以发送1个或者多个。

 

根据 NALU的 reference idc 可以得出 帧类型

 

  • typedef enum {  
  •  NALU_PRIORITY_HIGHEST     = 3,  
  •  NALU_PRIORITY_HIGH        = 2,  
  •  NALU_PRIORITY_LOW         = 1,  
  •  NALU_PRIORITY_DISPOSABLE  = 0  
  • } NaluRefIdc;  
  •  

     

    如果这个 VideoTag中含有 NALU_PRIORITY_HIGHEST 的NALU, 那么它的VideoTag的 Frame Type 应该是 FrameType_KeyFrame

     

  • enum FrameType  
  • {  
  •     FrameType_KeyFrame = 1,  
  •     FrameType_InterFrame = 2,  
  •     FrameType_DisposableInterFrame = 3,  
  •     FrameType_GeneratedKeyFrame = 4,  
  •     FrameType_VideoInfo = 5,  
  • };  
  •  


        
    [2] Spring自动安装模式之:byName的解析
        来源: 互联网  发布时间: 2014-02-18
    Spring自动装配模式之:byName的解析
    Spring自动装配模式二:byName的解析

    自己简述:byName,就是要设置自动装载为byName的Bean,如果该BEAN中有某一个属性,那么,它就会在该配置文件XML中,找到与之相同ID或者NAME的BEAN,让这个BEAN装载原BEAN。

    根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。例如,在bean定义中将autowire设置为byName,而该bean包含homeAddressServiceImpl属性(同时提供setHomeAddressServiceImpl(..)方法),Spring就会查找名为homeAddressServiceImpl的bean定义,并用它来装配给homeAddressServiceImpl属性。

    配置文件如下:

    <bean id="homeAddressServiceImpl"

         scope="singleton">

         <property name="address">

            <value>北京海淀上地软件园</value>

         </property>

    </bean>

    <bean id="empServiceImpl"

         scope="singleton" autowire="byName" />



    cn.csdn.service.HomeAddressServiceImpl代码

    public class HomeAddressServiceImpl extends AddressServiceImpl {


    private String address;


    public void setAddress(String address){

         this.address=address;

    }




    public HomeAddressServiceImpl() {

         super();

    }







    public HomeAddressServiceImpl(String address){

         this.address=address;

    }



    }



    cn.csdn.service.EmpServiceImpl 代码

    package cn.csdn.service;

    public class EmpServiceImpl {



    private HomeAddressServiceImpl homeAddressServiceImpl;



    public void setHomeAddressServiceImpl(

            HomeAddressServiceImpl homeAddressServiceImpl) {

         this.homeAddressServiceImpl = homeAddressServiceImpl;

    }



    }

    1 楼 kingpeixin 2012-04-28  
    <bean id="empServiceImpl"

         scope="singleton" autowire="byName" />
    再加上lazy-init=true
    这个是什么样的结果呢

        
    [3] 运用Tab Bar切换视图
        来源: 互联网  发布时间: 2014-02-18
    使用Tab Bar切换视图

    上一篇文章提到了多视图程序中各个视图之间的切换,用的Tool Bar,说白了还是根据触发事件使用代码改变Root View Controller中的Content View。这次,我们还是讲一讲切换视图,不过这次使用的是Tab Bar。

     

    这次要写的程序运行起来的效果是这样的:底部有几个图标,每个图标对应一个视图。每点击一个图标,对应的视图就会打开。如下图,就是我们做好的程序效果:

     

     

    每个Tab Bar有一个对应颜色的视图。

     

    为了搞清使用Tab Bar切换视图的原理,我们还是从Empty Application开始创建我们的程序。

     

    1、运行Xcode 4.2,新建一个Empty Application,名称为Tab Bar Application,其他设置如下图:

     

     

    2、为工程添加图标文件:

     

    这里要添加的图标文件是用来定制各Tab Bar的。首先新建一个Group,选择File — New — New Group,创建好后给新的Group重命名为Icons。然后,将准备好的四个图标文件拖到Group中,在弹出的窗口选择Copy items……(if needed),如下图:

     

     

    4、创建四个View Controller:

    选中Tab Bar Application这个Group,然后选择File — New — New File,在弹出的窗口,左边选择Cocoa Touch,右边选择UIViewController subclass,之后选Next,在弹出的窗口中,输入名称BlueViewController,并选中With xib,如下图:

     

     

    然后选择Next,选好位置,点击Create,这样就创建了一个ViewController。以同样的方式再创建三个,名称分别是GreenViewController,RedViewController,YellowViewController。

     

    5、创建TabBarController.xib:

    选中Tab Bar Application这个Group,然后选择File — New — New File,在弹出的窗口,左边选择User Interface,右边选择Empty:

     

     

    然后点Next,在弹出的窗口输入名称TabBarController,选好位置后点击Create。

     

     

    之后,在Group中点击TabBarController.xib,你会发现跟BlueViewController.xib不一样,里边没有一个像View一样的窗口,不要着急,我们拖一个Tab Bar Controller到里边:

     

     

    6、在上图中选择File’s Owner,打开Identity Inspector,在Class一栏选择AppDelegate:

     

     

    这样,我们就可以从TabBarController.xib向AppDelegate创建OutLet映射了。

     

    7、打开Assistant Editor,保证Assistant Editor中打开的是AppDelegate.h,在左边选中Tab Bar Controller,按住Control,往AppDelegate.h中创建映射:

     

     

    然后在弹出的窗口输入rootController,点击Connect:

     

     

    打开AppDelegate.m,在didFinishLaunchingWithOptions方法中添加代码:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        [[NSBundle mainBundle] loadNibNamed:@"TabBarController" owner:self options:nil]; 
        [self.window addSubview:self.rootController.view]; 
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        return YES;
    }
     

    8、单击TabBarController.xib,拖两个Tab Bar Item到Tab Bar上:

     

     

    9、选中第一个View Controller,在右边打开Identity Inspector,在Class中选择BlueViewController:

     

     

    然后,打开Attribute,在NIB Name选择BlueViewController:

     

     

    对其他的View Controller进行同样的操作,依次设成GreenViewController、RedViewController、YellowViewController。

     

    10、设置Tab Bar图标和文字:

    展开Blue View Controller,选中其中的Tab Bar Item,打开Attribute,如下图:

     

     

    Badge属性:设置的文字将以红色图标形式显示出来,比如,这个Tab显示的是Mail视图,你可以用Badge显示有多少封未读邮件。

     

    Identifier属性:这个属性对应的下拉菜单中,如果你选择的是不是Custom,比如是Favorite,那么这个Tab Bar的名称和图标就都设置好了。我们这里选择Custom。

     

    在Title输入Blue,在Image选择Blue.png。

     

    对其他Tab Bar Item进行类似操作,这样之后,整个Tab Bar如下图所示:

     

     

    11、现在单击.xib,选中View,打开Attribute Inspector,将其背景颜色改成蓝色。然后,在Simulated Metrics中设置Bottom Bar为Tab Bar:

     

     

    对GreenViewController、RedViewController和YellowViewController进行同样设置,不过背景颜色要设成与其名称相对应的。

     

    12、大功告成了,运行一下,看看效果吧:

     

     

     

    来源:http://my.oschina.net/plumsoft/blog/49748

     

     

     

     


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3