一:样例流程

下图是音频采样PCM的一个过程。

模拟数据->采样:将对应格式的连续的模拟信号装转化为离散的数字信号。
采样->量化:就是尽可能最大化最具代表性的集结采样信息离散点,是原来的数据能够正常表达。
量化->编码:将这些量化的信息,转化为计算机能够识别的信息。
编码->数字信息:最后将这些信息转化为计算机能够处理的和样本信号,实现音视频的播放。

二:基本使用

具体操作流程请看我的资源里面的介绍。
ffmpeg入门及应用方法

三:PCM过程的一些参数分析

1.采样率:单位HZ(赫兹),它是每秒钟的周期性变动重复次数的计量,我们人耳听力的范围是(20HZ~20000HZ)。奈奎斯特采样定理,给我们一个概念,采样需要有一个范围,当信号频率高于我们人耳能够接受的最大范围的2倍的时候。我们能将信息完整的保留下来。奈奎斯特频率(英语:Nyquist frequency)是离散信号系统采样频率的一半,因瑞典裔美国工程师哈里·奈奎斯特(Harry Nyquist)或奈奎斯特-香农采样定理得名。采样定理指出,只要离散系统的奈奎斯特频率高于被采样信号的最高频率或带宽,就可以避免混叠现象。
2.采样大小:指每一个样本大小,也就是振幅。如果选择参数16,则是2^16次方大小。
3.声道数:多路声道声音效果会更好,声道数一般分为单声道,双声道,四声道。
4.编解码器:就是对音视频文件采样之后进行编解码。
5.字节序:本项目采用小端模式
6.采样类型:无符号int类型。

四:音视频文件采样命令

1.目的:将MP4,MP3等音视频文件转化为二进制文件。
2.命令:ffmpeg -i test.mp4 s16le out.pcm
解释:将test.mp4,通过小端模式(le)转化为short16位的转换方法,转化为out.pcm格式的二进制文件,输入到我们的播放设备中,我们就可以进行视听盛宴了。

五:简单项目实例简(基于Qt)

#include <QtCore/QCoreApplication>
#include <QAudioFormat>
#include <QAudioOutput>
#include <QThread>
#include <string>
#include <fstream>
using namespace std;int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QAudioFormat fmt;fmt.setSampleRate(44100);                       //采样率HZ 20HZ-20000HZfmt.setSampleSize(16);                              //采样大小  2^16 = 65535fmt.setChannelCount(2);                           //声道数fmt.setCodec("audio/pcm");                     //编解码器fmt.setByteOrder(QAudioFormat::LittleEndian);  //字节序,小端模式fmt.setSampleType(QAudioFormat::UnSignedInt);  //采样类型,无符号int型// TODO: 生成PCM文件,然后使用二进制读文件的方式,读出流写入播放设备中进行播放声音QAudioOutput* out = new QAudioOutput(fmt);QIODevice* io = out->start(); // 操作声音设备int size = out->periodSize();//一个播放周期的大小//out->bytesFreechar* tmp = new char[size];  // 文件缓冲区string src = "out.pcm";ifstream in(src.c_str(), ios::in | ios::binary);if (!in) // 开发是否成功{return -1;}//QIODevice//ifstreamwhile (!in.eof()){if (out->bytesFree() < size){// 等待继续读取数据,然后进行播放continue;}in.read(tmp, size);streamsize count = in.gcount();if (count <= 0){break;}io->write(tmp, count);  // 向声音设备中写入数据}// 关闭文件,释放缓冲区in.close();delete[] tmp;tmp = NULL;return a.exec();
}

ffmpeg基础流程:音频处理相关推荐

  1. FFmpeg基础知识音频篇(二)

    音频基础知识 声音的频率是周期的倒数,它表示的是声音在1秒钟内的周期数,单位是赫兹(Hz).千赫(kHz),即1000Hz,表示每秒振动1000次 声音有振幅,振幅的主观感觉是声音的大小.声音的振幅大 ...

  2. iOS 音视频开发:Audio Unit播放FFmpeg解码的音频

    本文档描述了iOS播放经FFmpeg解码的音频数据的编程步骤,具体基于Audio Toolbox框架的Audio Session和Audio Unit框架提供的接口实现.在iOS 7及以上平台Audi ...

  3. 使用FFMPEG——4.2.2版本实现提取视频编码解码文件,ffmpeg基础学习。

    FFMPEG基础学习 视频解码,并且输出到文件. 我通过雷霄骅的博客学习FFMPEG,在学习过程中发现"雷神"的代码由于版本的问题,很多代码已经无法在FFMPEG--4.2.2版本 ...

  4. 最简单的基于FFMPEG+SDL的音频播放器 拆分-解码器和播放器

    ===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...

  5. FFmpeg+SoundTouch实现音频的变调变速

    本文使用FFmpeg + SoundTouch实现将音频解码后,进行变调变速处理,并将处理后的结果保存为WAV文件. 主要有以下内容: 实现一个FFmpeg的工具类,保存多媒体文件所需的解码信息 将解 ...

  6. FFMPEG解码流程

    FFMPEG解码流程:   1. 注册所有容器格式和CODEC: av_register_all()   2. 打开文件: av_open_input_file()   3. 从文件中提取流信息: a ...

  7. ffmpeg解码流程 turorial5详解

    From: http://www.360doc.com/content/11/1117/09/8050095_165108638.shtml FFMPEG解码流程 1. 注册所有容器格式和CODEC: ...

  8. spring-boot ffmpeg 搭建一个音频转码服务

    2019独角兽企业重金招聘Python工程师标准>>> 利用FFMPEG实现一个音频转码服务 提供一个音频转码服务,主要是利用ffmpeg实现转码,利用java web对外提供htt ...

  9. FFmpeg视频解码流程详解及demo

    本文主要讲解FFmpeg的视频解码具体流程,API使用,以及相关结构体介绍.最后再以一个非常简单的demo演示将一个mp4格式的视频文件解码为原始数据yuv文件. FFmpeg解码流程有2套API接口 ...

最新文章

  1. 一起学Hadoop——实现两张表之间的连接操作
  2. TechEd 2012奥兰多!
  3. Confluence 6 升级完成后的检查
  4. 2n皇后 - 回溯
  5. Python使用struct处理二进制(转)
  6. c++ primer5 第一章练习题答案 尚未完成 后续补充(基本已经完结)
  7. ios 中的tintColor
  8. matlab中的欧拉法,欧拉法函数
  9. 微信的那个老外产品经理,又写了一篇《中国移动应用设计趋势》
  10. 神鬼传奇客户端解包图片(ui\common)
  11. (2022-2028年年)全球与中国实验室开发试验(LDT)行业发展调研与市场前景预测报告
  12. 清华大学鲍橒计算机1999,《最强大脑》鲍橒:世界盲棋第一人的最强记忆
  13. php 银行卡4位分隔,javascript将数字四位分隔模拟银行卡号码代码实例
  14. nemesis什么车_英国Mazda推出RX-8 Nemesis限量特式车
  15. python实现从文件查找关键字
  16. mxGraph实现鱼骨图(因果图)
  17. 《Web系统与技术》教材 第1章 Web系统与技术的基础知识 课件1(PPTX)
  18. 解决Weboffice控件的遮挡问题
  19. 虚拟同步发电机_学术简报基于虚拟同步发电机双机并联系统的参数自调节优化控制策略...
  20. KSWeb使用旧手机制作网站服务器

热门文章

  1. [OS] 死锁相关知识点以及银行家算法详解
  2. C# 给自己写的软件,加注册码功能。
  3. python拼图游戏编码_教你用Python自制拼图小游戏,轻松搞定熊孩子
  4. Python稳基修炼之计算机等级考试易错细节题2(含答案和解析)
  5. Html前端基础(form表单、img标签、a href标签、id的作用)
  6. Python之网络编程(基于tcp实现远程执行命令)
  7. layui生产管理系统_ssm开发生产制造业MES系统源码
  8. LeetCode第一题两数之和---JavaScript
  9. 微信多开软件苹果版_微信PC版 v3.0.0.57 多开amp;消息防撤回
  10. Python基本输出函数print()用法小结