在统计某段程序或某个算法的运行时间时,经常会用到clock()函数。如下图所示。
其中,clock()是C/C++中的计时函数,与其相关的数据类型是clock_t,头文件是time.h/ctime。
clock()函数的功能是:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元数(clock tick)。
在C/C++中,定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元。
2024年09月16日
在统计某段程序或某个算法的运行时间时,经常会用到clock()函数。如下图所示。
其中,clock()是C/C++中的计时函数,与其相关的数据类型是clock_t,头文件是time.h/ctime。
clock()函数的功能是:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元数(clock tick)。
在C/C++中,定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元。
2024年09月16日
本文主要描述音视频同步原理,及常见的音视频同步方案,并以代码示例,展示如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放。内容如下:
1.音视频同步简单介绍
2.DTS和PTS简介
2.1I/P/B帧
2.2时间戳DTS、PTS
3.常用同步策略
4.音视频同步简单示例代码
1.音视频同步简单介绍
对于一个播放器,一般来说,其基本构成均可划分为以下几部分:
数据接收(网络/本地)->解复用->音视频解码->音视频同步->音视频输出。
2024年09月16日
1.1比特币与FPGA
注意:不是让大家去玩比特币,我们是研究技术,不是当韭菜。
https://www.8btc.com/wiki/bitcoin-a-peer-to-peer-electronic-cash-system
比特币白皮书:一种点对点的电子现金系统(中本聪论文的翻译版)
哈希算法:散列算法,把任意长度的输入,通过散列算法,变换成固定长度的输出。安全散列算法(SHA)是一个密码散列函数家族,包括SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512。
2024年09月16日
这是实现的简易播放器的线程模型,通过这张图再结合我们之前博客中学习的内容,基本可以了解播放器的一个整体运行流程。具体代码也是根据这张图来实现。
2024年09月16日
播放器整体播放流程如下:
通过srs-librtmp拉取直播流,通过package type分离音视频流,将package数据缓存到package队列,解码线程不断从package队列读取package交由解码器解码,解码器将解码后的frame存储到frame队列,opensles播放线程与opengles渲染线程从frame队列读取frame播放与渲染,这里还涉及到音视频同步。
2024年09月16日
在FFMPEG工程中有一个示例的程序叫作ffplay。它是一个用C编写的利用ffmpeg来实现完整视频播放的简单播放器。这个指导将从原来Martin Bohme写的一个更新版本的指导开始(我借鉴了一些),基于Fabrice Bellard的ffplay,我将从那里开发一个可以使用的视频播放器。在每一个指导中,我将介绍一个或者两个新的思想并且讲解我们如何来实现它。每一个指导都会有一个C源文件,你可以下载,编译并沿着这条思路来自己做。源文件将向你展示一个真正的程序是如何运行,我们如何来调用所有的部件,也将告诉你在这个指导中技术实现的细节并不重要。当我们结束这个指导的时候,我们将有一个少于1000行代码的可以工作的视频播放器。
2024年09月16日
好在音频和视频都有信息来控制播放时的速度和时机。音频流有一个采样率(sample rate),视频流有一个帧率(frame per second)。但是,如果我们只是简单地通过数帧和乘上帧率来同步视频,那么它可能会和音频不同步。实际上我们将使用 PTS 和 DTS 信息来做音视频同步相关的事情。
2024年09月16日
作者 | 深入研究鸿蒙,鸿蒙内核发烧友
出品 | CSDN(ID:CSDNnews)
头图 | CSDN 下载自东方 IC
阅读之前建议先读本系列其他文章,以便对本文任务调度机制的理解。
为什么要学这么多的相关概念?
鸿蒙的内核中 Task 和 线程 在广义上可以理解为是一个东西,但狭义上肯定会有区别,区别在于管理体系的不同,Task是调度层面的概念,线程是进程层面概念。比如 main 函数中首个函数 OsSetMainTask; 就是设置启动任务,但此时啥都还没开始呢,Kprocess 进程都没创建,怎么会有大家一般意义上所理解的线程呢。狭义上的后续有 鸿蒙内核源码分析(启动过程篇) 来说明。不知道大家有没有这种体会,学一个东西的过程中要接触很多新概念,尤其像 Java/android 的生态,概念贼多,很多同学都被绕在概念中出不来,痛苦不堪。那问题是为什么需要这么多的概念呢?
2024年09月16日
聊聊你在以前的工作中是如何使用缓存的!
2024年09月16日
音视频同步在音视频开发中是非常重要的知识点,所以在这里记录下音视频同步相关知识的理解。
从前面的学习可以知道,在一个视频文件中,音频和视频都是单独以一条流的形式存在,互不干扰。那么在播放时根据视频的帧率(Frame Rate)和音频的采样率(Sample Rate)通过简单的计算得到其在某一Frame(Sample)的播放时间分别播放,**理论**上应该是同步的。但是由于机器运行速度,解码效率等等因素影响,很有可能出现音频和视频不同步,例如出现视频中人在说话,却只能看到人物嘴动却没有声音,非常影响用户观看体验。