GStreamer iOS教程1 —— GStreamer连接

 GStreamer是相当高大上的一个流媒体应用程序开发框架,目前中文的资料不多,自己在学习中诞生了一个把官方的Tutorial翻译成中文的一个念头,一方面可以推广这个东西,让其他有兴趣的程序员快速上手,另一方面也能让自己得到锻炼。在这里立个碑,希望自己能坚持下去。

       术语方面我会采用英文表述,方便交流和沟通。下面是第一篇的正文:

1. 目标
        第一个iOS的教程非常简单,仅仅是获得GStreamer的版本并在界面上显示出来。主要是演示一下xCode下如何使用GStreamer的库。


2. Hello GStreamer!
        这个项目的代码是使用“GStreamer Single View Application template”来生成的,具体代码可以在安装包里找到。这个View里面仅仅包含一个用来显示GStreamer版本的UILabel控件。


3. UI界面
        UI方面使用storyboards来显示一个singleView,其中包括一个居中的UILabel。在ViewController的代码里面包含一个IBOutlet的label变量。

ViewController.h

[objc]  view plain copy
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface ViewController : UIViewController {  
  4.     IBOutlet UILabel *label;  
  5. }  
  6.   
  7. @property (retain,nonatomicUILabel *label;  
  8.   
  9. @end  

4.  GStreamer后端

 所有的GStreamer代码都维护一个ObjC的类——GStreamerBackend。在后续的教程里面这个类会逐渐包含更多内容,目前它仅仅包含一个获得GStreamer版本的方法。
   GStreamerBackend是用ObjC写的,所以需要注意一下C和ObjC之间的转化问题(译者注:GStreamer是基于C写就的)。有了这个类会让UI调用起来更方便,有点类似于Android版本上的JNI代码所起到的作用。

GStreamerBackend.m

[objc]  view plain copy
  1. #import "GStreamerBackend.h"  
  2.   
  3. #include <gst/gst.h>  
  4.   
  5. @implementation GStreamerBackend  
  6.   
  7. -(NSString*) getGStreamerVersion  
  8. {  
  9.     charchar *version_utf8 = gst_version_string();  
  10.     NSString *version_string = [NSString stringWithUTF8String:version_utf8];  
  11.     g_free(version_utf8);  
  12.     return version_string;  
  13. }  
  14.   
  15. @end  

5. 视图

      这个ViewController实例化了GStreamerBackend类,并且获得GStreamer的版本在Label上显示出来,就这么简单!

ViewController.m

[objc]  view plain copy
  1. #import "ViewController.h"  
  2. #import "GStreamerBackend.h"  
  3.   
  4. @interface ViewController () {  
  5.     GStreamerBackend *gst_backend;  
  6. }  
  7.   
  8. @end  
  9.   
  10. @implementation ViewController  
  11.   
  12. @synthesize label;  
  13.   
  14. - (void)viewDidLoad  
  15. {  
  16.     [super viewDidLoad];  
  17.     // Do any additional setup after loading the view, typically from a nib.  
  18.     gst_backend = [[GStreamerBackend alloc] init];  
  19.       
  20.     label.text = [NSString stringWithFormat:@"Welcome to %@!", [gst_backend getGStreamerVersion]];  
  21. }  
  22.   
  23. - (void)didReceiveMemoryWarning  
  24. {  
  25.     [super didReceiveMemoryWarning];  
  26.     // Dispose of any resources that can be recreated.  
  27. }  
  28.   
  29. @end  

6. 结论

    第一个iOS教程结束了。主要是为了说明因为C和ObjC的兼容,GStreamer支持iOS的应用和支持桌面应用一样简单。为了编码的清晰增加了一个ObjC的封装(GStreamerBackend类),但在应用中直接调用GStreamer的framework也是可以的。


原文链接:http://blog.csdn.net/sakulafly/article/details/17504203

你可能感兴趣的:(GStreamer iOS教程1 —— GStreamer连接)