随笔分类 - 多媒体
摘要:0.闲来无事,想研究webrtc,看了一些网上的文章之后,觉得谬误较多,以讹传讹的比较多,自己试验了一把,记录一下。 官网的写的教程在实践中也觉得不用那么复杂,有种落伍与繁冗的感觉。 1.我想看的是webrtc在android平台的使用,所以就以android平台下载/编译为例子。由于周知的原因,w
阅读全文
摘要:开始写时,想把vlc/ffmepg/x264/xvid/都弄一遍,觉得很多代码都要自己编译一下才爽,后来发现,如果不做二次开发,拿dll回来用,足够了,不用费劲自己搞环境。大部分时间大家又想用windows平台下的编译方法,这又更加麻烦了,因为windows的shell环境太弱了,gcc又需要另外装,太麻烦了。而且想弄的库什么的太多,我乃普通人,学不了这么多东西。另外有太多事情大家已经重复做过很多次,写了很多文章,我不用画蛇添足了。所以我决定打个折扣,只写一些大家不太关心的,但是又有一些人想知道的。我要是能把264编解都搞定,xvid/ffmpeg又能用得虎虎生风,也不会像现在这样写普及文章了
阅读全文
摘要:一,概念解释什么是渲染?这是高大上的说法,翻译成正常语言,就是把图像缓冲区的数据显示到屏幕的过程,就是渲染。原理说白了很简单,但实际操作中有太多因素需要考量。OS/硬件提供的加速机制/解码后图像数据格式/字幕数据的格式。。。。刚开始查找资料时,我总是试图找到所有的渲染方式,后来发现这实在错的比较离谱。因为说到底,这是一个图形学的问题:如何在计算机屏幕上绘图。不同的图形库有不同的绘图接口,太多的厂商有自己的图形库,根本不可能穷举出所有的图形库。我们只能讨论一些相对主流的方式。另外去找所有的图形渲染方式也是没有意义的,因为他们的理念大体上又是差不多的,只是API不同。唯一的要求是,你要画的足够快,
阅读全文
摘要:在一个gpu如此强大的时代,视频解码怎么能少了gpu厂商的参加。为了用硬件加速视频解码,厂商定义了一些api。 好吧,一旦和硬件打交道,就会有os的参加,有了硬件与os参加,api肯定会变成很凌乱,看了一点代码,一些wiki,一些文档,写个总结,希望真正的专家斧正一下。windows平台: 微软一家说了算,硬件都是小弟。所以api没那么凌乱。就一种 DXVA(directx video acceleration),两个版本,1.0和2.0.linux平台: 什么事到了linux这,都异常让人郁闷。 号称给你很多选择,最自由的选择,如果都不满意,还可以自己定义一套。 其实呢?我根...
阅读全文
摘要:自己的这个笔记,废了好久,还是要坚持写下去,虽然现在看来,质量不太高,而且很多东西貌似没有说到位,只有自己才看得懂,明显不是技术普及的方式。先说基本原理,这个基本就是抄书了,因为不是做科研的,很多东西都是人们用了很多年才逐渐总结出来的。对于算法研究而言,本身就是要先知道哪个地方可以努力,哪些地方行不通。这些原理,就是指明方向的。一.视频压缩的可行性1.空间冗余一幅静态图像,比如人脸。背景,人脸,头发等处的亮度,颜色,都是平缓变化的。相邻的像素和色度信号值比较接近。具有强相关性,如果直接用采样数来表示亮度和色度信息,数据中存在较多的空间冗余。如果先去除冗余数据再编码,表示每个像素的平均比特数就会
阅读全文
摘要:玩了两天rtp协议,基本把rtsp/rtcp/rtp/rtmp/srtp/strcp/mms,几个协议的区别和概念弄明白了。这里记录一下。rtsp:类似用户界面操作,和Http比较类似,提供播放,停止,加入等功能。注意,这里rtsp只负责发送操作命令,实际的音视频数据,并不由这个协议承载。这是我困惑很久之后才明白的(我是不是太弱了,呵呵) rtsp协议并没有规定底层是由tcp还是udp实现,实际操做中,我通过google搜索发现rtsp确实有tcp和udp两种实现,我就不上抓包数据了,这个博客园里面已经有人干过了。另外这个也算和http不同的一点,http都是tcp。rtp : 这个协议...
阅读全文
摘要:最近搞windows编程,想学习一下direct show。编译了一下sdk里面的一个sample filter,做个笔记,记录一下。说来渐愧,vc也用了n久了,还没有自己动手建立一个正式的项目,都是在别人的项目里面增减东西,所以很多东西只能自己一步一步试探。学习filter本身可能不复杂,但是建立环境就非常恶心了,这里我写一点自己搭环境的过程,让需要的人可以少走点弯路。另外,一般需要建立这种工程的人,都是老程序员了,呵呵我这种新手,自然是没有机会弄,所以没弄过,我觉得也情有可原。哈哈。学习direct show,其实最基本的就是dxsdk sample里面baseclassed的学习。学好这
阅读全文
摘要:修bug修得头疼,看看自己的博客,坑挖了一堆,出来混,迟早是要还的,这里先补一个。刚开始看多媒体这块时,总是发现有新框架,新平台,新名词弄得云山雾绕,为了避免重复google/wiki,我尝试做个总节吧。之前写过codec与container的区别,这里就不多说了,更近应用层的东西。这些东西大概有:vlc/ffmepg/mplayer/gstreamer/openmax/mpc/ffdshow/directshow...这些软件,所涉及的层面和针对的应用场景,系统各不相同,按层次分别说一下。一.播放器层次这个层次上,是直接可以用的软件,已经做完了一切工作,如果我们需要用他们,是不需要写一行代码
阅读全文
摘要:播放器解决了视频播放的问题。通常来说,解决问题最好的办好就是大而化小,小而化无。因为整个播放过程是一个复杂的过程,所以播放器也采用分而治之的办法。简单来说,这个大问题可以分解为四个小问题。1,数据接收;2,数据解析;3,数据解码;4,数据输出。我会对mplayer和vlc这两个开源播放器的代码结构来说明这四个问题。一,数据接收(access)自然,我们不能无中生有,要处理数据,总要有数据来源才行。但是数据来源的渠道有很多种。可能是硬盘文件,可能是dvd光盘,也可能是http/httplive数据包,也可能是rtp数据包(vod),或者ftp,广播电视的ts流等等。所以第一步我们要处理的问题就是
阅读全文
摘要:这基本是一个老生常谈的东西了,但是我仍然是看了很多资料,加上一点点理解才完全明白了其中的差别所在。这就像上学时的考试大纲,这种东西要求是识记类型的,没有技术门槛,但是只有你把东西都记住之后,才完全知道书上再说什么。一,容器的概念什么叫容器,从字面的含义来说,能放东西的东西,就叫容器。打个比方就像桶,可以装水,可以装油,可以装硫酸,等等。一部电影,不可能只有图像,还有声音,可能还会有字幕,还会有文件作者,加密信息等等。但是我们又不能把这些东西单独存放,这样太麻烦了。所以发明这样一个“桶”,把图像,声音,字幕等等的东西,一股脑放到一个地方,这个“桶”就叫视频的容器。ps:又叫封装格式。一般来说,文
阅读全文
摘要:一直想写点关于多媒体学习的东西,又感觉自己掌握的东西太浅,太杂,写不出东西。网络上的资料其实已经很全面了,在学习的过程感觉虽然不少精品,但是却不够精品,而且有些东西也不太适合初学者。所以决定写点东西,当做自己的学习笔记。把网络上的资料整理一下,也顺便看看自己的理解是否有误,只针对初习者的笔记。先写提纲1,视频容器与编解码器的区别2,视频播放的基本原理3,颜色空间的概念及转换4,视频压缩的基本原理,一些常见压缩算法的概念5,常见容器的解析avi/mp4/mkv/ts/flv6,render的一些概念和可用库(sdl/directfb/fb/....)7,一些应该学习的开源框架与库用途和差别(vl
阅读全文