音视频基础概念(4)—音视频开发常用工具

目录

1.VLC播放器简介

 1.1 VLC 播放器

1.2 VLC的功能列表

1.3 VLC播放网络串流

 1.4 VLC作为流媒体服务器

2. MediaInfo简介

2.1 MediaInfo

2.1.1 获取多媒体文件信息

2.1.2 支持的格式

2.1.3 .查看方式

2.1.4 国际化

2.2 MediaInfo使用方法

 2.3 MediaInfo参数说明

3. FlvAnalyser简介

​编辑

3.1 FLV简介

3.2 FlvAnalyser

 4. Elecard Stream Analyzer 码流分析工具

4.1 简介

4.2 功能列表

 5. FFmpeg简介

5.1 FFmpeg

5.2 FFmpeg命令行

5.3 FFmpeg开发包


音视频知识比较复杂,掌握常用几款音视频开发工具,对初学者非常有帮助。

VLC是一款功能很强大的开源播放器,支持多种常见音视频格式,支持多种流媒体传输协议,也可当作本地流媒体服务器使用。

MediaInfo用来分析视频和音频文件的编码和内容信息。

Elecard Stream Analyzer是一款简单小巧的码流分析工具,通过该软件,用户可以快速地分析视频序列码流。

FFmpeg是一个跨平台的音视频处理库,是一套可以用来记录、转换数字音视频,并能将其转化成流的开源计算机程序。

1.VLC播放器简介

VLC是一款功能强大的开源播放器,VLC的全名为Video Lan Client,是一个开源的、跨平台的视频播放器。VLS支持多种常见音视频格式,支持多种流媒体传输协议,也可当作本地流媒体服务器使用。其官方下载地址为 https://www.videolan.org/ 。

 1.1 VLC 播放器

VLC多媒体播放器是VideoLAN计划的多媒体播放器。它支持众多音频和视频解码器及文件格式,并支持DVD影音光盘、VCD影音光盘及各类流式协议。他也能作为unicast或multicast的流式服务器在IPv4或IPv6的高速网络连接下使用。它融合了FFmpeg的解码器和libdvdcss程序库,使其有播放多媒体文件及加密DVD影碟的功能。

作为音视频的初学者,很有必要熟练掌握VLC这个工具。

1.2 VLC的功能列表

VLC是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件、DVD、CD、VCD及各类流媒体协议文件。VLC支持大量的音视频传输、封装和编码格式,下面列出简要的功能列表。

(1)操作系统包括 Windows、Windows CE、Linux、Mac OS X、BEOS、BSD等

(2)访问形式包括文件、DVD/VCD/CD、HTTP、FTP、TCP、UDP、HLS、RTSP等

(3)编码格式包括MPEG、DIVX、WMV、MOV、3GP、FLV、H.264、FLAC等

(4)视频字幕包括DVD、DVB、Text、Vobsub等

(5)视频输出包括DirectX、X11、XVideo、SDL、FrameBuffer、ASCII 等

(6)控制界面包括WxWidgets、QT、Web、Telnet、Command line等

(7)浏览器插件包括ActiveX、Mozilla等

1.3 VLC播放网络串流

VLC播放一个视频大致分为4个步骤:

  1. access,即从不同的源获取流;
  2. demux,即把通常合在一起的音频和视频分离(有的视频也包含字幕);
  3. decode,即解码,包括音频和视频的解码;
  4. output,即输出,也分为音频和视频的输出(aout和vout);

使用VLC可以很方便地打开网络串流。首先单击主菜单的“媒体”,选择“打开网络串流”,如下图1所,输入网络URL,单击“播放按钮”,即可看到播放的网络流效果。

测试地址为:http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

 1.4 VLC作为流媒体服务器

 VLC功能很强大,不仅是一个视频播放器,也可以作为小型的视频服务器,一边播放一边转码,把视频流发送到网络上。VLC作为视频服务器的具体步骤如下。

(1)单击主菜单“媒体”中的“流”选项

(2)在弹出的对话框中单击“添加”按钮,选择一个本地视频文件,如下图所示。

 (3)单击页面下方的“串流”下拉列表框中的“串流”选项,添加串流协议

(4) 该页面会显示刚才选择的本地视频文件,然后单击“下一个”按钮

 (5)在该页面单击“添加”按钮,选择具体的流协议,如RTSP,然后单击“下一个”按钮,如下图

 (6)在该页面的下拉列表中选择“Video-H.264+MP3(TS)”,然后单击“下一个”按钮,如下图所示

 注意:一定要选中左上方的“激活转码”,并且需要的是TS流格式。

(7)在该页面可以看到VLC生成的所有串流输出参数,然后单击“流”按钮即可,如下图所示

 

 (8)说明在转码了

2. MediaInfo简介

2.1 MediaInfo

MediaInfo用来分析视频和音频文件的编码和内容信息,是一款自由软件,可以免费使用、免费获得源代码,许可协议是GNUGPL/LGPL。

官方下载地址:https://mediaarea.net/zh-CN/MediaInfo

 

2.1.1 获取多媒体文件信息

MediaInfo可以获取的多媒体文件的基本信息,具体包括以下几个方面。

(1)内容信息:标题、作者、专辑名、音轨号、日期、总时间等。

(2)视频:编码器、宽高比、帧频率、码率、比特率等。

(3)音频:编码器、采样率、声道数、语言、比特率等。

(4)文本:语言、字幕等。

(5)段落:段落数、列表等。

2.1.2 支持的格式

MediaInfo支持的格式很多,具体包括以下几种格式。

(1)视频:MKV、OGM、AVI、DivX、WMV、QuickTime、MPEG、DVD等。

(2)编码器:DivX、XviD、MSMPEG-4、ASP、H.264、AVC等。

(3)音频:OCG、MP3、WAV、RA、AC-3、DTS、AAC、M4A、AU、AIFF等。

(4)字幕:SRT、SSA、ASS、SAMI等.

2.1.3 .查看方式

MediaInfo支持众多查看方式,包括文本、表格、属性图、网页、HTML、XML等,如下图所示。它支持3种发布版本,包括图形界面、命令行、DLL(动态链接库),还可以与Windows资源管理器整合,包括拖放、右击菜单等。

2.1.4 国际化

MediaInfo的软件界面可以轻松实现本地化,但需要当地的志愿者翻译语言文件。

2.2 MediaInfo使用方法

如果需要查看少数媒体文件的信息,则可以直接把文件拖入MediaInfo应用界面,然后就会直接显示出文件的相关信息,也可以直接查看整个文件夹下的媒体文件信息,可以单击界面左侧中间的图标。无论采用哪种方式,都可以查看视频、音频、图片的格式信息,如下图:

 2.3 MediaInfo参数说明

媒体文件信息涉及的内容比较复杂,这里简单介绍一下。此处先把视图切换为HTML(View菜单—>HTML)。可以看出,媒体的详细信息主要包括3部分参数,分别是General、Video、Audio,分别如下所示。

 (1)General主要包括视频封装格式信息,包括文件大小、文件时长、比特率、编码时间等.

(2)Video主要包括视频编码的相关信息,包括编码器、Profile&Level、是否使用算术熵编码、比特率、视频文件大小、视频尺寸、帧率模式、帧率、色彩空间、扫描类型(逐行/隔行)、编码设置等。

(3)Audio主要包括音频编码的相关信息,包括格式、声道数、编码格式、Profile、时长、比特率、是否有损压缩、音频的帧率等信息。

3. FlvAnalyser简介

下载地址:https://github.com/zymill/flvAnalyser

3.1 FLV简介

直播推流的时候需要用到RTMP的视频数据格式。RTMP的视频格式和FLV相似,通过查看FLV的格式文档,可以通过分析FLV协格式来解析RTMP格式。

RTMP中的数据就是由FLV的TAG中的数据区构成。FLV是流媒体封装格式,可以将其数据看为二进制字节流。

总体上看,FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag及Tag Size对组成,如下图所示。

3.2 FlvAnalyser

FlvAnalyser非常简单方便,功能也很强大,包括文件格式分析、数据分析、十六进制分析、时间戳分析、码率分析、音视频同步分析、日志记录、语法指南(FLV基本语法)、视频或音频ES提取文件、时间信息提取等。

查看文件信息,单击AV工具栏按钮,选择一个本地FLV文件,即可看到分析的效果,如下图所示。

查看Tag列表信息,单击“FLV 提取ES流”工具栏按钮,可以查看语法详情、NALU标注、二进制与十六进制切换等,显示效果如下图。

 查看时间信息,单击“小时钟”工具栏按钮,可以查看时间信息,显示效果如下所示。

 4. Elecard Stream Analyzer 码流分析工具

Elecard Stream Analyzer 是一款简单小巧的码流分析工具,通过该软件,用户可以快速地分析视频序列码流。软件操作简单,使用方便,用户只需将视频文件导入软件内,系统就会自动分析文件,分析后就会显示视频码的文件大小、码流类型、数据包数等内容,方便用户对视频的质量进行初步评估,可有效地改善视频的拍摄质量及制定相应的修改方案。

4.1 简介

码流是视频文件在单位时间内使用的数据流量,是视频编码中画面质量控制中最重要的部分。在同样的分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越好。

多码流技术是通过在编码过程中同时产生多种不同码流及分辨率的流媒体数据,根据用户实际网络带宽条件为之自动分配相对最佳解码画质的解决方案。

在实际网络直播应用中,由于位于不同网络位置的访问者所在网络环境存在差异,而仅以某种固定码流分辨率进行网络直播流媒体传送往往会导致网络较高的用户看到的画质仍不够清晰,网速较低的用户由于解码时间过长而使画面不够流畅,为解决二者的矛盾使访问者浏览到尽可能兼顾清晰和流畅的直播内容,采用多码流技术成为一种最简单、最有效的方法。

Elecard StreamEye Tools是一款分析音视频的好工具,包括Elecard Stream Analyzer、Elecard StreamEye、Elecard YUV Viewer。

(1)Elecard StreamEye 用于编码视频的可视化表现,以及流结构分析,这些流是MPEG-1/2/4或AVC/H.264视频基本流(Video Element Stream,VES),MPEG-1的系统流(System Stream,SS)、MPEG-2的程序流(Program Stream,PS)、MPEG-2的传输流(Transport Stream,TS)。

(2)Elecard YUV Viewer 是用来看YUV视频文件数据序列的,和其他文件相比,找到二进制的图像是否匹配的,并且可观看比较结果。应用程序允许用户计算度量的质量,例如PSNR、NQI和VQM。

(3)Elecard Stream Analyzer 用于编码媒体流的语法分析,以及人类可读形式的展示,可以操作MPEG-1 Video/Audio、MPEG-2 Video/Audio、AAC、AC-3、AVC/H.264等。

其中 Elecard Stream Analyzer 主界面如下:

4.2 功能列表

 Elecard Stream Analyzer 是一个专业的视频码流分析工具,功能非常强大。

  • 拥有码流错误报告、TS错误侦测和基于ETSI TR101-290 的分析功能。
  • 能够对编码器媒体流进行深入句法分析;
  • 支持H.264/AVC、MPEG-2 TS/PS等多种常用的视频格式;
  • 可以将ES码流导入到文件;
  • 支持HEX浏览、导航和搜索;
  • 支持音视频交织分析;
  • 支持自动分析的命令行模式等。

Elecard Stream Analyzer 所支持的主要视频格式有 MPEG-2 TS、MPEG-2 PS、MPEG-1/2 Video Stream、AVC/H.264 Video Stream、HEVC/H.265 Video Stream、VP9 Video Stream、MP4 File Container、MKV File Container、AVI File Container等。

Elecard Stream Analyzer所支持的主要音频格式有MPEG-1/2、Audio Layer 1/2/3、Dolby Digital Audio、高级音频编码(Advanced Audio Coding,AAC)等。

该软件会显示SEI、序列参数集(Sequence Parameter Set,SPS)、图像参数集(Picture Parameter Set,PPS)、I/P/B Slice等信息。单击某帧可以查看详细信息,包括frame_num、slice_type等。

 5. FFmpeg简介

5.1 FFmpeg

FFmpeg是一个跨平台的音视频处理库,是一套可以用来记录、转换数字音视频,并能将其转化为流的开源计算机程序,支持Windows、linux、Mac等。FFmpeg采用LGPL或GPL许可证,提供了录制、转换及流化音视频的完整解决方案,包含非常先进的音视频编解码库libavcodec。为了保证高可移植性和编解码质量,libavcodec中很多编解码算法都是全新开发的。

FFmpeg包括几个常用的模块库:

  1. libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构。
  2. libavcodec:用于各种类型音视频编解码。
  3. libavutil:包含一些公共的工具函数。
  4. libswscale:用于视频场景比例缩放、色彩映射转换等。
  5. libpostproc:用于后期效果处理等。
  6. libswresample:提供音频重采样功能,包括采样频率、声道格式等。
  7. libavfilter:用于滤波器处理,如音视频倍速、水平翻转、叠加文字等功能。
  8. libavdevice:包括输入/输出设备的库,实现音视频数据的抓取或渲染。

FFmpeg提供了3个命令行工具,如下所述:

(1)ffmpeg:编解码小工具,可用于格式转换、解码或电视卡即时编码等。

(2)ffserver:一个HTTP多媒体即时广播串流服务器。

(3)ffplay:一个简单的播放器,使用ffmpeg库解析和解码,通过SDL显示。

FFmpeg的开发分为两种:

  1. 直接使用所提供的这3个命令行工具进行多媒体处理。
  2. 使用封装的上述8个模块库进行二次开发。

5.2 FFmpeg命令行

FFmpeg提供的命令行功能非常强大,包括但不限于以下功能。

  1. 列出支持的格式。
  2. 剪切一段媒体文件。
  3. 提取一个视频文件中的音频文件。
  4. 从MP4文件中抽取视频流并可导出裸的H.264数据.
  5. 视频静音,即只保留视频,使用命令参数-an。
  6. 使用AAC音频数据和H.264视频生成MP4文件。
  7. 音频格式转换。
  8. 从WAV音频文件中导出PCM裸数据。
  9. 将一个Mp4文件转换为一个GIF动图。
  10. 将一组图片生成GIF动图。
  11. 淡入效果器使用。
  12. 淡出效果器使用。
  13. 将两路声音合并,例如加背景音乐。
  14. 为视频添加水印效果。
  15. 视频提亮效果器。
  16. 视频旋转效果器的使用。
  17. 视频裁剪效果器的使用。
  18. 将一段视频推送到流媒体服务上。
  19. 将流媒体服务器上的流下载并保存到本地计算机。
  20. 将两个音频文件以两路流的形式封装到一个文件中

注:更详细的参数可以去FFmpeg官网查询。ffmpeg Documentation

5.3 FFmpeg开发包

当前FFmpeg最新版本为5.0.2,包括静态库、动态库、开发者3个版本。

(1)Static(静态库版本):其中只有3个应用程序,包括ffmpeg.exe、ffplay.exe、ffprobe.exe,每个exe应用程序的体积都很大,相关的dll文件已经被编译到exe程序中了,作为工具而言此版本最合适,不依赖动态库,为单个可运行程序。

(2)Shared(动态库版本):其中除了3个应用程序fmpeg.exe、ffplay.exe、ffprobe.exe之外,还有一些动态dll文件,例如avcodec-54.dll之类的文件。Shared中的exe程序体积很小,它们在运行的时候,到相应的dll文件中调用功能。程序运行过程必须依赖于提供的dll文件,开发程序时必须下载该版本,因为只有该版本中有dll动态库,需要注意Dev(开发者版本)中不包含这些dll动态库。

(3)Dev(开发者版本):该版本用于开发,其中包含了库文件xxx.lib及头文件xxx.h,这个版本不包含exe文件和dll文件。Dev版本中include文件夹内包含了所有头文件,lib文件夹中包含了所有编译开发所需要的库,但没有运行库,所以需要从Shared版本中获取。

最新的下载网址为 Releases · BtbN/FFmpeg-Builds · GitHub

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地介绍Visual C++ 2005进行流媒体编程的基本思路和方法,采用案例为主的叙述方式,将大量的技术理论融入具体的案例剖析中。采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2 各种数字音频文件格式基础 4 1.1.3 视频的相关基础概念 8 1.1.4 常见的视频文件格式 8 1.2 数字音视频数据的编解码技术 10 1.2.1 音频数据的编解码 11 1.2.2 视频数据的编解码 13 1.2.3 音视频编码的相关标准 13 1.3 音视频处理平台的选择 15 1.3.1 个人多媒体计算机 15 1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 DirectShow视频开发 21 1.5.3 DSP CCS算法开发 22 1.6 本章小结 23 第2章 Visual C++ 2005开发基础 25 2.1 Visual C++ 2005新增特性 26 2.1.1 句柄(Handles) 26 2.1.2 类型的声明 26 2.1.3 对代码编辑的改进 27 2.2 VC能做的事情 27 2.2.1 生成传统的控制台应用程序 27 2.2.2 生成基于MFC的应用程序 32 2.2.3 生成静态链接库 40 2.2.4 生成动态链接库 41 2.3 利用向导完成基本开发 46 2.3.1 生成应用程序 46 2.3.2 生成应用库LIB/DLL 53 2.4 MFC编程基础 56 2.4.1 Windows消息与事件 56 2.4.2 消息与事件的响应 63 2.4.3 常用消息 66 2.5 基于对话框的编程 68 2.5.1 创建和编辑对话框 68 2.5.2 对话框种类 75 2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 如何构造unicode版本的程序 87 2.8.3 如何使用.def文件 87 2.8.4 如何正确编写Win32 DLL 87 2.8.5 如何编写和使用资源DLL 88 2.8.6 如何实现对话框的数据交换 88 2.9 本章小结 89 第2篇 音频开发 91 第3章 DirectSound开发基础 93 3.1 Microsoft DirectSound SDK 94 3.1.1 比较DirectSound与DirectMusic 94 3.1.2 DirectSound SDK能做什么 95 3.1.3 如何获取DirectSound SDK 96 3.1.4 DirectSound SDK的基本结构 98 3.1.5 Directsound SDK安装 100 3.1.6 选择最适合用户的DirectSound SDK 100 3.1.7 用DirectSound进行编程的必要步骤 102 3.2 DirectSound的详细使用方法 103 3.2.1 DirectSound设备对象 104 3.2.2 DirectSound缓冲区对象 107 3.2.3 使用WAV数据 114 3.2.4 使用音效 116 3.3 开发环境配置 118 3.3.1 Visual C++基本开发环境配置 119 3.3.2 DirectSound应用程序的开发环境配置 119 3.3.3 DirectSound Filter开发环境配置 121 3.4 调试音频处理程序 125 3.4.1 Visual C++调试器 125 3.4.2 DirectSound中常用的调试技术 128 3.5 DirectSound开发的常见问题 130 3.6 本章小结 131 第4章 打造自己的音频播放器 133 4.1 系统设计和分析 134 4.2 缓冲区和通知基础 135 4.2.1 缓冲区的概念 135 4.2.2 缓冲区的通知 136 4.3 播放文件 137 4.3.1 创建DirectSound对象 137 4.3.2 创建播放缓冲区 138 4.3.3 调用方法播放声音 145 4.3.4 结束播放 146 4.4 系统效果演示 146 4.4.1 新建基于对话框的程序框架 147 4.4.2 添加控件及变量 147 4.4.3 封装CDirectSound类实现DirectSound声音播放 148 4.4.4 与对话框界面相关操作实现 156 4.4.5 程序运行结果 159 4.5 DirectSound开发常见问题 160 4.6 本章小结 161 第5章 语音3D特效器制作 163 5.1 系统设计和分析 164 5.2 DirectSound 3D缓冲区 164 5.2.1 获取3D缓冲区对象 165 5.2.2 最大距离和最小距离 166 5.2.3 处理模式 167 5.2.4 声音圆锥 167 5.3 DirectSound 3D虚拟听众 168 5.3.1 获得3D听众 168 5.3.2 听众的空间参数 169 5.3.3 距离因子与Doppler效应 171 5.3.4 滚降因子与延迟设置 173 5.4 系统效果演示 174 5.4.1 具体的实现步骤 174 5.4.2 程序的实现代码 176 5.4.3 程序运行结果 186 5.5 DirectSound 3D开发常见问题 187 5.6 本章小结 188 第6章 对拾音设备录制自己的语音文件 189 6.1 系统分析和设计 190 6.2 管理捕获缓冲区 191 6.2.1 创建捕获缓冲区 191 6.2.2 启动缓冲区 197 6.2.3 封锁缓冲区 197 6.2.4 解锁缓冲区 198 6.2.5 中止捕获 199 6.3 系统效果演示 199 6.3.1 声音类的封装 199 6.3.2 声音管理函数的实现 202 6.3.3 程序运行结果 214 6.4 DirectSound录制语音文件开发常见问题 215 6.5 本章小结 216 第3篇 视频开发 217 第7章 DirectShow开发基础 219 7.1 Microsoft DirectShow SDK 220 7.1.1 DirectX及成员组成 220 7.1.2 DirectShow SDK能做什么 221 7.1.3 如何获取DirectShow SDK 221 7.1.4 安装Direshow SDK 222 7.2 开发环境配置 224 7.2.1 生成DirectShow SDK开发库 224 7.2.2 Visual C++开发环境配置 229 7.2.3 常见问题解析集锦 232 7.3 DirectShow SDK基本架构 234 7.3.1 DirectShow SDK总体架构 234 7.3.2 DirectShow SDK简单应用程序案例 236 7.3.3 滤波器链表Filer Graph及各种组件 244 7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 7.4.1 通用开发流程 268 7.4.2 系统初始化 268 7.4.3 媒体播放方法 268 7.4.4 消息处理方法 270 7.4.5 视频采集技术 271 7.4.6 音频采集案例 282 7.5 本章小结 293 第8章 打造自己的媒体播放器 295 8.1 系统分析与设计 296 8.1.1 FilterGraph结构设计 297 8.1.2 GraphEdit模拟实现 297 8.1.3 界面设计 299 8.2 实现媒体控制类 307 8.2.1 CDXGraph类初始化 308 8.2.2 创建Graph滤波器链表 309 8.2.3 图像窗口设计 311 8.2.4 媒体播放控制 312 8.2.5 全屏显示及抓图存盘实现 315 8.3 实现一个简单的媒体播放器 317 8.4 升级你的播放器 321 8.4.1 添加控制功能 321 8.4.2 添加拖放功能 325 8.4.3 添加音量调节功能 326 8.4.4 添加欢迎背景图片 328 8.5 系统效果展示 328 8.6 如何播放更多的文件格式 329 8.7 本章小结 330 第9章 自制DV实现视频采集 331 9.1 系统分析与设计 332 9.1.1 采集设备的枚举 332 9.1.2 使用Capture Graph Builder 335 9.1.3 采集参数的设置 336 9.2 使用经典采集技术实现视频捕获 338 9.2.1 GraphEdit模拟实现 338 9.2.2 视频捕获类CCaptureClass的实现 340 9.2.3 界面设计 345 9.3 使用VMR技术实现视频图像捕获 350 9.3.1 VMR技术基础 350 9.3.2 GraphEdit模拟实现视频捕获预览 350 9.3.3 视频图像捕获类CVMR_Capture的实现 353 9.3.4 界面设计 361 9.4 系统效果演示 366 9.4.1 实例一 系统效果演示 367 9.4.2 实例二 系统效果演示 368 9.5 本章小结 369 第10章 VFW技术实现视频处理通用平台 371 10.1 VFW开发技术流程分析 372 10.1.1 技术概述 372 10.1.2 VFW采集开发流程图 373 10.2 使用VFW实现视频捕获和预览 373 10.2.1 建立单文档应用程序 373 10.2.2 创建视频窗口 375 10.2.3 设计回调函数 376 10.2.4 视频图像显示设置 378 10.2.5 捕获预览视频 379 10.2.6 配置视频格式及图像参数 381 10.3 使用系统插件实现视频编解码 382 10.3.1 使用系统视频编解码插件 383 10.3.2 视频编码码流写AVI文件 385 10.3.3 关闭平台 387 10.4 使用XviD CODEC算法实现视频编解码 388 10.4.1 生成XviD算法静态库(编译过程) 388 10.4.2 实现XviD CODEC视频编码算法函数 389 10.4.3 实现XviD CODEC视频解码算法函数 393 10.4.4 使用XviD CODEC编解码算法 395 10.5 平台应用效果展示 398 10.6 本章小结 399 第4篇 编解码技术 401 第11章 纵览音视频编解码技术 403 11.1 数字音视频基础 404 11.2 音视频编解码及方法 406 11.2.1 音频编码方法 406 11.2.2 视频编码方法 410 11.3 编解码技术标准 417 11.3.1 静态图像编码标准 418 11.3.2 MPEG-4/H.264视频算法 424 11.3.3 AVS国产视频编码标准 430 11.4 编解码产业及发展 431 11.4.1 编解码资源一览 431 11.4.2 编解码发展前景 432 11.5 本章小结 433 第12章 使用MMX/SSE 2进行多媒体编程 435 12.1 MMX/SSE 2技术基础 436 12.2 MMX/SSE 2指令剖析 439 12.2.1 MMX媒体扩展指令 439 12.2.2 MMX程序设计 444 12.2.3 SSE/SSE 2媒体扩展指令 455 12.2.4 SSE程序设计详细解析 457 12.3 使用MMX/SSE 2进行音视频开发 463 12.3.1 开发前技术准备 464 12.3.2 MMX/SSE 2视频编解码编程 465 12.3.3 使用VC调试MMX/SSE 2程序 470 12.4 MMX/SSE 2开发常见问题 472 12.4.1 制订计划 472 12.4.2 哪部分代码可使用MMX技术改进 473 12.4.3 代码是浮点型还是整型 473 12.4.4 EMMS准则 474 12.4.5 CPUID的检测MMX技术的用法 474 12.4.6 数据对齐 474 12.4.7 数据安排 475 12.4.8 应用程序最后的调整 476 12.5 本章小结 476 第13章 用DM642实现视频编解码技术 477 13.1 数字媒体处理器TMS320DM642DSP概述 478 13.2 DSP软件开发环境CCS 481 13.2.1 安装CCS 481 13.2.2 CCS主要部件 482 13.2.3 使用CCS优化工具实现算法优化 488 13.3 用C语言进行视频算法框架编程 492 13.3.1 C编程规则和参考 492 13.3.2 DSP关键字与CMD文件使用 493 13.3.3 算法系统资源剖析 495 13.4 DM642实现视频算法优化 497 13.4.1 并行算法指令和建立软件流水 497 13.4.2 使用intrinsic指令完成核心模块的优化 499 13.4.3 使用DSP线性汇编优化核心模块 500 13.4.4 使用Cache技术实现算法优化 507 13.4.5 使用乒乓式EDMA实现算法优化 508 13.5 DM642优化视频算法常见问题 513 13.6 本章小结 518 第14章 XviD CODEC实现MPEG-4编解码 519 14.1 MPEG-4编解码概述 520 14.1.1 基于对象的MPEG-4视频编码 520 14.1.2 XviD格式文件播放 520 14.2 XviD CODEC编解码分析 521 14.2.1 MPEG-4编解码设计与剖析 521 14.2.2 MMX/SSE 2实现XviD CODEC 549 14.2.3 DM642下XviD CODEC优化 553 14.3 运行XviD CODEC系统 559 14.3.1 YUV原始视频数据及其显示 559 14.3.2 VC平台下编译和运行XviD CODEC 559 14.3.3 CODEC在DSP下软仿真和硬仿真 562 14.4 系统效果展示 562 14.5 本章小结 563 第15章 X264实现H.264/AVC视频编码 565 15.1 H.264/AVC编码概要 566 15.1.1 开源代码工程管理软件 566 15.1.2 获取开源算法工程 566 15.1.3 H.264/AVC新特性 567 15.2 X264视频编码分析 568 15.2.1 H.264/AVC关键技术要点 569 15.2.2 X264视频编码设计与剖析 577 15.2.3 X264核心模块MMX/DSP汇编优化 599 15.3 运行X264编码系统 606 15.3.1 VC平台下编译和运行X264 606 15.3.2 JM验证X264码流 610 15.3.3 ffmpeg中的H.264视频解码 611 15.4 系统效果展示 611 15.4.1 X264实现H.264/AVC视频编码 611 15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩板卡的SDK软件开发包 619 16.2 DVR监控系统主界面软件设计 621 16.2.1 对话框应用程序开发 621 16.2.2 位图按钮设计 622 16.3 模拟DVR视频采集 636 16.3.1 基于DirectShow的视频采集回放 636 16.3.2 基于DirectShow的影音文件回放 638 16.4 系统效果展示 643 16.5 本章小结 644 附录A 旧版VC升级到VC 2005程序安全的10点注意事项 645 附录B 开发常见问题 (附源码) 因先前网友反映先前版本(11分卷版)分卷数量太多导致解压经常出错,因本人上传权限为100MB,先已重新压缩上传为2分卷版,感谢各位网友的支持。 本下载链接为分卷2,总共两个分卷 分卷1地址为: http://download.csdn.net/detail/a7952113/4785478 本分卷由2345好压(Haozip)生成,请使用2345好压来解压。 2345好压下载地址:http://www.haozip.com/ 分卷文件共有以下2个: Visual.Cpp音频视频处理技术及工程实践.haozip01.zip Visual.Cpp音频视频处理技术及工程实践.haozip02.zip
本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地介绍Visual C++ 2005进行流媒体编程的基本思路和方法,采用案例为主的叙述方式,将大量的技术理论融入具体的案例剖析中。采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2 各种数字音频文件格式基础 4 1.1.3 视频的相关基础概念 8 1.1.4 常见的视频文件格式 8 1.2 数字音视频数据的编解码技术 10 1.2.1 音频数据的编解码 11 1.2.2 视频数据的编解码 13 1.2.3 音视频编码的相关标准 13 1.3 音视频处理平台的选择 15 1.3.1 个人多媒体计算机 15 1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 DirectShow视频开发 21 1.5.3 DSP CCS算法开发 22 1.6 本章小结 23 第2章 Visual C++ 2005开发基础 25 2.1 Visual C++ 2005新增特性 26 2.1.1 句柄(Handles) 26 2.1.2 类型的声明 26 2.1.3 对代码编辑的改进 27 2.2 VC能做的事情 27 2.2.1 生成传统的控制台应用程序 27 2.2.2 生成基于MFC的应用程序 32 2.2.3 生成静态链接库 40 2.2.4 生成动态链接库 41 2.3 利用向导完成基本开发 46 2.3.1 生成应用程序 46 2.3.2 生成应用库LIB/DLL 53 2.4 MFC编程基础 56 2.4.1 Windows消息与事件 56 2.4.2 消息与事件的响应 63 2.4.3 常用消息 66 2.5 基于对话框的编程 68 2.5.1 创建和编辑对话框 68 2.5.2 对话框种类 75 2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 如何构造unicode版本的程序 87 2.8.3 如何使用.def文件 87 2.8.4 如何正确编写Win32 DLL 87 2.8.5 如何编写和使用资源DLL 88 2.8.6 如何实现对话框的数据交换 88 2.9 本章小结 89 第2篇 音频开发 91 第3章 DirectSound开发基础 93 3.1 Microsoft DirectSound SDK 94 3.1.1 比较DirectSound与DirectMusic 94 3.1.2 DirectSound SDK能做什么 95 3.1.3 如何获取DirectSound SDK 96 3.1.4 DirectSound SDK的基本结构 98 3.1.5 Directsound SDK安装 100 3.1.6 选择最适合用户的DirectSound SDK 100 3.1.7 用DirectSound进行编程的必要步骤 102 3.2 DirectSound的详细使用方法 103 3.2.1 DirectSound设备对象 104 3.2.2 DirectSound缓冲区对象 107 3.2.3 使用WAV数据 114 3.2.4 使用音效 116 3.3 开发环境配置 118 3.3.1 Visual C++基本开发环境配置 119 3.3.2 DirectSound应用程序的开发环境配置 119 3.3.3 DirectSound Filter开发环境配置 121 3.4 调试音频处理程序 125 3.4.1 Visual C++调试器 125 3.4.2 DirectSound中常用的调试技术 128 3.5 DirectSound开发的常见问题 130 3.6 本章小结 131 第4章 打造自己的音频播放器 133 4.1 系统设计和分析 134 4.2 缓冲区和通知基础 135 4.2.1 缓冲区的概念 135 4.2.2 缓冲区的通知 136 4.3 播放文件 137 4.3.1 创建DirectSound对象 137 4.3.2 创建播放缓冲区 138 4.3.3 调用方法播放声音 145 4.3.4 结束播放 146 4.4 系统效果演示 146 4.4.1 新建基于对话框的程序框架 147 4.4.2 添加控件及变量 147 4.4.3 封装CDirectSound类实现DirectSound声音播放 148 4.4.4 与对话框界面相关操作实现 156 4.4.5 程序运行结果 159 4.5 DirectSound开发常见问题 160 4.6 本章小结 161 第5章 语音3D特效器制作 163 5.1 系统设计和分析 164 5.2 DirectSound 3D缓冲区 164 5.2.1 获取3D缓冲区对象 165 5.2.2 最大距离和最小距离 166 5.2.3 处理模式 167 5.2.4 声音圆锥 167 5.3 DirectSound 3D虚拟听众 168 5.3.1 获得3D听众 168 5.3.2 听众的空间参数 169 5.3.3 距离因子与Doppler效应 171 5.3.4 滚降因子与延迟设置 173 5.4 系统效果演示 174 5.4.1 具体的实现步骤 174 5.4.2 程序的实现代码 176 5.4.3 程序运行结果 186 5.5 DirectSound 3D开发常见问题 187 5.6 本章小结 188 第6章 对拾音设备录制自己的语音文件 189 6.1 系统分析和设计 190 6.2 管理捕获缓冲区 191 6.2.1 创建捕获缓冲区 191 6.2.2 启动缓冲区 197 6.2.3 封锁缓冲区 197 6.2.4 解锁缓冲区 198 6.2.5 中止捕获 199 6.3 系统效果演示 199 6.3.1 声音类的封装 199 6.3.2 声音管理函数的实现 202 6.3.3 程序运行结果 214 6.4 DirectSound录制语音文件开发常见问题 215 6.5 本章小结 216 第3篇 视频开发 217 第7章 DirectShow开发基础 219 7.1 Microsoft DirectShow SDK 220 7.1.1 DirectX及成员组成 220 7.1.2 DirectShow SDK能做什么 221 7.1.3 如何获取DirectShow SDK 221 7.1.4 安装Direshow SDK 222 7.2 开发环境配置 224 7.2.1 生成DirectShow SDK开发库 224 7.2.2 Visual C++开发环境配置 229 7.2.3 常见问题解析集锦 232 7.3 DirectShow SDK基本架构 234 7.3.1 DirectShow SDK总体架构 234 7.3.2 DirectShow SDK简单应用程序案例 236 7.3.3 滤波器链表Filer Graph及各种组件 244 7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 7.4.1 通用开发流程 268 7.4.2 系统初始化 268 7.4.3 媒体播放方法 268 7.4.4 消息处理方法 270 7.4.5 视频采集技术 271 7.4.6 音频采集案例 282 7.5 本章小结 293 第8章 打造自己的媒体播放器 295 8.1 系统分析与设计 296 8.1.1 FilterGraph结构设计 297 8.1.2 GraphEdit模拟实现 297 8.1.3 界面设计 299 8.2 实现媒体控制类 307 8.2.1 CDXGraph类初始化 308 8.2.2 创建Graph滤波器链表 309 8.2.3 图像窗口设计 311 8.2.4 媒体播放控制 312 8.2.5 全屏显示及抓图存盘实现 315 8.3 实现一个简单的媒体播放器 317 8.4 升级你的播放器 321 8.4.1 添加控制功能 321 8.4.2 添加拖放功能 325 8.4.3 添加音量调节功能 326 8.4.4 添加欢迎背景图片 328 8.5 系统效果展示 328 8.6 如何播放更多的文件格式 329 8.7 本章小结 330 第9章 自制DV实现视频采集 331 9.1 系统分析与设计 332 9.1.1 采集设备的枚举 332 9.1.2 使用Capture Graph Builder 335 9.1.3 采集参数的设置 336 9.2 使用经典采集技术实现视频捕获 338 9.2.1 GraphEdit模拟实现 338 9.2.2 视频捕获类CCaptureClass的实现 340 9.2.3 界面设计 345 9.3 使用VMR技术实现视频图像捕获 350 9.3.1 VMR技术基础 350 9.3.2 GraphEdit模拟实现视频捕获预览 350 9.3.3 视频图像捕获类CVMR_Capture的实现 353 9.3.4 界面设计 361 9.4 系统效果演示 366 9.4.1 实例一 系统效果演示 367 9.4.2 实例二 系统效果演示 368 9.5 本章小结 369 第10章 VFW技术实现视频处理通用平台 371 10.1 VFW开发技术流程分析 372 10.1.1 技术概述 372 10.1.2 VFW采集开发流程图 373 10.2 使用VFW实现视频捕获和预览 373 10.2.1 建立单文档应用程序 373 10.2.2 创建视频窗口 375 10.2.3 设计回调函数 376 10.2.4 视频图像显示设置 378 10.2.5 捕获预览视频 379 10.2.6 配置视频格式及图像参数 381 10.3 使用系统插件实现视频编解码 382 10.3.1 使用系统视频编解码插件 383 10.3.2 视频编码码流写AVI文件 385 10.3.3 关闭平台 387 10.4 使用XviD CODEC算法实现视频编解码 388 10.4.1 生成XviD算法静态库(编译过程) 388 10.4.2 实现XviD CODEC视频编码算法函数 389 10.4.3 实现XviD CODEC视频解码算法函数 393 10.4.4 使用XviD CODEC编解码算法 395 10.5 平台应用效果展示 398 10.6 本章小结 399 第4篇 编解码技术 401 第11章 纵览音视频编解码技术 403 11.1 数字音视频基础 404 11.2 音视频编解码及方法 406 11.2.1 音频编码方法 406 11.2.2 视频编码方法 410 11.3 编解码技术标准 417 11.3.1 静态图像编码标准 418 11.3.2 MPEG-4/H.264视频算法 424 11.3.3 AVS国产视频编码标准 430 11.4 编解码产业及发展 431 11.4.1 编解码资源一览 431 11.4.2 编解码发展前景 432 11.5 本章小结 433 第12章 使用MMX/SSE 2进行多媒体编程 435 12.1 MMX/SSE 2技术基础 436 12.2 MMX/SSE 2指令剖析 439 12.2.1 MMX媒体扩展指令 439 12.2.2 MMX程序设计 444 12.2.3 SSE/SSE 2媒体扩展指令 455 12.2.4 SSE程序设计详细解析 457 12.3 使用MMX/SSE 2进行音视频开发 463 12.3.1 开发前技术准备 464 12.3.2 MMX/SSE 2视频编解码编程 465 12.3.3 使用VC调试MMX/SSE 2程序 470 12.4 MMX/SSE 2开发常见问题 472 12.4.1 制订计划 472 12.4.2 哪部分代码可使用MMX技术改进 473 12.4.3 代码是浮点型还是整型 473 12.4.4 EMMS准则 474 12.4.5 CPUID的检测MMX技术的用法 474 12.4.6 数据对齐 474 12.4.7 数据安排 475 12.4.8 应用程序最后的调整 476 12.5 本章小结 476 第13章 用DM642实现视频编解码技术 477 13.1 数字媒体处理器TMS320DM642DSP概述 478 13.2 DSP软件开发环境CCS 481 13.2.1 安装CCS 481 13.2.2 CCS主要部件 482 13.2.3 使用CCS优化工具实现算法优化 488 13.3 用C语言进行视频算法框架编程 492 13.3.1 C编程规则和参考 492 13.3.2 DSP关键字与CMD文件使用 493 13.3.3 算法系统资源剖析 495 13.4 DM642实现视频算法优化 497 13.4.1 并行算法指令和建立软件流水 497 13.4.2 使用intrinsic指令完成核心模块的优化 499 13.4.3 使用DSP线性汇编优化核心模块 500 13.4.4 使用Cache技术实现算法优化 507 13.4.5 使用乒乓式EDMA实现算法优化 508 13.5 DM642优化视频算法常见问题 513 13.6 本章小结 518 第14章 XviD CODEC实现MPEG-4编解码 519 14.1 MPEG-4编解码概述 520 14.1.1 基于对象的MPEG-4视频编码 520 14.1.2 XviD格式文件播放 520 14.2 XviD CODEC编解码分析 521 14.2.1 MPEG-4编解码设计与剖析 521 14.2.2 MMX/SSE 2实现XviD CODEC 549 14.2.3 DM642下XviD CODEC优化 553 14.3 运行XviD CODEC系统 559 14.3.1 YUV原始视频数据及其显示 559 14.3.2 VC平台下编译和运行XviD CODEC 559 14.3.3 CODEC在DSP下软仿真和硬仿真 562 14.4 系统效果展示 562 14.5 本章小结 563 第15章 X264实现H.264/AVC视频编码 565 15.1 H.264/AVC编码概要 566 15.1.1 开源代码工程管理软件 566 15.1.2 获取开源算法工程 566 15.1.3 H.264/AVC新特性 567 15.2 X264视频编码分析 568 15.2.1 H.264/AVC关键技术要点 569 15.2.2 X264视频编码设计与剖析 577 15.2.3 X264核心模块MMX/DSP汇编优化 599 15.3 运行X264编码系统 606 15.3.1 VC平台下编译和运行X264 606 15.3.2 JM验证X264码流 610 15.3.3 ffmpeg中的H.264视频解码 611 15.4 系统效果展示 611 15.4.1 X264实现H.264/AVC视频编码 611 15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩板卡的SDK软件开发包 619 16.2 DVR监控系统主界面软件设计 621 16.2.1 对话框应用程序开发 621 16.2.2 位图按钮设计 622 16.3 模拟DVR视频采集 636 16.3.1 基于DirectShow的视频采集回放 636 16.3.2 基于DirectShow的影音文件回放 638 16.4 系统效果展示 643 16.5 本章小结 644 附录A 旧版VC升级到VC 2005程序安全的10点注意事项 645 附录B 开发常见问题 (附源码) 由于文件过大所以本文件采用分卷压缩的,需要安装好压,并下载完全部压缩分卷。共11个分卷。
本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地介绍Visual C++ 2005进行流媒体编程的基本思路和方法,采用案例为主的叙述方式,将大量的技术理论融入具体的案例剖析中。采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2 各种数字音频文件格式基础 4 1.1.3 视频的相关基础概念 8 1.1.4 常见的视频文件格式 8 1.2 数字音视频数据的编解码技术 10 1.2.1 音频数据的编解码 11 1.2.2 视频数据的编解码 13 1.2.3 音视频编码的相关标准 13 1.3 音视频处理平台的选择 15 1.3.1 个人多媒体计算机 15 1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 DirectShow视频开发 21 1.5.3 DSP CCS算法开发 22 1.6 本章小结 23 第2章 Visual C++ 2005开发基础 25 2.1 Visual C++ 2005新增特性 26 2.1.1 句柄(Handles) 26 2.1.2 类型的声明 26 2.1.3 对代码编辑的改进 27 2.2 VC能做的事情 27 2.2.1 生成传统的控制台应用程序 27 2.2.2 生成基于MFC的应用程序 32 2.2.3 生成静态链接库 40 2.2.4 生成动态链接库 41 2.3 利用向导完成基本开发 46 2.3.1 生成应用程序 46 2.3.2 生成应用库LIB/DLL 53 2.4 MFC编程基础 56 2.4.1 Windows消息与事件 56 2.4.2 消息与事件的响应 63 2.4.3 常用消息 66 2.5 基于对话框的编程 68 2.5.1 创建和编辑对话框 68 2.5.2 对话框种类 75 2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 如何构造unicode版本的程序 87 2.8.3 如何使用.def文件 87 2.8.4 如何正确编写Win32 DLL 87 2.8.5 如何编写和使用资源DLL 88 2.8.6 如何实现对话框的数据交换 88 2.9 本章小结 89 第2篇 音频开发 91 第3章 DirectSound开发基础 93 3.1 Microsoft DirectSound SDK 94 3.1.1 比较DirectSound与DirectMusic 94 3.1.2 DirectSound SDK能做什么 95 3.1.3 如何获取DirectSound SDK 96 3.1.4 DirectSound SDK的基本结构 98 3.1.5 Directsound SDK安装 100 3.1.6 选择最适合用户的DirectSound SDK 100 3.1.7 用DirectSound进行编程的必要步骤 102 3.2 DirectSound的详细使用方法 103 3.2.1 DirectSound设备对象 104 3.2.2 DirectSound缓冲区对象 107 3.2.3 使用WAV数据 114 3.2.4 使用音效 116 3.3 开发环境配置 118 3.3.1 Visual C++基本开发环境配置 119 3.3.2 DirectSound应用程序的开发环境配置 119 3.3.3 DirectSound Filter开发环境配置 121 3.4 调试音频处理程序 125 3.4.1 Visual C++调试器 125 3.4.2 DirectSound中常用的调试技术 128 3.5 DirectSound开发的常见问题 130 3.6 本章小结 131 第4章 打造自己的音频播放器 133 4.1 系统设计和分析 134 4.2 缓冲区和通知基础 135 4.2.1 缓冲区的概念 135 4.2.2 缓冲区的通知 136 4.3 播放文件 137 4.3.1 创建DirectSound对象 137 4.3.2 创建播放缓冲区 138 4.3.3 调用方法播放声音 145 4.3.4 结束播放 146 4.4 系统效果演示 146 4.4.1 新建基于对话框的程序框架 147 4.4.2 添加控件及变量 147 4.4.3 封装CDirectSound类实现DirectSound声音播放 148 4.4.4 与对话框界面相关操作实现 156 4.4.5 程序运行结果 159 4.5 DirectSound开发常见问题 160 4.6 本章小结 161 第5章 语音3D特效器制作 163 5.1 系统设计和分析 164 5.2 DirectSound 3D缓冲区 164 5.2.1 获取3D缓冲区对象 165 5.2.2 最大距离和最小距离 166 5.2.3 处理模式 167 5.2.4 声音圆锥 167 5.3 DirectSound 3D虚拟听众 168 5.3.1 获得3D听众 168 5.3.2 听众的空间参数 169 5.3.3 距离因子与Doppler效应 171 5.3.4 滚降因子与延迟设置 173 5.4 系统效果演示 174 5.4.1 具体的实现步骤 174 5.4.2 程序的实现代码 176 5.4.3 程序运行结果 186 5.5 DirectSound 3D开发常见问题 187 5.6 本章小结 188 第6章 对拾音设备录制自己的语音文件 189 6.1 系统分析和设计 190 6.2 管理捕获缓冲区 191 6.2.1 创建捕获缓冲区 191 6.2.2 启动缓冲区 197 6.2.3 封锁缓冲区 197 6.2.4 解锁缓冲区 198 6.2.5 中止捕获 199 6.3 系统效果演示 199 6.3.1 声音类的封装 199 6.3.2 声音管理函数的实现 202 6.3.3 程序运行结果 214 6.4 DirectSound录制语音文件开发常见问题 215 6.5 本章小结 216 第3篇 视频开发 217 第7章 DirectShow开发基础 219 7.1 Microsoft DirectShow SDK 220 7.1.1 DirectX及成员组成 220 7.1.2 DirectShow SDK能做什么 221 7.1.3 如何获取DirectShow SDK 221 7.1.4 安装Direshow SDK 222 7.2 开发环境配置 224 7.2.1 生成DirectShow SDK开发库 224 7.2.2 Visual C++开发环境配置 229 7.2.3 常见问题解析集锦 232 7.3 DirectShow SDK基本架构 234 7.3.1 DirectShow SDK总体架构 234 7.3.2 DirectShow SDK简单应用程序案例 236 7.3.3 滤波器链表Filer Graph及各种组件 244 7.3.4 构建滤波器链表(Building Filer Graph) 252 7.3.5 滤波器链表中的数据流动Data Flow 257 7.3.6 DirectShow中的事件通知机制 261 7.3.7 常用DirectShow SDK接口 267 7.4 DirectShow SDK常用开发案例 267 7.4.1 通用开发流程 268 7.4.2 系统初始化 268 7.4.3 媒体播放方法 268 7.4.4 消息处理方法 270 7.4.5 视频采集技术 271 7.4.6 音频采集案例 282 7.5 本章小结 293 第8章 打造自己的媒体播放器 295 8.1 系统分析与设计 296 8.1.1 FilterGraph结构设计 297 8.1.2 GraphEdit模拟实现 297 8.1.3 界面设计 299 8.2 实现媒体控制类 307 8.2.1 CDXGraph类初始化 308 8.2.2 创建Graph滤波器链表 309 8.2.3 图像窗口设计 311 8.2.4 媒体播放控制 312 8.2.5 全屏显示及抓图存盘实现 315 8.3 实现一个简单的媒体播放器 317 8.4 升级你的播放器 321 8.4.1 添加控制功能 321 8.4.2 添加拖放功能 325 8.4.3 添加音量调节功能 326 8.4.4 添加欢迎背景图片 328 8.5 系统效果展示 328 8.6 如何播放更多的文件格式 329 8.7 本章小结 330 第9章 自制DV实现视频采集 331 9.1 系统分析与设计 332 9.1.1 采集设备的枚举 332 9.1.2 使用Capture Graph Builder 335 9.1.3 采集参数的设置 336 9.2 使用经典采集技术实现视频捕获 338 9.2.1 GraphEdit模拟实现 338 9.2.2 视频捕获类CCaptureClass的实现 340 9.2.3 界面设计 345 9.3 使用VMR技术实现视频图像捕获 350 9.3.1 VMR技术基础 350 9.3.2 GraphEdit模拟实现视频捕获预览 350 9.3.3 视频图像捕获类CVMR_Capture的实现 353 9.3.4 界面设计 361 9.4 系统效果演示 366 9.4.1 实例一 系统效果演示 367 9.4.2 实例二 系统效果演示 368 9.5 本章小结 369 第10章 VFW技术实现视频处理通用平台 371 10.1 VFW开发技术流程分析 372 10.1.1 技术概述 372 10.1.2 VFW采集开发流程图 373 10.2 使用VFW实现视频捕获和预览 373 10.2.1 建立单文档应用程序 373 10.2.2 创建视频窗口 375 10.2.3 设计回调函数 376 10.2.4 视频图像显示设置 378 10.2.5 捕获预览视频 379 10.2.6 配置视频格式及图像参数 381 10.3 使用系统插件实现视频编解码 382 10.3.1 使用系统视频编解码插件 383 10.3.2 视频编码码流写AVI文件 385 10.3.3 关闭平台 387 10.4 使用XviD CODEC算法实现视频编解码 388 10.4.1 生成XviD算法静态库(编译过程) 388 10.4.2 实现XviD CODEC视频编码算法函数 389 10.4.3 实现XviD CODEC视频解码算法函数 393 10.4.4 使用XviD CODEC编解码算法 395 10.5 平台应用效果展示 398 10.6 本章小结 399 第4篇 编解码技术 401 第11章 纵览音视频编解码技术 403 11.1 数字音视频基础 404 11.2 音视频编解码及方法 406 11.2.1 音频编码方法 406 11.2.2 视频编码方法 410 11.3 编解码技术标准 417 11.3.1 静态图像编码标准 418 11.3.2 MPEG-4/H.264视频算法 424 11.3.3 AVS国产视频编码标准 430 11.4 编解码产业及发展 431 11.4.1 编解码资源一览 431 11.4.2 编解码发展前景 432 11.5 本章小结 433 第12章 使用MMX/SSE 2进行多媒体编程 435 12.1 MMX/SSE 2技术基础 436 12.2 MMX/SSE 2指令剖析 439 12.2.1 MMX媒体扩展指令 439 12.2.2 MMX程序设计 444 12.2.3 SSE/SSE 2媒体扩展指令 455 12.2.4 SSE程序设计详细解析 457 12.3 使用MMX/SSE 2进行音视频开发 463 12.3.1 开发前技术准备 464 12.3.2 MMX/SSE 2视频编解码编程 465 12.3.3 使用VC调试MMX/SSE 2程序 470 12.4 MMX/SSE 2开发常见问题 472 12.4.1 制订计划 472 12.4.2 哪部分代码可使用MMX技术改进 473 12.4.3 代码是浮点型还是整型 473 12.4.4 EMMS准则 474 12.4.5 CPUID的检测MMX技术的用法 474 12.4.6 数据对齐 474 12.4.7 数据安排 475 12.4.8 应用程序最后的调整 476 12.5 本章小结 476 第13章 用DM642实现视频编解码技术 477 13.1 数字媒体处理器TMS320DM642DSP概述 478 13.2 DSP软件开发环境CCS 481 13.2.1 安装CCS 481 13.2.2 CCS主要部件 482 13.2.3 使用CCS优化工具实现算法优化 488 13.3 用C语言进行视频算法框架编程 492 13.3.1 C编程规则和参考 492 13.3.2 DSP关键字与CMD文件使用 493 13.3.3 算法系统资源剖析 495 13.4 DM642实现视频算法优化 497 13.4.1 并行算法指令和建立软件流水 497 13.4.2 使用intrinsic指令完成核心模块的优化 499 13.4.3 使用DSP线性汇编优化核心模块 500 13.4.4 使用Cache技术实现算法优化 507 13.4.5 使用乒乓式EDMA实现算法优化 508 13.5 DM642优化视频算法常见问题 513 13.6 本章小结 518 第14章 XviD CODEC实现MPEG-4编解码 519 14.1 MPEG-4编解码概述 520 14.1.1 基于对象的MPEG-4视频编码 520 14.1.2 XviD格式文件播放 520 14.2 XviD CODEC编解码分析 521 14.2.1 MPEG-4编解码设计与剖析 521 14.2.2 MMX/SSE 2实现XviD CODEC 549 14.2.3 DM642下XviD CODEC优化 553 14.3 运行XviD CODEC系统 559 14.3.1 YUV原始视频数据及其显示 559 14.3.2 VC平台下编译和运行XviD CODEC 559 14.3.3 CODEC在DSP下软仿真和硬仿真 562 14.4 系统效果展示 562 14.5 本章小结 563 第15章 X264实现H.264/AVC视频编码 565 15.1 H.264/AVC编码概要 566 15.1.1 开源代码工程管理软件 566 15.1.2 获取开源算法工程 566 15.1.3 H.264/AVC新特性 567 15.2 X264视频编码分析 568 15.2.1 H.264/AVC关键技术要点 569 15.2.2 X264视频编码设计与剖析 577 15.2.3 X264核心模块MMX/DSP汇编优化 599 15.3 运行X264编码系统 606 15.3.1 VC平台下编译和运行X264 606 15.3.2 JM验证X264码流 610 15.3.3 ffmpeg中的H.264视频解码 611 15.4 系统效果展示 611 15.4.1 X264实现H.264/AVC视频编码 611 15.4.2 ffmpeg-h264-vc工程实现H.264视频解码 612 15.5 本章小结 613 第16章 打造自己的DVR监控系统 615 16.1 DVR监控系统分析与设计 616 16.1.1 监控系统分类 616 16.1.2 监控系统组成 617 16.1.3 基于压缩板卡的SDK软件开发包 619 16.2 DVR监控系统主界面软件设计 621 16.2.1 对话框应用程序开发 621 16.2.2 位图按钮设计 622 16.3 模拟DVR视频采集 636 16.3.1 基于DirectShow的视频采集回放 636 16.3.2 基于DirectShow的影音文件回放 638 16.4 系统效果展示 643 16.5 本章小结 644 附录A 旧版VC升级到VC 2005程序安全的10点注意事项 645 附录B 开发常见问题 (附源码) 由于文件过大所以本文件采用分卷压缩的,需要安装好压,并下载完全部压缩分卷。共11个分卷。
本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地介绍Visual C++ 2005进行流媒体编程的基本思路和方法,采用案例为主的叙述方式,将大量的技术理论融入具体的案例剖析中。采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2 各种数字音频文件格式基础 4 1.1.3 视频的相关基础概念 8 1.1.4 常见的视频文件格式 8 1.2 数字音视频数据的编解码技术 10 1.2.1 音频数据的编解码 11 1.2.2 视频数据的编解码 13 1.2.3 音视频编码的相关标准 13 1.3 音视频处理平台的选择 15 1.3.1 个人多媒体计算机 15 1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 DirectShow视频开发 21 1.5.3 DSP CCS算法开发 22 1.6 本章小结 23 第2章 Visual C++ 2005开发基础 25 2.1 Visual C++ 2005新增特性 26 2.1.1 句柄(Handles) 26 2.1.2 类型的声明 26 2.1.3 对代码编辑的改进 27 2.2 VC能做的事情 27 2.2.1 生成传统的控制台应用程序 27 2.2.2 生成基于MFC的应用程序 32 2.2.3 生成静态链接库 40 2.2.4 生成动态链接库 41 2.3 利用向导完成基本开发 46 2.3.1 生成应用程序 46 2.3.2 生成应用库LIB/DLL 53 2.4 MFC编程基础 56 2.4.1 Windows消息与事件 56 2.4.2 消息与事件的响应 63 2.4.3 常用消息 66 2.5 基于对话框的编程 68 2.5.1 创建和编辑对话框 68 2.5.2 对话框种类 75 2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 如何构造unicode版本的程序 87 2.8.3 如何使用.def文件 87 2.8.4 如何正确编写Win32 DLL 87 2.8.5 如何编写和使用资源DLL 88 2.8.6 如何实现对话框的数据交换 88 2.9 本章小结 89 第2篇 音频开发 91 第3章 DirectSound开发基础 93 3.1 Microsoft DirectSound SDK 94 3.1.1 比较DirectSound与DirectMusic 94 3.1.2 DirectSound SDK能做什么 95 3.1.3 如何获取DirectSound SDK 96 3.1.4 DirectSound SDK的基本结构 98 3.1.5 Directsound SDK安装 100 3.1.6 选择最适合用户的DirectSound SDK 100 3.1.7 用DirectSound进行编程的必要步骤 102 3.2 DirectSound的详细使用方法 103 3.2.1 DirectSound设备对象 104 3.2.2 DirectSound缓冲区对象 107 3.2.3 使用WAV数据 114 3.2.4 使用音效 116 3.3 开发环境配置 118 3.3.1 Visual C++基本开发环境配置 119 3.3.2 DirectSound应用程序的开发环境配置 119 3.3.3
### 回答1: 很高兴能帮到你!学习音视频开发的路径主要可以分为以下几个步骤:1、加深对基础知识的理解,比如计算机图形学、计算机视觉、数字图像处理、信号处理等;2、掌握音视频编码技术,包括视频编码格式、视频编码技术、音频编码技术等;3、学习音视频开发的常用技术,比如视频分析、视频网络传输、视频编辑、音频分析、音频编辑等;4、学习音视频开发常用工具,比如FFmpeg、GStreamer、编解码器等;5、学习音视频开发的应用,包括视频监控、视频会议、视频编辑等。 ### 回答2: 音视频开发是一门广阔的学科,涵盖了音频和视频的采集、处理、编码、传输和播放等方面。如果你想学习音视频开发,可以从以下几个方面入手: 1. 基础知识学习:首先要了解计算机图像和音频的基础知识,包括色彩空间、分辨率、帧率、采样率、编码格式等概念。同时还需要学习相关的数学知识,如数字信号处理、图像处理和声音处理等。 2. 学习编程:音视频开发需要掌握编程技术,建议学习C++语言,因为它在音视频领域应用广泛。学习C++的基本语法和面向对象编程思想,熟悉常用的音视频开发库和工具,如FFmpeg、GStreamer等。 3. 学习音视频编码:音视频编码是音视频开发的核心内容之一。学习各种常见的音视频编码算法和标准,如H.264、MPEG-2、AAC等。了解编码的原理和流程,熟悉压缩、解压缩、封装和解封装等相关技术。 4. 学习音视频采集和处理:学习音频和视频的采集、处理和编辑技术,掌握音频信号的采集和处理、视频图像的采集和特效处理、音视频的同步和合成等技术。可以尝试使用开发工具和库来实现简单的音视频应用,如录制、剪辑、转码等。 5. 学习音视频传输和网络技术:掌握音视频的传输技术和网络协议,如RTP/RTCP、HTTP、RTMP等。了解音视频传输的原理和流程,学习网络编程的基础知识和技术,如套接字编程、UDP/TCP传输等。 6. 实践和项目开发:通过参与实际项目,积累实践经验和解决问题的能力。可以参加一些开源项目或自己设计、实现一些小的音视频应用程序,如音频播放器、视频会议应用等。 总之,学习音视频开发需要系统地学习相关的基础知识和技术,同时通过实践不断提升自己的能力。不断探索和学习新的技术和方法,关注行业的最新动态和发展趋势,才能在音视频开发领域有所建树。 ### 回答3: 音视频开发学习路径通常可以按照以下步骤进行: 1. 学习基础知识:首先了解音视频基础理论和相关概念。包括音频处理、视频编解码、媒体传输等基本原理。可以通过阅读相关书籍、教程或参加在线课程来获取这些基础知识。 2. 编程技能:具备一定的编程基础是进行音视频开发的前提。熟悉至少一门编程语言,如C++、Java或Python等,并掌握相关的编程技巧和常用的开发工具。 3. 学习音视频编解码:了解常用的音视频编解码标准,如AAC、MP3、H.264、VP9等。学习如何使用编解码库进行音视频格式转换、压缩和解压缩等工作。可以参考FFmpeg等开源库进行学习。 4. 掌握音视频处理技术:学习音视频处理的算法和技术,如音频降噪、音频增强、视频滤镜、视频特效等。可以通过学习相关的数字信号处理算法、图像处理算法以及计算机视觉技术等来推进。 5. 学习媒体传输和流媒体技术:了解常用的媒体传输协议,如RTP、RTSP、HTTP等。学习流媒体技术,如HTTP Live Streaming(HLS)、Dynamic Adaptive Streaming over HTTP(DASH)等。这些知识将有助于你理解和实现音视频流的传输和播放。 6. 实践项目:利用你学到的知识,尝试实践一些音视频开发项目。可以开发音视频播放器,录音录像应用,视频会议应用等。通过实践项目,可以更好地理解和巩固所学的知识,并培养实际应用能力。 总之,音视频开发是一个庞大的领域,需要掌握多方面的知识。通过系统学习和实践,逐步提升自己的技能和水平,在实际应用中获得更多的经验和成长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值