播放声音可以用MediaPlayer和AudioTrack,两者都提供了java API供应用开发者使用。虽然都可以播放声音,但两者还是有很大的区别的。其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在framework层创建对应的音频解码器。而AudioTrack只能播放已经解码的PCM流,如果是文件的话只支持wav格式的音频文件,因为wav格式的音频文件大部分都是PCM流。AudioTrack不创建解码器,所以只能...
分类:
移动开发 时间:
2014-10-11 13:50:55
阅读次数:
488
在前面几章,我们了解了视频解码的原理,了解了音频解码的原理,也将视频和音频分别放在了相应的解码线程中去了。所以这整个过程中,我们有一个基本无用的电影播放器。它可以播放视频,它也可以播放音频,但是这个并不完整,因为音频和视频并不同步,我们接下来要做的就是将音频和视频同步起来。音频流有一个采样率,并且视...
分类:
其他好文 时间:
2014-08-06 01:48:41
阅读次数:
238
之前上传了一个开源播放器工程ffplay for mfc。它将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下,并且使用MFC做了一套界面。它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出。此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等;以及一些码流分析功能:视频解码分析和音频解码分析。详细的...
分类:
其他好文 时间:
2014-07-10 23:06:27
阅读次数:
230
向OpenCORE里继承一个新的codec时,需要用到OpenMAX接口规范对该codec进行封装,即要定义一个用于封装的类(wrapper),实现OpenMAX规定的集中核心方法(omxcoremethods)。若该codec是一个音频解码器,则该类继承OmxComponentAudio类;若是视...
分类:
其他好文 时间:
2014-06-26 19:18:20
阅读次数:
218
最进要写一个多线程加载资源的资源管理器(ResourceManager)和多线程音频解码器(MultiThread
Decoder)。因为距最近一次用到多线程放下好久了,所以今天把生产者消费者问题练一下手。
为什么选择生产者消费者问题,因为他比较接近资源管理器和多线程音频解码器的原型。 比如...
分类:
编程语言 时间:
2014-06-10 11:45:52
阅读次数:
367
ffplay播放器移植VC的工程:ffplayfor MFC本文介绍一个自己做的FFPLAY移植到VC下的开源工程:ffplayfor MFC。本工程将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下。并且使用MFC做了一套简单的界面。它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出。此外还包含一些控制功能:播放,暂停/继...
分类:
其他好文 时间:
2014-06-08 08:27:22
阅读次数:
316
C语言实现多态的原理:函数指针
何为函数指针?答案:C Programming Language. 可以查阅下,从原理上来讲,就是一个内存地址,跳过去执行对应的代码段。
既然如此,在运行时决定跳到哪个地方去执行特定的代码即可。
一个简单的版本:
以音频解码器作为例子:AAC 解码器,Mpeg解码器,以及其他类型的解码器。
那手动的多态可能会这样实现:
U32 audioHandle...
分类:
其他好文 时间:
2014-05-18 14:27:14
阅读次数:
309