今天就对我实现的
linux
下的
tv
播放器进行一个阶段性的总结吧,目前我的这个
tv
测试程序已经能够实现流畅播放电视,在更改视频帧缓冲设置的情况下录制效果也还不错,并且实现了频道调整和电视频道回放的功能;另外,底层电视库中也增加了亮度、对比度、饱和度、色调调整的代码,以便将来在上层
GUI
界面中添加对应的设置功能;
这次我先比较详细的说明电视播放和录制的原理和关键代码的实现,两个部分就不拆开了,算作是晚交文章的一个惩罚吧,录制部分就算作是补偿的那一篇啦。
要想弄清楚电视播放和录制的原理,首先得搞清楚电视播放和录制时,数据帧流的流向和数据的存储是如何完成的。
下面我就先介绍一下电视播放时视频帧流的流向:
从视频设备/dev/video采集到得视频数据帧
-->
送到buffer存储
-->
1、(经过YUV420P到RGB32得转换)显示;
2、如果是录制状态,则对视频帧进行压缩,准备存储;同时要从音频设备中/dev/dsp中读取音频数据,我这里采用得是压缩存储,则需要经过mp3压缩,准备存储;
-->
1、显示部分,RGB32格式得视频帧可以直接使用QT得函数进行显示,如果你是采用SDL进行显示,那前面得RGB32格式转换都可以省略了,SDL可以直接显示YUV格式得视频帧;
2、录制状态中,在选定存储得文件格式(比如AVI)后,就进行音频和视频得数据存储了;
电视的播放和录制我想到这里你会有一个大概的数据流的概念了,这样,在以后的编码中就是以此数据流为基础,充分利用计算机的各种已有东西,进行编码实现这种理念;
下面我开始结合具体代码和文件结构进行详细说明:
首先分析几个技术难点,对于视频帧的采集、显示、压缩存储,在录制状态下这几样是同时进行的,这种并行计算在计
要想弄清楚电视播放和录制的原理,首先得搞清楚电视播放和录制时,数据帧流的流向和数据的存储是如何完成的。
下面我就先介绍一下电视播放时视频帧流的流向:
从视频设备/dev/video采集到得视频数据帧
-->
送到buffer存储
-->
1、(经过YUV420P到RGB32得转换)显示;
2、如果是录制状态,则对视频帧进行压缩,准备存储;同时要从音频设备中/dev/dsp中读取音频数据,我这里采用得是压缩存储,则需要经过mp3压缩,准备存储;
-->
1、显示部分,RGB32格式得视频帧可以直接使用QT得函数进行显示,如果你是采用SDL进行显示,那前面得RGB32格式转换都可以省略了,SDL可以直接显示YUV格式得视频帧;
2、录制状态中,在选定存储得文件格式(比如AVI)后,就进行音频和视频得数据存储了;
电视的播放和录制我想到这里你会有一个大概的数据流的概念了,这样,在以后的编码中就是以此数据流为基础,充分利用计算机的各种已有东西,进行编码实现这种理念;
下面我开始结合具体代码和文件结构进行详细说明:
首先分析几个技术难点,对于视频帧的采集、显示、压缩存储,在录制状态下这几样是同时进行的,这种并行计算在计