11 2018 档案
摘要:版本迭代 ffmpeg解码API经过了好几个版本的迭代,上一个版本的API是 解码视频:avcodec_decode_video2 解码音频:avcodec_decode_audio4 我们现在能看到的很多解码例子用的都是这两个,不过现在ffmpeg更推荐用新一代的API 向解码器输送数据包:avcodec_send_packet 从解码器获取帧:avcodec_receive_fram...
阅读全文
摘要:音频与视频在播放当中可能会由于种种原因(如:音视频并非在同一时间开始播放,或视频由于解码任务繁重导致输出图像延迟等)导致音频与视频的播放时间出现偏差,这种就是音视频的同步问题,本文会对音视频同步进行讨论。 有三种音视频同步方式: 常见的实现方式是把视频同步到音频时钟。主要原因是,对于延迟以及卡顿,人
阅读全文
摘要:在前面的文章中,我们分别实现了视频图像解码、播放,音频解码、播放,现在则需要把这些功能组合起来。总体上来说,整个程序的功能可以分为两条线路:视频以及音频,两条线之间除了后续的同步操作之外基本没有任何关联。而在线路当中,各个模块之间并没有太紧密的耦合,只要上游模块提供了原料,下游模块就可以执行处理。因
阅读全文
摘要:音频的同步并不需要我们在程序实现。在设置好声道、采样率、音频格式后,程序只需要保证能一直提供音频数据就行,其余工作基本都由声卡实现。
阅读全文
摘要:两种SDL音频输出方式 我们这里采用SDL来进行音频输出。SDL提供两种音频输出的方式: 如果在SDL_OpenAudio时不指定callback,那么可以调用SDL_QueueAudio主动地向音频输出设备输送音频。这种方式的实现中,SDL维护一个音频队列,并从该队列中提取音频数据输出到音频设备,
阅读全文
摘要:提取音频,具体点来说就是提取音频帧。提取方法与从视频文件中提取图像的方法基本一样,这里仅列出其中的不同点: 1. 由于目的提取音频,因此在demux的时候需要指定的是提取audio stream 2. 在decode时,解码音频与解码视频分别采用的是不同的API 3. 由于本播放器的音频输出实现是基
阅读全文
摘要:不仅限于ffmpeg,音频采样所得的PCM都含有三个要素:声道(channel)、采样率(sample rate)、样本格式(sample format)。 声道 当人听到声音时,能对声源进行定位,那么通过在不同的位置设置声源,就可以造就出更好的听觉感受,如果配合影像进行音频位置的调整,则会得到更好
阅读全文