本系列文章导航
mencoder和ffmpeg參数具体解释(Java处理视频)
Windows下FFmpeg高速入门
FFmpeg简单介绍
FFmpeg是什么?
FFmpeg是用于录制、转换和流化音频和视频的完整解决方式, 包含 libavcodec ,一套率先的音/视频编解码类库。FFmpeg 在Linux上开发,当能够在大多数操作系统下编译,包含Windows。
Note
- FFmpeg对GCC的依赖非常强,所以就算是在Windows上, 用VC编译FFmpeg也不是一件轻松的事情。请尽量使用 GCC来编译FFmpeg,比較事半功倍。
FFmpeg的官方网址是 http://ffmpeg.mplayerhq.hu/。
中文Wiki是 http://www.ffmpeg.com.cn/,资料非常多。
FFmpeg的组成结构
FFmpeg主要由一下几个部分组成:
libavcodec: 一个包括了全部FFmpeg音视频编解码器的库。 为了保证最优性能和高可复用性,大多数编解码器从头开发的。 libavformat: 一个包括了全部的普通音视格式的解析器和 产生器的库。三个实例程序,这三个实例较为复杂,基本能够作为API使用手冊:
- ffmpeg:命令行的视频格式转换程序。
- ffplay:视频播放程序。(须要SDL支持)
- ffserver:多媒体服务器
了解完组成结构后,你会发现,假设你在寻找一种视频格式转换 的方式,那FFmpeg绝对是你的第一选择, libavcodec 则又是重 中之重。假设遇上API不会使用的情况,能够參考ffmpeg.c、ffplay.c、 ffserver.c、apiexample.c(解码)和output_example.c(编码)。
FFmpeg的编译
要使用FFmpeg,第一步就是编译,对于Linux上的用户,能够參考 http://www.ffmpeg.com.cn/index.php/Ffmpeg%E7%BC%96%E8%AF%91%E8%AF%A6%E8%A7%A3
对于Windows用户,能够參考 http://bbs.chinavideo.org/viewthread.php?tid=1897&extra=page%3D1
- 编译FFmpeg是一个复杂的过程,假设你想加高速度,领略FFmpeg 的风採,则能够跳过这一步,直接进入下一章节。
FFmpeg的SDK
FFmpeg是一个复杂的project,第一步编译,特别是Windows下的编译 过程,更是复杂。 因此,好心的网友提供了Windows下编译好的 dll和lib库文件,以及相关的头文件。新手们则可直接下载,并開始编写 FFmpeg库的程序了。
- SDK下载和编译參数能够參考 http://www.ffmpeg.com.cn/index.php/SDK_Download 。
- SDK入门宝典能够从 http://www.bairuitech.com/html/ruanjianxiazai/20070713/49.html下载。
以上两者已经足以完毕FFmpeg的入门,最新的SDK版本号是3.0, 相应于FFmpeg的版本号是 r10087。新手们能够从编译源码库中的 output_example.c開始,同一时候參考 SDK入门宝典 。
编译output_example.c的时候须要注意下面问题:
- VC的是不支持C语言中的inline,所以能够把相关的inline删除。
- 对于snprintf的支持,能够考虑从 http://www.ijs.si/software/snprintf/下载 snprintf.h和snprintf.c放入project中。
准备了一个 output_example.c 的VC (2008 express edtion)project,有兴趣的朋友 能够邮件至 tang.jiyu at gmail dot com 索取,或者訪问 http://tinyurl.com/5h4v8q 下载。
博文来源: http://huqilong.blog.51cto.com/53638/137140
博文来源: http://huqilong.blog.51cto.com/53638/137140