
Multimedia
文章平均质量分 89
CBlueware
多媒体开发十余年
展开
-
音视频播放 via Media Foundation I
音频播放 via Media Foundation IMedia Foundation 简介Media Foundation 播放音频播放流程图播放代码CPlayer::OpenURL 函数CPlayer::CreateSession 函数CTopoBuilder::CreateMediaSource 函数CTopoBuilder::CreateTopology 函数CTopoBuilder::A...原创 2019-01-31 17:54:21 · 1104 阅读 · 0 评论 -
音视频播放 via Media Foundation II
音频播放 via Media Foundation IMedia Foundation 简介Media Foundation 播放音频播放流程图播放代码MFPlayer 类MFPlayer::CreateInstance 静态函数MFPlayer::Initialize 函数CAudioSessionVolume 类CAudioSessionVolume::Initialize 函数MFPlaye...原创 2019-01-30 19:30:23 · 979 阅读 · 0 评论 -
音频特效滤镜 via Media Foundation Transform (MFT)
音频特效插件 via Media Foundation音频特效定义Media Foundation TransformIMFTransform::GetInputStreamInfo 函数IMFTransform::GetOutputStreamInfo 函数IMFTransform::GetInputAvailableType 函数CDelayMFT::GetProposedType 函数IMF...原创 2019-02-12 11:46:01 · 851 阅读 · 1 评论 -
声卡数据采集
声卡数据采集Loopback 录制模式Loopback 录制代码LoopackAudCap::init 函数MMDeviceHelper::getDefaultSpeaker 函数LoopackAudCap::_loopbackCap 函数LoopackAudCap::_capture 函数LoopackAudCap::start & stop 函数CWavFileHelper::clos...原创 2019-02-12 14:25:42 · 2706 阅读 · 2 评论 -
音频频谱 via FFT
音频频谱分析频谱和均衡器声音信号的时域和频域FFTAudioSpectrum sample工作流程源代码_readAudioData 函数FFTUtil::calc 函数按指定频率计算对应的幅值Sample 程序展示频谱和均衡器频谱和均衡器,几乎是媒体播放程序的必备物件,没有这两个功能的媒体播放程序会被认为不够专业。声音信号的时域和频域时域是描述数学函数或物理信号对时间的关系。例如一...原创 2019-02-12 15:22:40 · 6483 阅读 · 2 评论 -
RGB 和 YUV 格式
RGB 和 YUV 格式RGBWindows 中的 RGB 格式DIB 位图(Bitmap)文件结构RGB24 & RGB32 格式YUVWindows 中的 YUV 格式YUV 采样表面(Surface)定义YUY2 格式NV12 格式ColorSpace sampleRGB计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用 R(Red)、G(Green)、B(Blue)相加混...原创 2019-02-12 16:50:28 · 589 阅读 · 0 评论 -
Windows 2D 绘图 (GDI, GDI+, Direct2D)
Windows 2D 绘图GDIGDI 函数GDI+GDI 和 GDI+ 的区别GDI+ 新特性Direct2D视觉效果demoGDIGDI 是 Graphics Device Interface 的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有 Windows 程序的图形输出。在 Windows 操作系统下,绝大多数具备图形界面的应用程序都离不开 GDI...原创 2019-02-12 18:05:28 · 6045 阅读 · 0 评论 -
视频编码
视频编码视频编码基本原理变换编码熵编码运动估计和运动补偿混合编码分辨率、帧率和码率主流视频编码器常见视频格式H.264H.264 主要特点视频编码基本原理视频信号的冗余信息以记录数字视频的 YUV 分量格式为例,YUV 分别代表亮度与两个色差信号。例如对于现有的 PAL 制电视系统,其亮度信号采样频率为 13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为 6.75MHz 或 3....原创 2019-02-12 19:15:28 · 750 阅读 · 0 评论 -
视频采集 via FFmpeg
视频采集 via FFmpegFFmpeg 简介FFmpeg 命令行采集视频FFmpeg API 采集视频这里所说的采集是指通过摄像头采集图像数据然后经过编码保存为磁盘上的一个文件。Windows 上有如下几种常见的实现方式:FFmpegDirectShowMedia FoundationFFmpeg 简介FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开...原创 2019-02-13 11:41:27 · 927 阅读 · 0 评论 -
视频采集 via DirectShow
视频采集 via DirectShowDirectShow 简介DirectShow 采集视频采集流程图采集代码CVideoCap 类CVideoCap::_initCapDevice 函数CVideoCap::_buildCaptureGraph 函数CVideoCap::startPreview 函数CVideoCap::startRecord 函数CRecordSwitch 类CTransI...原创 2019-02-13 13:27:40 · 641 阅读 · 0 评论 -
视频采集 via Media Foundation
视频采集 via Media FoundationMedia Foundation 简介Media Foundation 采集视频采集流程图MF 采集视频代码MMDeviceHelper::enumVidCapDevices 函数CMFCapture::startCapture 函数CMFCapture::_configVideoCapture 函数createSrcReader 函数config...原创 2019-02-13 14:07:08 · 2185 阅读 · 1 评论 -
视频播放 via FFmpeg
视频播放 via FFmpegFFmpeg 简介FFmpeg 命令行播放视频FFmpeg + SDL 播放视频播放流程播放代码open_input_file 函数init_cvt_frame_and_sws 函数Video_filter::init 函数SDL_video_helper::init 函数SDL_video_helper::video_refresh_thread 函数SDL_vid...原创 2019-02-13 15:56:30 · 628 阅读 · 0 评论 -
视频播放 via DirectShow
视频播放 via DirectShowDirectShow 简介DirectShow 播放视频播放流程播放代码DShowPlayer::OpenFile 函数DShowPlayer::InitializeGraph 函数DShowPlayer::RenderStreams 函数DShowPlayer::CreateVideoRenderer 函数EVR::AddToGraph 函数EVR::Ini...原创 2019-02-13 17:09:57 · 553 阅读 · 0 评论 -
视频转码 via FFmpeg
视频转码 via FFmpegFFmpeg 简介FFmpeg 命令行转码FFmpeg API 转码Transcoding 流程图Transcoding 代码open_input_file 函数open_output_video_file 函数init_cvt_frame_and_sws 函数转码(transcoding)其实就是把音频从一种编码转换成另一种编码的过程,如 mpg2 → h.264...原创 2019-02-13 20:41:47 · 844 阅读 · 1 评论 -
视频转码 via Media Foundation
视频转码 via Media FoundationMedia Foundation 简介Media Foundation 转码视频Transcoding 流程图Transcoding 代码setTranscodeProfile 函数CTranscodeTopoBuilder_setAudioAttributes 函数CTranscodeTopoBuilder::_setVideoAttribute...原创 2019-02-14 11:41:36 · 1175 阅读 · 0 评论 -
视频特效滤镜 via FFmpeg Filter
视频特效插件 via FFmpeg视频特效定义FFmpeg filterav_filter_base 类av_filter_base::video_filter_init_begin 函数Video_filter 子类av_filter_base::filter_init_end 函数av_filter_base::do_filter 函数视频特效定义视频特效(Video effects 或 ...原创 2019-02-14 12:07:00 · 1265 阅读 · 0 评论 -
音频播放 via DirectShow
音频播放 via DirectShowDirectShow 简介DirectShow 播放音频播放流程播放代码DSAudioPlayer::openFile 函数DSAudioPlayer::_initGraph 函数DSAudioPlayer::_renderStreams 函数DSAudioPlayer::_updateVolume 函数DSAudioPlayer::play 函数handl...原创 2019-01-30 15:55:57 · 564 阅读 · 0 评论 -
音频播放 via FFmpeg
音频播放 via FFmpegFFmpeg 简介FFmpeg 命令行播放音频FFmpeg + SDL 播放音频播放流程播放代码这里所说的播放是指通过读取声音文件数据然后经过解码输出到扬声器进行播放的过程。Windows 上有如下几种常见的实现方式:Waveform APIFFmpegDirectShowMedia FoundationFFmpeg 简介FFmpeg 是一套可以用...原创 2019-01-30 12:53:20 · 886 阅读 · 0 评论 -
音频播放 via Waveform API
音频播放 via Waveform APIWaveform API 播放音频播放流程图播放代码CWavOutHelper::_openWavFile 函数CWaveFileHelper::open 函数CWaveFileHelper::getAudioData 函数CWavOutHelper::_prepareHeaderAndPlay 函数CWavOutHelper::_fillAudioBuf...原创 2019-01-29 17:52:46 · 466 阅读 · 0 评论 -
音频转码 via FFmpeg
音频转码 via FFmpegFFmpeg 简介FFmpeg 命令行转码FFmpeg API 转码Transcoding 流程图Transcoding 代码open_input_file 函数open_output_audio_file 函数open_output_file 函数init_audio_encoder 函数audio_transcode 函数decode_a_frame 函数read...原创 2019-01-31 19:26:00 · 1331 阅读 · 0 评论 -
音频转码 via DirectShow
音频转码 via DirectShowDirectShow 简介DirectShow 转码Transcoding 流程图Transcoding 代码_initGraph 函数_addEncoder 函数_addFileWriter 函数_renderStream 函数handleDShowEvent 函数DShow transcoding graph转码(transcoding)其实就是把音频从...原创 2019-02-01 09:30:00 · 702 阅读 · 0 评论 -
Windows多媒体开发框架介绍
Windows 多媒体开发框架介绍欢迎来到 Windows 的多媒体开发世界2D 图形 API1. [GDI](https://docs.microsoft.com/en-us/windows/desktop/gdi/windows-gdi)2. [GDI+](https://docs.microsoft.com/en-us/windows/desktop/gdiplus/-gdiplus-gdi...原创 2019-01-27 15:55:21 · 5289 阅读 · 7 评论 -
音频转码 via Media Foundation
音频转码 via Media FoundationMedia Foundation 简介Media Foundation 转码音频Transcoding 流程图Transcoding 代码setTranscodeProfile 函数CTranscodeTopoBuilder::_setAudioAttributes 函数CTranscodeTopoBuilder::_setContainerAtt...原创 2019-02-01 17:34:22 · 1761 阅读 · 0 评论 -
音频特效滤镜 via FFmpeg Filter
音频特效插件 via FFmpeg音频特效定义FFmpeg filterFFmpeg filter graphFilter graph 的语法av_filter_base 类av_filter_base::init 函数av_filter_base::audio_filter_init_begin 函数Audio_filter 子类av_filter_base::filter_init_end 函...原创 2019-02-02 14:57:34 · 1581 阅读 · 0 评论 -
音频特效滤镜 via DirectShow Filter
音频特效插件 via DirectShow音频特效定义DirectShow FilterCTransformFilter::CheckInputType 函数CTransformFilter::SetMediaType 函数CTransInPlaceFilter::Transform 函数ISpecifyPropertyPages::GetPages 函数CGargleProperties 类音...原创 2019-02-02 15:38:39 · 483 阅读 · 0 评论 -
音频编码
音频编码音频编码基本原理[^1]音频信号的冗余信息静音阈值曲线频谱掩蔽效应时域掩蔽效应压缩编码方法音频采样音频量化语音 / 音频编码算法常见音频压缩格式对比音频编码基本原理1音频信号的冗余信息数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽。例如,一套双声道数字音频若取样频率为 44.1KHz,每样值按 16bit 量化,则其码率为: 2 x 44.1 kHz x 16 bi...原创 2019-01-28 19:19:40 · 1953 阅读 · 4 评论 -
视频特效滤镜 via Media Foundation Transform (MFT)
视频特效插件 via Media Foundation视频特效定义Media Foundation TransformIMFTransform::GetInputStreamInfo 函数IMFTransform::GetOutputStreamInfo 函数IMFTransform::GetInputAvailableType 函数CGrayscale::OnGetPartialType 函数I...原创 2019-02-14 16:50:40 · 1293 阅读 · 1 评论 -
PCM和WAV数据结构
PCM 和 WAV 数据结构采样率数字音频常用的采样率位深度PCM 音频数据PCM 音频数据的存储PCM 音频数据的参数PCM 音频数据的处理降低某个声道的音量[^1]PCM → WAVWAV 格式定义WAV 文件头解析PCM → WAV 代码[^1]采样率在我的另一篇博文 音频编码 中已经介绍了采样和量化的概念,这里介绍一下采样率。采样率表示音频信号每秒的数字快照数。该速率决定了音频文件的...原创 2019-01-29 10:40:51 · 3839 阅读 · 0 评论 -
Intel MSDK 硬解码
Intel MSDK 硬解码Intel MSDK samplesIntel MSDK decoding sampleIntel MSDK decoding 代码ffmpeg_reader::Init 函数SDL_video_helper::init 函数CDecodingPipeline::Init 函数CDecodingPipeline::InitMfxParams 函数decoding_thr...原创 2019-02-14 20:00:54 · 2668 阅读 · 7 评论 -
音频采集 via Waveform API
音频采集 via Waveform APIWaveform API 采集音频采集音频的流程代码调用概览CWaveInHelper::enumDevices 函数CWaveInHelper::openDevice 函数CWaveInHelper::startRecording 函数CWaveInHelper::_waveInProc 回调函数CWaveInHelper::stopRecording ...原创 2019-01-29 11:54:26 · 664 阅读 · 3 评论 -
音频采集 via FFmpeg
音频采集 via FFmpegFFmpeg 命令行采集音频FFmpeg API 采集音频音频重采样FFmpeg 采集音频代码概览open_cap_device 函数enum_dshow_acap_devices 函数open_output_audio_file 函数open_output_file 函数init_audio_encoder 函数audio_transcode 函数decode_a_...原创 2019-01-29 13:56:11 · 1424 阅读 · 0 评论 -
音频采集 via DirectShow
音频采集 via DirectShowDirectShow 简介DirectShow 采集音频采集流程图采集代码概览enumAudioInputFilters 函数addFilterByCLSID 函数connectFilters 函数getUnconnectedPin 函数GraphEdit这里所说的音频采集是指通过麦克风采集声音数据然后经过编码保存为磁盘上的一个文件。Windows 上有如...原创 2019-01-29 14:35:32 · 474 阅读 · 0 评论 -
音频采集 via Media Foundation
音频采集 via Media FoundationMedia Foundation 简介Media Foundation 采集音频采集流程图采集代码概览MMDeviceHelper::enumAudCapDevices 函数CMFCapture::startCapture 函数CMFCapture::_configAudioCapture 函数createSrcReader 函数configSrc...原创 2019-01-29 15:18:04 · 925 阅读 · 0 评论 -
Intel MSDK 硬编码
Intel MSDK 硬编码Intel MSDK samplesIntel MSDK encoding sampleIntel MSDK encoding 代码CEncodingPipeline::Init 函数ffmpeg_writer::Init 函数CEncodingPipeline::Run 函数CEncodingPipeline::EncodeFrame 函数CEncodingPipel...原创 2019-02-15 11:26:59 · 3809 阅读 · 6 评论 -
视频特效滤镜 via DirectShow Filter
视频特效插件 via DirectShow视频特效定义DirectShow FilterCEZrgb24 FilterCTransformFilter::CheckInputType 函数CTransformFilter::CheckTransform 函数CTransformFilter::DecideBufferSize 函数CTransformFilter::Transform 函数CEZr...原创 2019-02-14 14:56:54 · 783 阅读 · 0 评论