MPEG2-TS流文件的简介
随着从HDTV录制的高清节目在网上的流传,烧友们现在对TS这个名词大概已经不陌生了,但随之而来就是如何播放、如何添加字幕等等的一系列问题,本文将重点介绍一下这方面的应用操作。 先来简要介绍一下什么是MPEG2-TS吧。MPEG2格式大家都通过对DVD的接触而多多少少了解了一些,DVD节目中的MPEG2格式,确切地说是MPEG2-PS,全称是Program Stream,而TS的全称则是Transport Stream。MPEG2-PS主要应用于存储的具有固定时长的节目,如DVD电影,而MPEG-TS则主要应用于实时传送的节目,比如实时广播的电视节目。这两种格式的主要区别是什么
编写易于理解的代码
编写易于理解的代码提示 1:经常注释请经常为代码添加注释。假设您编写了一个过程,但没有为它做注释,几个月后,您再回过头来想对它进行一些修整(您绝对会这么做),将需要花费很多时间去研读这些代码,原因就是因为您之前没有做注释。而时间是您最为宝贵的资源。丢失的时间是永远也找不回来的。但注释和其他事情一样也是需要技巧的。只要多练习,在这方面的技能就会不断提高。注释有好有坏。最好不要将注释写得过长。假设为一个函数做了注释,而这个注释在将来可以节省您理解代码所需的时间,比如说 10 分钟。这很好。现在假设所编写的
Linux管道
管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别。有名管道叫named pipe或者FIFO(先进先出),可以用函数mkfifo()创建。Linux管道的实现机制在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:· 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4
Linux系统基础开发技术1:构建Linux 库文件
Author:gnuhpc WebSite:blog.csdn.net/gnuhpc实验环境:Ubuntu Linux 10.04 32bit1.库文件简介库文件是一个包含了编译后代码、数据的文件,用于与程序其他代码连编,它可以使得程序模块化、编译速度更快,并且易于更新。库文件分为三种(实质为两种,在随后两句话有解释):静态库(在程序之前就已经装载进其中了)、共享库(在程序启动之时加载进去,在程序直接共享)、动态加载库(dynamically loaded,DL)(在程序运行中任何时候都可以被加载进程序中使用,事实上DL并非是一个完全不同的库类型,共享库可以用作DL而被动态加载(静态库
C语言 itoa函数及atoi函数
toa函数及atoi函数 2007-05-11 13:52 C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子: # include <stdio.h> # include <stdlib.h> void main (void) { int num = 100; char str[25]; itoa(num, str, 10); printf("The number 'num' is %d and the string 'str' is %s. n" , num, str); } itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用 的基数。
将整数转换成字符串
将整数转换成字符串请编写一个 C 函数,该函数将给定的一个整数转换成字符串。【本程序在Dev C++ 4.9.9.2 下编译通过】下面的这个算法比较傻,垃圾的很,显示了一个C语言新手所应有的水平。而且处理不完全,算法考虑不周到,代码过于啰嗦,不够简洁,紧接着这个后面会有一个较为简洁、完全的代码。char * IntToStr(int Number){ char ch,*str,*t; int i,Temp,Len=0; str = (char *)malloc(11*sizeof(char)); t = str; Temp =Number; while(Temp != 0) { *t = (Temp%10)+0x30; Temp = Temp/10; Len++;
字符串操作函数
http://learn.akae.cn/media/ch25s01.html1. 字符串操作函数 请点评程序按功能划分可分为数值运算、符号处理和I/O操作三类,符号处理程序占相当大的比例,符号处理程序无处不在,编译器、浏览器、Office套件等程序的主要功能都是符号处理。无论多复杂的符号处理都是由各种基本的字符串操作组成的,本节介绍如何用C语言的库函数做字符串初始化、取长度、拷贝、连接、比较、搜索等基本操作。1.1. 初始化字符串 请点评#include <string.h> void *memset(void *s, int c, size_t n); 返回值:s指向哪,返回的指针就指向哪memset函数
DOS/Windows和Linux/Unix间文件格式转换
如何在Linux/Unix中转换windows文本文件的回车符由于windows文本文件的回车符通常是2个字符构成的,回车和换行,对应ASCII是0D,0A。如何将之转换成Linux/Unix文件系统中的换行符呢?下面介绍2个简单的方法(一般0D 0A构成的换行在Linux/Unix中会显示显示^M,我们只需要将之去掉就可以了) 1. 用sed命令替换sed -e 's/^M//g' original.txt > target.txt (注意^M 在Linux/Unix下是这样输入的:先按CTRL+v,接着按CTRL+SHIFT+m,呵呵~~ 其实俺主要就是为了记录一下这个输入方法) 2. 在vi中替换:%s/^M//gDOS/ 和Linux/Unix的文件换行回车
Analyzing Strings with sscanf
Analyzing Strings with sscanfThe counterpart or "opposite" of sprintf is sscanf. It looks at a string, and extracts values from it according to another string with format specifiers. It then places the values it has extracted in its arguments. The arguments must be variables, or other things that you can assign values to. For example, after the following code segment, the variable f will contain -3.6, and the variable i will contain 17:float f; int i; string the_string = "foo -3
sscanf()详解
sscanf()的一些使用说明 http://www.cppblog.com/tdweng/archive/2010/06/09/113495.html这里有些sscanf()的一些使用说明,都是从论坛,Blog里整理出来的。供大家使用。 通过学习和使用个人认为,在字符串格式不是很复杂,但是也并不简单的时候用这个函数比较合适,这个尺度就要靠自己把握了,字符串不是很复杂,但自己写个处理的函数比较麻烦,效率也不高,就用这个函数,如果字符串很复杂,那就用正则表达式吧。不多说了,看看下面这些介绍和列子吧!名称:sscanf() - 从一个字符串中读进与指定格式相符的数据.函数原型:Int sscanf( s
sscanf百科
http://blog.chinaunix.net/u3/116013/showart_2287271.htmlsscanf() - 从一个字符串中读进与指定格式相符的数据. 头文件:stdio.h 原型:Int sscanf( const char *, const char *, ...);int scanf( const char *, ...); 说明:sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。第一个参数可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | 't' | 'n' | 非%符号} 注:1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数
sscanf()和正则表达式的结合
sscanf()和正则表达式的结合http://hi.baidu.com/jangill/blog/item/e6dbca94663ce712d31b708b.htmlsscanf,表示从字符串中格式化输入 上面表示从str中,输入数字给x,就是32700 久以前,我以为c没有自己的split string函数,后来我发现了sscanf;一直以来,我以为sscanf只能以空格来界定字符串,现在我发现我错了。 sscanf是一个运行时函数,原形很简单: int sscanf( const char *buffer, const char *format [, argument ] ... ); 它强大的功能体现在对format的支持上。 我以前用它来分隔类似这样的字符串2006:03:18: int a, b, c; ss
正则表达式和sscanf
出处:http://blog.csdn.net/phil2036/archive/2009/05/27/4221704.aspx感谢原文作者分享。 在看这篇文章之前建议你先了解一下什么是正则表达式,具体不重复了,google一下能出一大堆,不过这篇文章比较好,贴个url http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm,作者说30分钟能看完的不是地球人,但是我15分钟就看完了还记住了90%以上,好吧我来自火星,玩笑到此结束,下面切入正题。 本文的命题源自于这样的一个url,protocol://ip:port/chn/mode,比如说,dv://192.168.1.253:65001/1/1。如果我要解析出来
H sscanf,scanf,fscanf与正则表达式
表头文件 #include(stdio.h )定义函数 int sscanf (const char *str,const char * format,........);函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。# include < stdio. h>int main( ){ const char * s = "iios/12DDWDFF@122" ; char buf[ 20] ; sscanf ( s, "%*[^/]/%[^@]" , buf ) ; printf ( "%sn" , buf ) ;
信号量函数 semget() semop() semctl()
semget() 可以使用系统调用semget()创建一个新的信号量集,或者存取一个已经存在的信号量集: 系统调用:semget();原型:intsemget(key_t key,int nsems,int semflg);返回值:如果成功,则返回信号量集的IPC标识符。如果失败,则返回-1:errno=EACCESS(没有权限)EEXIST(信号量集已经存在,无法创建)EIDRM(信号量集已经删除)ENOENT(信号量集不存在,同时没有使用IPC_CREAT)ENOMEM(没有足够的内存创建新的信号量集)ENOSPC(超出限制) 系统调用semget()的第一个参数是关键字值(一般是由系统调用ftok()返回的)。系统内核将此值和系统中
信号量和互斥锁
来自:linux那些事我是USB 网名为卖血上网的哥们说话了,那么到底什么是信号量?或者什么是互斥锁?先说互斥锁.它诞生于这样一个背景.这个世界上,有些东西只能属于某一个人,或者说在一个时间里只能属于一个人,这你承认吧,比如一个女孩的心.当你要追求一个女孩时,你首先会去了解其人是否名花有主,若是否,你才会去追求,若已然有主,那么你只能放弃,或者准确的说,你只能等待.当然你可以很激昂的说,如果等待可以换来奇迹的话,我宁愿等下去,哪怕一年,抑或一生!然而,她爱的是他,终究不是你,所以你伤悲,流泪,却打不开她心中那把锁.这里你应该就能感觉
Linux下信号灯的使用
作者:杨硕,华清远见嵌入式学院讲师。一、信号灯简介:Linux支持系统5的信号灯(semaphore),是一种进程间通信的方式,只不过它和管道、FIFO或者共享内存等不一样,信号灯主要用于同步或者互斥对共享资源的访问,它的发明来源于火车运行系统中的“信号灯”,利用信号灯可以实现 “PV操作”这种进程间同步机制。P操作是获得资源,将信号灯的值减1,如果结果不为负则执行完毕,进程获得资源,否则进程睡眠以等待资源别的进程释放资源;V操作则是释放资源,给信号灯的值加1,释放一个因执行P操作而等待的进程。二、信号灯的两种类型1、二值信
c函数编写规范
一、可重入函数 1)什么是可重入性? 可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。 2)可重入函数: 不为连续的调用持有静态数据。 不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数
c++学习渐进数目
《 Inside the C++ Object Model》我自己现在也在看这本书,对C++对象模型介绍的非常好,是深入了解C++的资料书籍。C++学习应该从两个方面来学习,首先学习C++语言层面,也就是C++语法,如果深入学习的话就会进入C++底层。。。第二个层面就是对象,设计很广泛:对象设计,对象复用,STL,COM, BOOST。。。 1. 《The C++ Programming Language》 (Special 3rd Edition) by Bjarne StroustrupC++之父著作的大头作,非常不错,很厚,对C++介绍的非常详细。 2. 《The Design and Evolution of C++》 by Bjarne Stroustrup如果你只打算购买一
学习C++:实践者的方法
前言 我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在各大国内论坛上,还是在comp.lang.c++.moderated这样的国际C++论坛上,乃至于在douban上的小组内,有心者都会发现,对C++语言的细节的关注一直都没有停止过,