专栏首页转载gongluck的CSDN博客FFmpeg菜鸡互啄#第1篇#一些基本概念

FFmpeg菜鸡互啄#第1篇#一些基本概念

播放一个视频文件的流程

封装格式

视频流和音频流按照一定的格式存储在一个文件中。常见的封装格式有mp4、flv、avi、mkv…

视频编码

将视频像素数据(RGB, YUV等)压缩编码成视频流,从而降低视频的数据量。一般使用H.264的情况会比较多,可以将图像数据压缩100倍以上。

音频编码

将音频采样数据(PCM等)压缩为音频流,从而降低音频的数据量。一般使用AAC的情况会比较多,可以将音频数据压缩10倍以上。

视频像素数据

保存了屏幕上每个像素点的像素值。常见的像素数据格式有RGB24、RGB32、YUV420P、YUV422P、YUV444P等。压缩编码中一般使用的是YUV格式的像素数据, 最为常见的格式为YUV420P。视频像素数据体积很大,一般情况下1小时高清视频的RGB24格式的数据体积为:

3600*25*1920*1080*3=559.9GByte

PS:这里假定帧率为25Hz,取样精度8bit。

音频采样数据

保存了音频中每个采样点的值。音频采样数据体积很大,一般情况下一首4分钟的PCM格式的歌曲体积为:

4*60*44100*2*2=42.3MByte

PS:这里假定采样率为44100Hz,采样精度为16bit。

最后

使用FFmpeg对媒体文件解码之后,大多数情况会直接得到YUV和PCM数据,再把数据利用SDL等媒体库就可以直接播放(其实像VLC这样的FFmpeg的儿子可以直接使用其接口播放媒体文件)。总的来说,我们一开始学习FFmpeg的时候可以先不深入研究各种封装格式、编码格式和数据格式。研究那些的时候应该就不是菜鸟了吧~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 编译boost

    VS2015编译boost1.62 Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标...

    _gongluck
  • FFmpeg菜鸡互啄#第6篇#音频帧格式转换(重采样)

    关键步骤 struct SwrContext* swr_covert_ctx = swr_alloc_set_opts(NULL, av_get_def...

    _gongluck
  • 跟我一起写Makefile

    makefile 介绍 make命令执行时,需要一个 makefile 文件,以告诉make命令如何去编译和链接程序。 首先,我们用一个示例来说明makefil...

    _gongluck
  • Apache如何设置Enable Keep-Alive

      在优化网站性能的时候,我们会发现有些站点的Enable Keep-Alive分数很低,如何调整设置呢?HTTP持久连接(英语:HTTP persistent...

    ytkah
  • MySQL 数据库mysqlbinlog使用问题:unknown variable ‘default-character-set=utf8‘.解决方法

    小蓝枣
  • lambda架构+kappa架构+IOTA架构

    设定标准数据模型,通过边缘计算技术把所有的计算过程分散在数据产生、计算和查询过程当中,以统一的数据模型贯穿始终,从而提高整体的预算效率,同时满足即时计算的需...

    CoreDao
  • 使用纯粹的JS构建 Web Component

    问题:我怎么才能收到你们公众号平台的推送文章呢? Web Component 出现有一阵子了。 Google 费了很大力气去推动它更广泛的应用,但是除 Oper...

    企鹅号小编
  • 三分钟带你看遍世界大学排行

    代码大学,一直都是神圣的学习知识的殿堂,各个世界级名校都不断地为社会输送着人才,今天我们就来盘一盘世界大学的排名情况。

    周萝卜
  • Python 利用Python操作excel表格之xlwt介绍

    sheet1 = work_book.add_sheet('sheet1') # 添加表单 add_sheet(表单名称)

    授客
  • 容器 vs. 虚拟机

    当人们讨论云计算时,经常会提及两个术语:虚拟机和容器。在多云时代尤其如此,因为组织的跨平台战略至关重要。虚拟机和容器这两种技术也有共同点:都是软件技术,都在虚拟...

    静一

扫码关注云+社区

领取腾讯云代金券