摘要:
音频与视频在播放当中可能会由于种种原因(如:音视频并非在同一时间开始播放,或视频由于解码任务繁重导致输出图像延迟等)导致音频与视频的播放时间出现偏差,这种就是音视频的同步问题,本文会对音视频同步进行讨论。 有三种音视频同步方式: 常见的实现方式是把视频同步到音频时钟。主要原因是,对于延迟以及卡顿,人 阅读全文
摘要:
在前面的文章中,我们分别实现了视频图像解码、播放,音频解码、播放,现在则需要把这些功能组合起来。总体上来说,整个程序的功能可以分为两条线路:视频以及音频,两条线之间除了后续的同步操作之外基本没有任何关联。而在线路当中,各个模块之间并没有太紧密的耦合,只要上游模块提供了原料,下游模块就可以执行处理。因 阅读全文
摘要:
音频的同步并不需要我们在程序实现。在设置好声道、采样率、音频格式后,程序只需要保证能一直提供音频数据就行,其余工作基本都由声卡实现。 阅读全文
摘要:
两种SDL音频输出方式 我们这里采用SDL来进行音频输出。SDL提供两种音频输出的方式: 如果在SDL_OpenAudio时不指定callback,那么可以调用SDL_QueueAudio主动地向音频输出设备输送音频。这种方式的实现中,SDL维护一个音频队列,并从该队列中提取音频数据输出到音频设备, 阅读全文
摘要:
提取音频,具体点来说就是提取音频帧。提取方法与从视频文件中提取图像的方法基本一样,这里仅列出其中的不同点: 1. 由于目的提取音频,因此在demux的时候需要指定的是提取audio stream 2. 在decode时,解码音频与解码视频分别采用的是不同的API 3. 由于本播放器的音频输出实现是基 阅读全文
摘要:
不仅限于ffmpeg,音频采样所得的PCM都含有三个要素:声道(channel)、采样率(sample rate)、样本格式(sample format)。 声道 当人听到声音时,能对声源进行定位,那么通过在不同的位置设置声源,就可以造就出更好的听觉感受,如果配合影像进行音频位置的调整,则会得到更好 阅读全文
摘要:
Frame Rate 帧率代表的是每一秒所播放的视频图像数目。通常,视频都会有固定的帧率,具体点地说是每一帧的时间间隔都是一样的,这种情况简称为CFR(Constant Frame Rate);另外一种情况就是每一帧的时间间隔不一定相同,即可变帧率,简称为VFR(Variable Frame Rat 阅读全文
摘要:
在用浏览器进行网页访问时,会向网页所在的服务器发送http协议的GET或者POST等请求,在请求中除了指定所请求的方法以及URI之外,后面还跟随着一段Request Header。Request Header的内容主要用于描述本地信息,如所用的浏览器、所用的系统、语言、所能接受的返回数据的编码格式等 阅读全文
摘要:
我们这里采用SDL(本文所用版本为SDL2.0.5)来进行图像输出,SDL在进行图像渲染时一般采用的会是direct3D或者opengl,SDL对它们进行了封装,不过我们这里只讨论SDL的使用,并不会去涉及这些底层实现。尽管如此,我们还是有必要了解其中一些基本概念,这些概念能帮助我们很好地理解所使用 阅读全文
摘要:
在开始之前,我们需要了解视频文件的格式。视频文件的格式众多,无法三言两语就能详细分析其结构,尽管如此,ffmpeg却很好地提取了各类视频文件的共同特性,并对其进行了抽象描述。 视频文件格式,统称为container。它包含一个描述视频信息的头部,以及内含实际的音视频编码数据的packets。当然,这 阅读全文