http://www.jianshu.com/p/5b78a91f1091

利用 ffmpeg 系统函数 dump 码流信息

ffmpeg 提供了一个函数直接帮助你打印出解析到的媒体信息,用法如下:

av_dump_format(ic, 0, ic->filename, 0);

如:

av_dump_format(fmtCtx, 0, "rtmp://live.hkstv.hk.lxdns.com/live/hks", 0);会打印流媒体的信息,比如:

[flv @ 0x7fa6ec813400] Stream discovered after head already parsed
Input #0, flv, from 'rtmp://live.hkstv.hk.lxdns.com/live/hks':Metadata:author          : PowerSmartcopyright       : description     : datarate        : 500livetime        : 1453688059timeshift       : 0Duration: 01:00:00.00, start: 0.000000, bitrate: N/AStream #0:0: Audio: aac (LC), 32000 Hz, stereo, fltpStream #0:1: Video: h264 (Constrained Baseline), yuv420p, 640x480, 15.17 fps, 15 tbr, 1k tbn, 30 tbc

其中,15 tbr, 1k tbn, 30 tbc是什么意思,很多人并不了解。

There are three different time bases for time stamps in FFmpeg. The values printed are actually reciprocals of these, i.e. 1/tbr, 1/tbn and 1/tbc.

tbn is the time base in AVStream that has come from the container, I think. It is used for all AVStream time stamps.

tbc is the time base in AVCodecContext for the codec used for a particular stream. It is used for all AVCodecContext and related time stamps.

tbr is guessed from the video stream and is the value users want to see when they look for the video frame rate, except sometimes it is twice what one would expect because of field rate versus frame rate.

tbr一般被当成帧率。当视频的码率为固定码率时,FFmpeg显示tbr为正常的码率值。当视频有变长码率时,FFmpeg打印的tbr为多个码率的均值,看着像音频流。比如:

Video: h264, yuv420p, 640x480, 22050 tbr, 22050 tbn, 44100 tbc

新问题
Stream #0.0[0xfe]: Video: h264, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 59.94 tbr, 90k tbn, 59.94 tbc中PAR、DAR是什么含义?

PAR - pixel aspect ratio大多数情况为1:1,就是一个正方形像素,否则为长方形像素

DAR - display aspect ratio就是视频播放时,我们看到的图像宽高的比例,缩放视频也要按这个比例来,否则会使图像看起来被压扁或者拉长了似的。

SAR - storage aspect ratio就是对图像采集时,横向采集与纵向采集构成的点阵,横向点数与纵向点数的比值。比如VGA图像640/480 = 4:3,D-1 PAL图像720/576 = 5:4

这三者的关系PAR x SAR = DAR或者PAR = DAR/SAR.

如果一段视频的DAR为4:3,它的SAR为VGA存储的4:3,那么可推出PAR为1:1,如果它的SAR为D-1 PAL存储的5:4,那么可以推出PAR为16:15

D-1 PAL图像

看上图,假设这就是一个D-1 PAL图像,每个方格代表一个存储的点,横向有5个点,纵向有4个点,所以SAR为5:4

现已知这幅图象的宽度为160,高度为120,即DAR为4:3

那这个方格的宽高比是多少呢?答案16:15,即PAR,这个方格代表的是一个长方形的像素。

视频三比率SAR,PAR,DAR是从宏观上描述一个视频轮廓很重要的三个参数。在不同的文档中,通常对这三个参数有不同的表述。但是,均指代同一事物。

参考及推荐阅读:

  • What does the output of ffmpeg mean? tbr tbn tbc etc?
  • What does the video output stream details from ffmpeg mean?
  • ffmpeg frame rate
  • 对PAR DAR SAR的理解

FFmpeg av_dump_format输出的tbn、tbc、tbr、PAR、DAR的含义相关推荐

  1. FFmpeg 中的一些参数意义(tbr, tbn, tbc)

    一.系统打印命令解析 在此命令执行过程中,我们可以看到如下数据: 1.ffmpeg在运行过程中需要用到的lib库如下 libavutil      52. 47.101 / 52. 47.101 li ...

  2. 【FFmpeg】tbr tbn tbc

    tbr tbn tbc LAS本地转码不指定,则从视频文件拷贝参数 这是快手的: 看起来也是一样的: Duration: N/A, start: 1612149.198000, bitrate: 22 ...

  3. tbr tbn tbc

    tbr tbn tbc http://tech.bobgo.net/?m=201004 因为最近的工作需要从MP4视频中提取一些关键帧,要了解如何将视频的时间点转换为对应的帧号,所以查阅了一些关于视频 ...

  4. tbr tbn tbc 的意思

    因为最近的工作需要从MP4视频中提取一些关键帧,要了解如何将视频的时间点转换为对应的帧号,所以查阅了一些关于视频编解码以及时间同步方式的资料.再此总结一下. 首先是解码,利用FFmpeg解码得到的信息 ...

  5. sar分辨率公式_对PAR DAR SAR的理解

    做视频开发过程中碰到这么三个概念,查了一下Wiki的解释,现把个人的理解阐述如下: PAR - pixel aspect ratio大多数情况为1:1,就是一个正方形像素,否则为长方形像素 DAR - ...

  6. FFmpeg av_dump_format函数使用

    函数说明 一般使用av_find_stream_info函数探测码流格式,它的作用是为pFormatContext->streams填充上正确的音视频格式信息.可以通过av_dump_forma ...

  7. FFMPEG 日志输出控制

    原文:https://blog.csdn.net/tea1896/article/details/48310579 1. FFMPEG 编码速度很慢,发现其中打印很多.因为打印是一个执行比较慢的动作, ...

  8. easyplayerpro 使用说明_EasyPlayerPro(Windows)流媒体播放器开发之ffmpeg log输出报错

    EasyPlayerPro主要基于ffmpeg进行开发,在EasyPlayerPro开发过程中,曾遇到一个相对比较棘手的问题,该问题一般在播放不是很标准的流或者网络情况较差,容易出现丢帧的情况特别容易 ...

  9. EasyPlayerPro(Windows)流媒体播放器开发之ffmpeg log输出报错

    EasyPlayerPro主要基于ffmpeg进行开发,在EasyPlayerPro开发过程中,曾遇到一个相对比较棘手的问题,该问题一般在播放不是很标准的流或者网络情况较差,容易出现丢帧的情况特别容易 ...

最新文章

  1. 惊艳!基于RNN的AI写词机竟能写出如此优秀的情诗!
  2. Microsoft SQL Server 查询表中有重复列值的数据 (PARENTGOODSID列值重复的行)?
  3. python3 rsa加密_【Python】Python3 实现 JS 中 RSA 加密的 NoPadding 模式
  4. boost::hana::is_just用法的测试程序
  5. python cookbook 自营_Python Cookbook总结 7-8 章
  6. 深入 char * ,char ** ,char a[ ] ,char *a[]
  7. 10人以下小团队管理手册-学习笔记
  8. python threading-单线程 多线程 主线程 子线程 setDeamon join
  9. 互联网日报 | 8月4日 星期三 | 京东货运航空筹建获批;小米手机出货量在欧洲首次登顶;阿里全球年度活跃消费者11.8亿...
  10. 32怎么通过一个按键实现不同工作模式_stm32几种低功耗模式的实现和差别
  11. JavaScript的学习--生成二维码
  12. Android 六大布局之 GridLayout(网格布局)
  13. 计算机导论第4版第五章答案,《计算机导论》习题答案.doc
  14. java计算机毕业设计蔚蓝在线学习平台源码+系统+数据库+lw文档+mybatis+运行部署
  15. PHP MySQL 数据字典生成器
  16. 计算机没有打字键盘显示不出来,电脑无法打字键盘没有反应怎么办 win10电脑屏幕键盘怎么打开...
  17. 为什么我怎么也理解不了波粒二象性,是因为智商不够吗?
  18. 关于的无穷级数的一点总结
  19. vue实现微信web开发之扫码签到
  20. 安装YApi 接口管理平台

热门文章

  1. 时间戳转换为String
  2. cpu低端计算机配置清单,i3 4160/GTX750Ti剑灵/英雄联盟中低端组装机配置清单
  3. Vissim与matlab联调环境配置
  4. jsp写php一句话,asp,aspx,php,jsp下的一句话木马
  5. 洛谷noip 模拟赛 day1 T3
  6. css小游戏,js小游戏,Flex Box青蛙、冒险游戏、设计模式游戏等
  7. 包,内部类,常用类,集合
  8. win2003 php5.2.17,win2003下搭建FastCGI+php5.2.17
  9. java开发工程师面试自我介绍_Java程序员如何进行自我介绍
  10. oracle取上行数据进行填充