专栏首页T客来了FFmpeg入门 - 前置基础

FFmpeg入门 - 前置基础

章节

  • 像素存储格式YUV&RGB
  • 我,B,P帧
  • pts&dts
  • 音视频开发技术可以做的事情

前言

在学习音视频编程的过程中,在解决问题的过程中,总会遇到音视频当中的一些专业名词,而解决问题,这些专业名词是必须理解的,否则就会出现云里雾里的感觉 - 俗称 - 懵这给我个人的学习过程带来不小的问题,遂决定将这段时间当中遇到的一些必须掌握的名词概念做个记录,以供速查之用。

1,像素存储格式YUV&RGB

RGB

1.RGB 即 三原色,红、绿、蓝。
2.每个元素占用 1 个字节,即 24 bit。

YUV

1.YUV 也是一种像素存储格式,摄影机拍摄的影像文件存储格式即为 YUV,采用 YUV 像素存储格式对帧进行存
储,是为了保证这种文件能在黑白电视上能够播放。

2,I,B,P帧

我帧

I 帧是关键帧采用帧内压缩技术,I帧是全信息帧、一个视频文件当中的I帧越多,则文件体积越大。

B帧

B 帧是前后参考帧,它属由帧间压缩技术。也就是说在压缩成 B帧前,它会参考它前面的非压缩视频帧,和后
面的非压缩的视频帧,记录下前后两帧都不存放的“残差值”,这样可以达到更好的压缩率;
所以加入当前视频帧的编排顺序为 I B B P 则当视频文件播放时,解码的顺序为I->P->B->B 即关键帧I、向前
参考帧 P、向前向后参考帧B、向前向后参考帧B。

P帧

P帧是向前参考帧,也就是它参考的是前一个关键帧的数据。P帧也属于帧间压缩技术,相对于 B帧来说,P帧的压缩率要比B帧低。

3,pts&dts

pts(演示文稿时间戳)

视频渲染用的时pts、即以AVStream 的 AVRational (time_base)为计时单位的时间戳,加入 pts 时100 
,AVStream 的 time_base 为 1/25 (即1s播放帧数为25,FPS为25),则对应到日常时间戳 为 100 * (1/25)
= 4s。

dts(解码时间戳)

视频packet 解码为 frame 时的时间戳。之所以需要dts 是因为 视频中除了I 帧还有可能含有 B帧。
DTS主要用于视频的解码,在解码阶段使用.PTS主要用于视频的同步和输出.在display的时候使用.在没有B frame的情况下.DTS和PTS的输出顺序是一样的.

4,音视频开发技术可以做的事情

视频编解码 - 后台

应用在后台的视频编解码技术常用的是 FFmpeg,一款优秀的视频编解码应用技术,属于软件编解码。
rtmp 协议,网络直播推流等。

视频编解码 - 移动终端

如iOS、Android移动端经常用到的音视频编解码sdk ijkplayer,是对ffplay.c的二次封装(ffmpeg)属于硬编硬解技术、因为硬件中内置了编解码芯片。

OPENCV

计算机视觉库、可以做图像识别、当然也可以实现音视频编解码,因为其底层也是调用 FFmpeg

openGL的

图像渲染库,你以为微视、抖音上的小姐姐那么美若天仙的原因是什么?答:是渲染啊!问:靠什么渲染?答:openGL 啊。

本文分享自微信公众号 - T客来了(ltdo11)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-06

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 前端基础-JavaScript入门

    name变量名,本身不是保留字/关键字, 建议少用。 name在有的浏览器中,是自动声明过的。

    cwl_java
  • pycharm 入门基础配置

    pycharm是python的IDE 工具,这个工具很强大,之所以强大,所以对于其配置也可以很复杂,作为一个pycharm的小白,以下的基本的使用是必需的,然后...

    qsjs
  • 音视频技术(1)- 参考资料

    1. 音视频开发进阶指南(笔者主要从事移动端开发,以这本书入门,通篇了解音视频处理比较合适):

    sumsmile
  • 短视频 SDK 开发 (一) 开发一款短视频 SDK 需要具备哪些知识?

    2020 年要属什么最火,肯定是短视频和直播带货了。我自己基本上每天晚上睡觉之前都会刷一会儿 douyin 短视频,不得不承认 douyin 的推荐算法是真 n...

    音视频开发进阶
  • 前端零基础入门!前端真不难!

    现在互联网发展迅速,前端也成了很重要的岗位之一,许多人都往前端靠拢,可又无能为力,不知所措,首先我们说为什么在编程里,大家都倾向于往前端靠呢?原因很简单,那就是...

    企鹅号小编
  • 【Android 音视频开发:FFmpeg音视频编解码篇】二、Android 引入FFmpeg

    在过去,通常使用 makefile 的方式在项目中引入 C/C++ 代码支持,随着 Android Studio 的普及,makefile 的方式已经基本被 C...

    开发的猫
  • 前端入门3-CSS基础声明正文-CSS基础

    作为一个前端小白,入门跟着这四个来源学习,感谢作者的分享,在其基础上,通过自己的理解,梳理出的知识点,或许有遗漏,或许有些理解是错误的,如有发现,欢迎指点下。

    请叫我大苏
  • 零基础入门 1: 环境布置

    【Unity零基础入门】今天开始不定期更新,可能你之前有了解过Unity,或者对Unity一点也不了解, 又或者你现在正在从事Unity的相关工作,不管是哪种情...

    韩东吉
  • 全网最全的 Android 音视频和 OpenGL ES 干货,都在这了

    有位大佬说,“这是全网最全的 Android OpenGL ES 教程”,哈哈,对于这种善意的“商业互吹”,当然是欣然接受,这无疑给了我更多的动力和激情来完善这...

    字节流动
  • 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】一、FFmpeg so库编译

    网上其实已经有很多的关于FFmpeg so库编译的分享,但是大部分都是直接把配置文件的内容贴出来。我想大部分取搜索 「如何编译FFmpeg so库」的人,对交叉...

    开发的猫
  • 【Android 音视频开发:FFmpeg音视频编解码篇】三、Android FFmpeg视频解码播放

    本文很长,因为可能有比较多的小伙伴对 JNI C/C++ 不是很熟悉,所以本文比较详细的对 FFmpeg 用到的代码进行讲解,完整的演示了一遍 FFmpeg 的...

    开发的猫
  • 工作需要接触音视频开发,学起来!

    大家假期好,之前有几个粉丝朋友加了我微信私底下说,能不能写一篇有关音视频学习的路线;

    morixinguan
  • 前端零基础入门学习!前端真不难

    现在互联网发展迅速,前端也成了很重要的岗位之一,许多人都往前端靠拢,可又无能为力,不知所措,首先我们说为什么在编程里,大家都倾向于往前端靠呢?原因很简单,那就是...

    用户5827212
  • FFmpeg 流媒体处理 - 收流与推流

    关于流媒体的基础概念,观止云的 “流媒体|从入门到出家” 系列文章极具参考价值,请参考本文第 5 节参考资料部分。

    字节流动
  • FFmpeg流媒体处理-收流与推流

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10623968.html

    叶余
  • 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】六、FFmpeg简单合成MP4:视屏解封与重新封装

    前面的文章中,对 FFmpg 视频的解码,以及如何利用 OpenGL 对视频进行编辑和渲染,做了详细的讲解,接来非常重要的,就是对编辑好的视频进行编码和保存。

    开发的猫
  • 音视频平凡之路之FFmpeg全面介绍

    FFmpeg中的FF全称是"Fast Forward",后面的mpeg全称是"Moving Picture Experts Group"(动态图像专家组),FF...

    马上就说
  • 曾小伟:谁没被“不可思议”的薪资吸引过?

    LiveVideoStack:曾小伟你好,能否简要介绍下自己,包括目前的主要工作及关注领域?

    LiveVideoStack
  • 开源圆桌 Q&A 集锦

    段维伟-使用 Flutter 2.0 开发多平台 VOIP/WebRTC 客户端

    LiveVideoStack

扫码关注云+社区

领取腾讯云代金券