ffmpeg---vlc-------- PCR(program clock reference)节目时钟基准

2024-01-16 04:38

本文主要是介绍ffmpeg---vlc-------- PCR(program clock reference)节目时钟基准,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

zhuanzi : http://xcshen.blog.51cto.com/2835389/512890
PCR(program clock reference)节目时钟基准
2011-03-12 00:01:30
标签: PCR  休闲  STC  职场  PTS

在电视技术中要求同步扫描,即保证收、发两端的电子扫描规律严格相同。它包含两个要求:一是收、发两端的扫描速度必须相同,这叫同频;二是收、发两端每行、每场的扫描起始时刻必须相同,这叫同相。只有同频同相才能实现同步扫描,接收端才能重现既稳定又准确的图像。为了确保同步扫描,在模拟电视信号中有行同步信号、场同步信号与色同步信号。模拟电视机利用同步分离电路直接从模拟电视信号中解调得到同步头,获得场、行、色同步信息,从而保证彩色图像不失真。而且音频和视频是同时送出的,不存在音频和视频的同步问题。

在数字电视传输码流中。节目时钟基准 (PCR) 也是一种重要的包头信息,它由 33bit 基值 (Base) 和 9bit 扩展值 (Extension) 组成。 PCR 值以系统参考时钟周期为单位记录了源端的时间信息.对于整个数字电视系统的同步起着关键作用。

数字电视与模拟电视的不同之处:一是视频图像由 I 、 B 、 P 三种类型的帧经压缩后的字节数各不相同:二是解码器输入图像的次序和显示次序并不一致.需要重新排序;三是音频的基本码流和视频的基本码流是交错传送的。因此在数字电视的编码端 ( 发射端 ) 和解码端 ( 接收端 ) 不再像模拟电视信号那样直接从解调信号中得到同步信息等。

数字电视的时间信号由码流中的专门信息来传递,接收端应该从码流的这些信息中恢复时钟。但这一时钟不是由物理方式直接传送的,因此。发射端与接收端的实际时钟不可能完全一致。如果处理不好,两者之间很容易在长期积累后有较大的差别,这将导致解码器所 1 灰复的图像容易掉彩色,还会出现周期性的黑屏现象,同时图像会伴有马赛克,严重时会出现死机。

为了实现各种不同应用状态下的编码器,解码器之间的同步,在 MPEG 系统中引入了系统时钟 (STC) 、节目时钟基准 (PCR) 、显示时间标记 (PTS) 的概念。

在数字音、视频编码器中,信号的抽样、处理都是以一个 27MHz 的参考时钟为基础来进行的。对一个显示单元 ( 如一帧图像 ) ,打上用系统时钟对应的参考显示时间,叫显示时间标记,该信息随同码流一起传输。同时.时钟信息也被抽样加入到码流中一起传输。

在解码器中,将时钟信息从码流中取出,用于恢复 STC ,使解码器产生一个与前端同步的 27MHz 系统时钟。在获得显示单元的数据后,将该单元的 PTS 与恢复出的 STC 进行比较,并在相应时间点输出显示数据,这样就可以实现系统编码和解码的同步。视频编/解码系统时钟示意图如附图所示。

在数字电视系统中.系统时钟 (STC) 在传输中由节目时钟基准 (PCR) 和显示时间标记 (PTS) 携带,在接收端解码器中恢复。由此可见 PCR 的作用是使 MPEG 解码器与编码器保持同步。系统时钟 (STC) 即主时钟锁定于码流 PCR 。在编码器中, PCR 是系统时钟正弦波的 42bit 采样值,在解复用器中,它是恢复系统时钟的参考。 PCR 指示解码器接收每一时钟参考时的 STC 时间。如果复用器产生的 PCR 值不准确,或者因抖动造成的网络延时而使接收延迟,就会出现解码与编码之间的同步错误。系统时钟 (STC) 用于产生彩色色同步和同步信号,它是音/视频解码和显示时间标记的参考。抖动和不准确性错误均会导致解码器出错。

为了保证解码器的正确解码,确认一个传输码流的合法性。 DVB 开发了一个标准 ESTI ERT-290 及后来的 TR101 — 290 。在这个标准中,对码流的错误指示分为 3 个等级:第 l 等级是正确解码所必需的几个参数,其中包括同步丢失错误、同步字节错误、 PID 传输错误 ( 包识别丢失 ) 、 PAT 错误 (PAT 丢失 ) 、连续计数错误及 PMT 错误等。

同步丢失是衡量传输码流质量的最重要的指标。传输码流失去同步表明数据已经丢失;连续的同步丢失说明信号丢失。码流分析仪检测到连续 5 个同步字节视为同步,连续检测不到两个以上同步字节则为同步丢失错误。同步丢失错误将直接影响解码后画面的质量.严重的同步错误将造成接收中断。在接收端出现黑屏、静帧和马赛克、画面不流畅等现象。

同步字头的标准值为 Ox47 。当出现同步字节错误时,同步字头的值为其他数值,表明在传输过程中部分数据出现错误,严重时导致解码器解不出信号。

同步字节错误和同步丢失错误的区别在于同步字节错误传输数据仍是 188 或 204 包长,但同步字头不是标准的 Ox47 。在接收端也会出现黑屏、静帧和马赛克画面不流畅现象。

这篇关于ffmpeg---vlc-------- PCR(program clock reference)节目时钟基准的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/611360

相关文章

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

深入理解PHP7之REFERENCE

REFERENCE 上一章说过引用(REFERENCE)在PHP5的时候是一个标志位, 而在PHP7以后我们把它变成了一种新的类型:IS_REFERNCE. 然而引用是一种很常见的应用, 所以这个变化带来了很多的变化, 也给我们在做PHP7开发的时候, 因为有的时候疏忽忘了处理这个类型, 而带来不少的bug. 最简单的情况, 就是在处理各种类型的时候, 从此以后我们要多考虑这种新的类型, 比如

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input,其入参可以看下怎么用: AVFormatContext *fmt_ctx = NULL;result = avformat_open_input(&fmt_ctx, input_filename, NULL, NULL); 其中fmt_ctx 如何分配内存的?如下 int avformat_open_input(