《FFmpeg Basics》中文版-03-比特率/帧率/文件大小

写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章。正文比特率和帧速率是视频的基本特征,它们的正确设置对整体视频质量非常重要。 如果我们知道所有包含的媒体流的比特率和持续时间,我们可以计算输出文件的最终大小。 由于在使用FFmpeg工具时对帧速率和比特率的理解很重要,因此包含每个术语的简短描述。帧率(频率)的介绍帧速率是编码成视频文件的每秒帧数(FPS或fps),人眼需要至少约15 fps来观看连续运动。 帧率也称为帧频,其单位是赫兹(Hz),LCD显示器通常具有60 Hz的频率。有两种帧速率 - 隔行(在FPS编号后表示为i)和逐行(在FPS编号后表示为p)。在电视中使用隔行帧率:*NTSC标准使用60i fps,意味着每秒隔行扫描60次(30帧)PAL和SECAM标准使用50i fps,这意味着50隔行场,相当于每秒25帧24p,25p和30p的逐行帧率被用于电影行业。 高端HDTV产品使用较高的帧频50p / 60p。常见的视频帧率

蓝色的,,我弄不出来,就用图片代替了FPSi=interlacedp=progressive描述24p or 23.976从20世纪20年代开始,电影行业的标准帧速率,所有的电影都是以这个频率拍摄的。 当这些电影被采用到NTSC电视广播时,帧速率降低到24×1000/1001 = 23.976值,但是对于PAL / SECAM电视,电影的帧速率增加到25帧/秒。25p由于25个逐行扫描视频可轻松转换为50个隔行扫描电视场,因此电影频率为50赫兹(PAL和SECAM标准)的国家中的电影和电视的标准帧频。30p常见的视频帧速率,常用于数码相机和摄像机。 它可用于60赫兹(NTSC)隔行场的电视广播。50iPAL和SECAM电视的标准场率(隔行帧率)。60ior 59.94NTSC电视的标准场频率,在彩电发明之后,帧速率被降低到60 * 1000/1001 = 59.94的值,以防止色度副载波和声音载波之间的干扰。50p/60pHDTV(高清晰度电视)的通用帧频。48p提议的帧速率,目前经过测试了72p提议的帧速率,目前经过测试了120p为UHDTV(超高清晰度电视)标准化的渐进式格式,计划成为UHDTV的单一全球“双精度”帧速率(而不是使用PAL标准的100 Hz和NTSC标准的119.88 Hz)帧率设置使用- r选项要设置视频帧速率,我们在输出文件之前使用-r选项,语法是:ffmpeg -i input -r fps output例如改变电影的帧率。avi文件从25到30 fps值,我们使用命令:ffmpeg -i input.avi -r 30 output.mp4我给大家演示一下,我把我的根目录下面的一个SDWebimage.mp4文件输出为30fps的test.mp4文件 使用的命令如下:(你用自己的视频文件做测试,别瞎模仿)ffmpeg -i /Users/zhangfangtao/SDWebImage.mp4 -r 30 test.mp4看到没,下面真的就出来了输出的test.mp4:先让你们看一下之前的视频信息是什么:再让你们看一下现在的视频信息是什么:有没有发现,重新编码以后不仅仅fps变化了,Data Rate也改变了?因为我没有设置,FFmpeg使用了默认的比特率,重新编码之后,自动降码了。所以,建议各位做转码的时候把参数填的全面一些,要不然会有意外存在。当使用原始输入格式时,-r选项也可以在输入之前使用。使用fps过滤器另一种设置帧速率的方法是使用fps过滤器,这在过滤链中尤其有用。描述将视频帧速率更改为指定的值。Syntaxfps=fps=number_of_framesfps指定输出帧速率的数字或预定义缩写。例如,要更改剪辑的输入帧速率。mpg文件到值25,我们使用命令。ffmpeg -i clip.mpg -vf fps=fps=25 clip.webm我亲自给大家测试一下,我用的是我刚才转码出来的test.mp4,转码成为test.webm,具体的命令行如下:ffmpeg -i /Users/zhangfangtao/test.mp4 -vf fps=fps=25 test.webm因为没有设置bit rate,所以给了一个默认值96000bps帧速率的预定义值。除了数值,设置帧率的两种方法都接受下一个预定义的文本值:帧速率的预定义缩写。缩写精确值相应的FPS(相应的帧)ntsc-film24000/100123.97film24/124pal, qpal, spal25/125ntsc, qntsc, sntsc30000/100129.97例如,设置帧速率为29.97 fps,接下来的3个命令给出了相同的结果:这个就不用我给大家示范了吧。。。ffmpeg -i input.avi -r 29.97 output.mpgffmpeg -i input.avi -r 30000/1001 output.mpgffmpeg -i input.avi -r ntsc output.mpg位(数据)率的介绍比特率(也是比特率或数据率)是决定整体音频或视频质量的参数。 它规定了每时间单位处理的位数,在FFmpeg中,位速率以每秒位数表示。类型的比特率类型缩写描述平均比特率ABR平均每秒处理的位数,该值也用于VBR编码,需要时是输出的某个文件大小恒定比特率CBR每秒处理的比特数是恒定的,这对于存储是不实际的,因为具有快速运动的部分需要比静态比特更多的比特,CBR主要用于多媒体流可变比特率VBR每秒处理的比特数是可变的,复杂的场景或声音被编码更多的数据并与CBR进行比较,相同尺寸的文件的VBR质量比CBR更好(VBR编码比CBR需要更多的时间和CPU功率 ,但最近的媒体播放器可以充分解码VBR。)设置比特率比特率决定了存储1秒编码流的位数,它使用-b选项设置,以区分推荐使用-b:a或-b:v格式的音频和视频流。 例如,要设置总体1.5 Mbit / s的比特率,我们可以使用以下命令:ffmpeg -i film.avi -b 1.5M film.mp4我是用的是我电脑桌面上的一个视频,使用的代码如下:ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -b 1.5M newTest.mp4原来的视频信息是:转码之后的视频信息是:如果可能的话,ffmpeg使用一个可变比特率(VBR),并对比具有快速运动的部分具有更少比特的静态部分进行编码。 ffmpeg通常用于使用高级编解码器来降低输出文件的比特率和相应的文件大小,例如:ffmpeg -i input.avi -b:v 1500k output.mp4该命令将输入比特率更改为每秒1500千比特。在我电脑上测试的命令行是:ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -b:v 1500k /Users/zhangfangtao/Desktop/newTest.mp4转码之后的结果如下图:固定比特率(CBR)设置例如视频会议之类的实时视频流,可以使用固定的比特率,因为传输的数据不能被缓冲。为了设置输出的恒定比特率,三个参数必须具有相同的值:比特率(-b选项)、最小速率(-minrate)和最大速率(-maxrate)。对于minrate和maxrate选项可以添加一个流指示符,maxrate选项需要设置一个-bufsize选项(比特的速率控制缓冲区大小)。例如,要设置0.5 Mbit/s的CBR,我们可以使用以下命令:ffmpeg -i in.avi -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M out.mkv我自己测试的命令行是:ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M /Users/zhangfangtao/Desktop/newTest.mp4输出的视频信息是:设置输出文件的最大尺寸为了使输出文件的大小保持一定的值,我们使用-fs选项(文件大小的缩写),期望值以字节为单位。 例如,要指定10兆字节的最大输出文件大小,我们可以使用以下命令:ffmpeg -i input.avi -fs 10MB output.mp4给大家看一下我自己的测试命令行:ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -fs 1MB /Users/zhangfangtao/Desktop/newTest.mp4结果可能要让大家失望了,我设置的1MB的大小,结果输出的文件将近8MB(ーー゛)我去。。。我把大小的控制设置成1024K,就会精确很多,新的命令行:ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -fs 1024K /Users/zhangfangtao/Desktop/newTest.mp4再看一下结果:文件的大小计算编码输出的最终文件大小是音频和视频流大小的总和。以字节为单位的视频流大小的方程是(由比特到字节的转换为8):video_size = video_bitrate * time_in_seconds / 8如果音频未压缩,其大小由公式计算:audio_size = sampling_rate * bit_depth * channels * time_in_seconds / 8要计算压缩音频流的文件大小,我们需要知道它的比特率和方程。audio_size = bitrate * time_in_seconds / 8。例如,用1500 kbits/s的视频比特率和128 kbits/s音频比特率计算10分钟视频剪辑的最终大小,我们可以使用这些公式:file_size = video_size + audio_sizefile_size = (video_bitrate + audio_bitrate) * time_in_seconds / 8file_size = (1500 kbit/s + 128 kbits/s) * 600 sfile_size = 1628 kbit/s * 600 sfile_size = 976800 kb = 976800000 b / 8 = 122100000 B / 1024 = 119238.28125 KBfile_size = 119238.28125 KB / 1024 = 116.443634033203125 MB ≈ 116.44 MB1 byte (B) = 8 bits (b)1 kilobyte (kB or KB) = 1024 B1 megabyte (MB) = 1024 KB, 等.最终文件的大小比计算的要大一些,因为包含了一个muxing开销和文件元数据。都是计算题,我就不发表什么个人的测试数据了。。。

(0)

相关推荐

  • 使用ffmpeg从视频中截取图像帧(最简单实用的视频抽帧,一句命令)

    Table of Contents 1.最佳方式 2.普通的命令:(画质差) 3. 视频旋转: 4. 批量视频抽帧: 参考:ffmpeg视频抽帧 1.最佳方式 第二种方法抽帧图片画质很差,这里提供更好 ...

  • 如何使视频文件变小,不损失画质,这个软件您要了解

    我们希望HDR 4K和8K视频具有极其逼真的视觉体验.但是我们当中的许多人都对文件大而望而却步.这不仅是对我们的计算机和智能手机的巨大挑战,而且对于在线共享甚至是后期视频编辑也是一个挑战.   例如, ...

  • 《FFmpeg Basics》中文版-22- 颜色修正

    写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章.正文色彩校正通常表示图像版本,如调整亮度,色彩平衡(红色, ...

  • 《FFmpeg Basics》中文版-01-FFmpeg基本介绍

    写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章.正文为了最优地使用各种FFmpeg组件,需要正确理解FFm ...

  • 《FFmpeg Basics》中文版-02-显示帮助和功能

    写在前面 如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑 也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章. 正文 关于FFmpeg程序的帮助和其他信息都显示在空 ...

  • 《FFmpeg Basics》中文版-04-调整和伸缩视频

    写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章.正文在FFmpeg中调整视频的大小意味着可以通过一个选项改 ...

  • 《FFmpeg Basics》中文版-07-翻转和旋转视频

    写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章.正文视频帧的翻转和旋转是常见的视觉操作,可以用来创建各种有 ...

  • 《FFmpeg Basics》中文版-06-填充视频

    写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章.正文填充视频意味着向视频帧添加额外的区域以包含额外的内容. ...

  • 《FFmpeg Basics》中文版-05-裁剪视频

    写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章.正文裁剪视频意味着从输入到输出中选择想要的矩形区域而没有余 ...

  • 《FFmpeg Basics》中文版-09-overlay-画中画

    写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章.正文overlay视频技术经常被使用,常见的例子是放置在电 ...

  • 《FFmpeg Basics》中文版-10-为视频添加文字

    写在前面如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑也可以关注我的简书账户:张芳涛,我后期会发布更多的音视频以及图像处理方面的文章.正文视频中包含的文本数据可以显着提高其信息质量.在视频中添 ...