FFmpeg
chen_chun_guang
这个作者很懒,什么都没留下…
展开
-
文档2:输出到屏幕
SDL and VideoCode: tutorial02.c为了在屏幕上显示,我们将使用SDL.SDL是Simple Direct Layer的缩写。它是一个出色的多媒体库,适用于多平台,并且被用在许多工程中。你可以从它的官方网站的网址http://www.libsdl.org/上来得到这个库的源代码或者如果有可能的话你可以直接下载开发包到你的操作系统中。按照这个指导,你将需翻译 2012-02-17 17:58:46 · 591 阅读 · 0 评论 -
指导1:制作屏幕录像
概要 代码: tutorial01.c电影文件有很多基本的组成部分。首先,文件本身被称为容器Container,容器的类型决定了信息被存放在文件中的位置。AVI和Quicktime就是容器的例子。接着,你有一组流,例如,你经常有的是一个音频流和一个视频流。(一个流只是一种想像出来的词语,用来表示一连串的通过时间来串连的数据元素)。在流中的数据元素被称为帧Frame。每个流是由不翻译 2012-02-17 17:30:02 · 873 阅读 · 0 评论 -
指导3:播放声音
Code: tutorial03.c现在我们要来播放声音。SDL也为我们准备了输出声音的方法。函数SDL_OpenAudio()本身就是用来打开声音设备的。它使用一个叫做SDL_AudioSpec结构体作为参数,这个结构体中包含了我们将要输出的音频的所有信息。在我们展示如何建立之前,让我们先解释一下电脑是如何处理音频的。数字音频是由一长串的样本流组成的。每个样本表示声音波形中的一个翻译 2012-02-20 12:57:09 · 1055 阅读 · 0 评论 -
文档4:创建线程
Code: tutorial04.c综述前面我们利用SDL的音频函数实现了对音频解码和播放的支持,我们定义一个包含音频回调函数callbacks的线程函数,当我们需要音频的时候就使SDL启动这个线程。现在我们将要对视频播放做同样的事情,这样能使代码更容易模块化和协作,尤其有利于音视频同步,那么我们从哪里开始呢?首先注意到,我们的主函数需要做太多的事情:运行event循环,读pack翻译 2012-02-20 19:00:27 · 1204 阅读 · 0 评论 -
指导5:同步视频
Code: tutorial05.c如何同步视频 前面整个的一段时间,我们有了一个几乎无用的电影播放器。当然,它能播放视频,也能播放音频,但是它还不能被称为一部电影。那么我们还要做什么呢?PTS和DTS幸运的是,音频和视频流都有一些关于以多快速度和什么时间来播放它们的信息在里面。音频流有采样,视频流有每秒的帧率。然而,如果我们只是简单的通过数帧和乘以帧率的方式来同步视频翻译 2012-02-20 19:19:33 · 793 阅读 · 0 评论 -
指导6:同步音频
Code: tutorial06.c同步音频现在我们已经有了一个比较像样的播放器。所以让我们看一下还有哪些零碎的东西没处理。上次,我们掩饰了一点同步问题,也就是同步音频到视频而不是其它的同步方式。我们将采用和视频一样的方式:做一个内部视频时钟来记录视频线程播放了多久,然后同步音频到上面去。后面我们也来看一下如何推而广之把音频和视频都同步到外部时钟。生成一个视频时钟 现在翻译 2012-02-20 19:33:56 · 644 阅读 · 0 评论 -
指导7:快进快退
Code: tutorial07.c处理快进快退命令 现在我们来为我们的播放器加入一些快进和快退的功能,因为如果你不能全局搜索一部电影是很让人讨厌的。同时,这将告诉你av_seek_frame函数是多么容易使用。我们将在电影播放中使用左方向键和右方向键来表示向后和向前一小段,使用向上和向下键来表示向前和向后一大段。这里一小段是10秒,一大段是60秒。所以我们需要设置我们的主循环翻译 2012-02-20 19:41:13 · 1030 阅读 · 0 评论 -
指导8:软件缩放
Code: tutorial08.c软件缩放库libswscale 近来ffmpeg添加了新的接口:libswscale来处理图像缩放。 但是在前面我们使用img_convert来把RGB转换成YUV12,我们现在使用新的接口。新接口更加标准和快速,而且我相信里面有了MMX优化代码。换句话说,它是做缩放更好的方式。我们将用来缩放的基本函数是sws_scale。但一开始,我们翻译 2012-02-20 19:48:54 · 732 阅读 · 0 评论