获取ffmpeg源代码

如果你是在Windows环境下,则可以先装SVN的一个客户端TortoiseSVN(非常好用,强烈推荐),他安装完成后会集成在右键菜单中,点Checkout菜单,在弹出的界面中输入:svn://svn.mplayerhq.hu/ffmpeg/trunk,然后选择一个本地目录,按确定就可以把ffmpeg的源代码下载到你指定的目录中了。

FFMPEG功能

视频音频格式转换

关于 frame的一些基本知识

帧速率

帧速率是每秒显示的图像数。标准影片(NTSC) 是29.97 帧第秒 (fps),电影是每秒24 帧fps。欧洲标准是(PAL) 25 帧fps。如果你对你影片的尺寸

不是太注重的话,保留默认的Current选项。这将会使你制作的影片的帧速率和源文件一致。不管怎样,如果你想降低带宽和CPU的占用,你可以选择一个低的帧

速率。高的帧速率拥有高的品质的,但文件尺寸也更大。如果你选择的帧速率低于你的源文件的帧速率,一些帧将被删除。如果你选择的帧速率比你的源文件高

的话,已有的帧将被重复 (不推荐,因为增加了尺寸,但品质没有提高)。如果你选择的帧速率低于你的源文件的帧速率,使用一个你当前帧速率的简分数,比如

1/2, 1/3 等等。例如,你当前的帧速率是30 (29.97),使用15 或10。但话说回来了,要最好的H.264品质,最好保留Current,当前)设置。

关键帧

很多编码软件使用frame differencing(帧差异)来压缩图像。帧差异其实是判断从开始帧起哪些信息发生了变化 (称为key frame关键帧)。

关键帧包含了图像的所有信息。后来的帧仅包含改变了的信息。这取决于你用的编码软件,你可以指定你想要的关键帧如何出现。 如果你没有足够的关键帧,你的影片

品质可能比较差,因为所有的帧从别的帧处产生。另一问题是,关键帧多了将导致影片更大,码率更高。 在一些编码软件中,当从一帧到下一帧有太多的内容发

生改变时,那些增加的关键帧是自动插入的。 对于一般的用途,一个比较好的原则是每5秒设一个关键帧。如果你正在建立一个RTSP流文件,并且关心传输网络

的可靠度,你可能要1到2秒增加一个关键帧。要让编码软件来处理关键帧的间隔,选择 Automatic。针对H.264,我们推荐让编码软件来确定关键帧的间隔,为

此你要选择Automatic以获得最佳品质。

码率

通常情况下,高码率就有高的品质,但文件也会很大。在大多数情况下,你要根据你观看的影片设置码率,例如,对于384K 连接速度,你要限制码率为

350-360k每秒来留一些带宽给网络传输。如果文件是下载回来后播放,那码率可以很高(高码率,然而,网速比较慢的用户将要花比较长的时间来等待播放的开

始)。另外,记住在对话框中设置码率时,你要留一些空间给音频。

针对 H.264, 这里有一些常用的码率方案:

§ 画面尺寸 1920 x 1080 (真正高清), 选择码率为7,000-8,000 Kbps。

§ 画面尺寸 1280 x 720 (通用高清), 选择码率为5,000-6,000 Kbps。

§ 画面尺寸 640 x 480 (标清), 选择码率为1,000-2,000 Kbps。

§ 画面尺寸 320 x 240 (网络传输), 选择码率为300-500 Kbps。

§ 画面尺寸176 x 144 (3G), 10-15 fps的内容选择码率为50-60 Kbps, 24-30 fps 的内容选择码率为150-200 Kbps。

 
提及3G 格式, 一定要记住影片的码率会被你设置的其它的压缩选项所影响, 如同帧速率。因此高的帧速率,要有高的码率,如果你对码率要求不是特别严格并且你只想QuickTime带给你一个比较好的影片效果,你可以通过选择Automatic让H.264 编码器选择一个理想的码率。 编码器会按你选择的尺寸和你用品质滑动条选择的品质来选择合适的编码。
 
优化:如果你已经输入了你自己的码率而不是自动选择码率,在Optimized for 下拉菜单中就有你选择的传送方式的相关选项。这些选项将告诉编码器可以高于
或低于你选择的的码率多少。要得到最好的品质,选择Download。如果你想要借助CD 或 DVD来传送影片,在码率中选择 CD/DVD,CD/DVD需要被进行一些限制
,因此光驱要保持与观看者的电脑读与数据传送畅通 。如果你想借助RTSP流来传送影片,码率选择Streaming 将是最大限制。此选项仅能用于有限制的压缩软件,如H.264。
为什么会有关键帧的存在?
因为mpeg或者其他压缩方法(我只了解过mpeg),为了提高压缩比,就选择某一帧作为基帧,以它为参考,后面的帧只记录改变的信息,这是一个压缩的
技巧,记录信息的改变是通过前后帧之间的图像相关性来完成的,分为(I,B,P)三种帧式,这三种帧式分别是三种不同的采用相关性的方式。这里的基帧就是关键帧了。

http://www.cnblogs.com/elesos/archive/2013/01/07/2850255.html

ffmpeg入门基础知识的更多相关文章

  1. USB入门基础知识(转)

    源:USB入门基础知识 相关名词: 主机(Host) 设备(Device) 接口(Interface) 管道(Pipe) 管道是主机与设备端点数据传输的连接通道,代表了主机的数据缓冲区与设备端点之间交 ...

  2. Linux入门基础知识

    注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...

  3. React Native 入门基础知识总结

    中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...

  4. Greenplum入门——基础知识、安装、常用函数

    Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709    版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...

  5. 1)Linux程序设计入门--基础知识

    )Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makef ...

  6. React入门---基础知识-大纲-1

    -----------------在慕课网学习react入门笔记-------------- ---------博主边学边记录,手把手进行学习及记录---------- --------------- ...

  7. PHP基础入门(二)---入门基础知识必备

    前言 在上一章中,我们初步了解了PHP的网页基础和PHP的入门基础,今天继续给大家分享更多有关PHP的知识. 理论知识看起来可能比较枯燥一些,但是我们的实践(敲代码)毕竟离不开它. 只有理论与实践相结 ...

  8. CodeMix入门基础知识

    CodeMix在线订购年终抄底促销!火爆开抢>> CodeMix入门 CodeMix是一个Eclipse插件,可以直接从Eclipse访问VS Code和为Code OSS构建的附加扩展的 ...

  9. Vue 2.0入门基础知识之全局API

    3.全局API 3-1. Vue.directive 自定义指令 Vue.directive用于自定义全局的指令 实例如下: <body> <div id="app&quo ...

随机推荐

  1. 把Execl表格中的数据获取出来保存到数据库中

    比如我们遇到一些需要把execl表格中的数据保存到数据库中,一条一条保存效率底下而且容易出错,数据量少还好,一旦遇到数据量大的时候就会累死个人啊,下面我们就来把execl表格中数据保存到对应的数据库中 ...

  2. nginx--cookies转发

    nginx根据cookie分流   nginx根据cookie分流众所周知,nginx可以根据url path进行分流,殊不知对于cookie分流也很强大,同时这也是我上篇提到的小流量实验的基础. 二 ...

  3. 高通msm8994启动流程简单介绍

    处理器信息 8994包括例如以下子系统: 子系统 处理器 含义 APSS 4*Cortex-A53 应用子系统 APSS 4*Cortex-A57 应用子系统 LPASS QDSP6 v5.5A(He ...

  4. 转: 多版本并发控制(MVCC)在分布式系统中的应用 (from coolshell)

    from:  http://coolshell.cn/articles/6790.html 问题 最近项目中遇到了一个分布式系统的并发控制问题.该问题可以抽象为:某分布式系统由一个数据中心D和若干业务 ...

  5. Android 设定横屏,禁止屏幕旋转,Activity重置 [更新视频播放器相关]

    1. 设定屏幕方向 当指定了屏幕的方向后(非SCREEN_ORIENTATION_UNSPECIFIED),屏幕就不会自己主动的旋转了 有2中方式控制屏幕方向: 1.1 改动AndroidManife ...

  6. mysql insert into 时报1062错误

    插入数据库时报1062错误,并没有错误详解 而网上的原因大多是主键重复,找了半天并没有解决办法 最后发现是表设置了联合唯一 ,插入的数据和之前的一样 >_< 太真实了

  7. Android的logger机制分析

    分析安卓的Logger机制 一.概述 Logger机制是在Android系统中提供的一个轻量级的日志系统,这个日志系统是以驱动程序的形式在内核空间实现的,在用户空间分别提供了Java接口和C/C++接 ...

  8. 批量杀死mysql进程

    http://www.chengyongxu.com/blog/%E6%89%B9%E9%87%8F%E6%9D%80%E6%AD%BBmysql%E8%BF%9B%E7%A8%8B/

  9. UVA 610 - Street Directions(割边)

    UVA 610 - Street Directions option=com_onlinejudge&Itemid=8&page=show_problem&category=5 ...

  10. CentOS minimal 安装ssh 服务 和客户端

      检查是否装了SSH包 如果现实有openssh-server 说明系统已经安装了ssh 2 如果系统没有安装ssh 那么可以在线安装 yum install openssh-server 3 设置 ...