
android多媒体
ameyume
蓝蓝的天,白云朵朵。
展开
-
rtsp流媒体buffer填充的处理过程
NuPlayer流媒体播放器中从网络上取得的rtp包在解码和显示时所用buffer的填充和清空的机制,与stagefright框架播放本地视频时的处理流程类似。都是通过回调函数fillbuffer及emptybuffer来实现的。NuPlayer中的ACodec与Stagefright中的OMXCodec的作用相似。以下是rtsp流媒体中填充待解码的buffer,以及把解码后的buff原创 2012-03-23 16:53:32 · 12247 阅读 · 5 评论 -
MediaMetadataRetriever类取得媒体文件信息
API说明:MediaMetadataRetriever class provides a unified interface for retrieving frame and meta data from an input media file.MediaMetadataRetriever类提供了一个统一的接口用于从一个输入媒体文件中取得帧和元数据。API官方链接:http://deve原创 2012-08-10 00:00:20 · 30193 阅读 · 4 评论 -
MediaRecorder framework层的处理流程
本文主要分析framework层MediaRecorder.cpp文件对应的MediaRecorder类的处理流程。MediaRecorder.cpp通过android_media_MediaRecorder.cpp JNI层与Java API类MediaRecorder.java相互关联。下面通过对MediaRecorder类的几个主要函数进行分析来学习MediaRecorder的结构和原创 2012-08-14 23:55:39 · 5798 阅读 · 1 评论 -
Opencore error code定义
Android OpenCore error code定义在pv_return_codes.h文件中,下面是具体的错误码定义:其中的RTSP错误码可以参考:标准RTSP 消息的错误代码typedef int32 PVMFStatus;// Return codes/* Return code for general success */const PVMFStatus原创 2012-08-21 15:30:12 · 4241 阅读 · 0 评论 -
Gallery3D播放视频创建MediaPlayer的过程
1.Utils.javaplayVideo函数发送intent,所有的播放器都会收到此intentcontext.startActivity(intent);Intent类型是Intent.ACTION_VIEW。2.如果选择图库播放器,则启动MovieView activity,在onCreate函数创建了MovieViewControl3.在MovieVie原创 2012-08-15 11:41:58 · 3274 阅读 · 4 评论 -
分享一个分析的rtsp流媒体的问题
转自:http://blog.sina.com.cn/s/blog_696bcf8f0101cevn.html基于Android 4.1分析的解析rtsp流媒体rtp包,组装发给解码器进行解码的过程。以下是原文:前面几篇博文都是关于http协议的流媒体,这篇博客分享一篇分析的rtsp协议的流媒体的问题。问题北京:播放一个内网服务器上面的音频文件,拖动进度条,必现的会转载 2012-10-25 22:53:00 · 6071 阅读 · 1 评论 -
android和RTSP视频文件播放(一)
说起实时流传输协议,没有做过的就会感到很陌生,但是项目组必须用到,就要去查资料,将其解决。我前不久做的项目正好碰上,就在此说说自己的拙见。既然用到rtsp,那很有可能是做的视频监控软件,毕竟他是需要实时监控周期场景的一举一动。我们在实现播放rtsp协议之前,有以下几个问题需要搞定:(1).什么是rtsp协议?他的协议头和协议头与http有什么区别,参数分别代表什么?(2).如果利用An转载 2012-10-29 11:05:08 · 43938 阅读 · 95 评论 -
Android下载文件时对MediaScanner的调用
下载时会启动MediaScannerService进行扫描下载的文件。启动MediaScannerService的代码位于以下文件: packages\providers\downloadprovider\src\com\android\providers\downloads\DownloadService.java private void bindMediaS原创 2012-11-18 22:53:26 · 4036 阅读 · 0 评论 -
MediaFile中的isPlayListFileType函数功能介绍
在执行MediaScanner媒体扫描时经常遇到各种媒体类型判断的函数,其中有一个是MediaFile.isPlayListFileType函数。1.isPlayListFileType函数定义: public static boolean isPlayListFileType(int fileType) { return (fileType >= FIRST_P原创 2012-12-16 17:16:50 · 2298 阅读 · 0 评论 -
MediaProfiles的用法
MediaProfiles类主要用于录像和Video Editor,包括设置视频的分辨率,Audio和Video的编解码参数等。MediaProfiles.h文件中对camcorder质量的定义如下,包括了常见的视频视频分辨率。需要注意的是,下面的定义与CamcorderProfile.java中定义的视频分辨率是对应的,两者需要保持一致。enum camcorder_quality {原创 2013-04-05 23:03:30 · 8163 阅读 · 0 评论 -
Android如何通过content provider构建媒体文件数据库
Android为Camera,Audio,Video等媒体文件提供MediaProvider用于数据的保存,删除,检索等。MediaProvider实现了ContentProvider类的几个操作SQL的重要方法如insert ,delete, updata, query。MediaProvider中DatabaseHelper类用于获取与创建Database。private static转载 2013-04-17 14:26:34 · 3255 阅读 · 0 评论 -
MediaPlayer取得音视频文件总时长的方法
1.本地文件通过查询数据库audio或video视图的duration字段。这种方法针对手机上存储的本地文件有效,但对于网络上的在线文件则不起作用。2.在线文件对于在线文件,则可以在MediaPlayer的prepareAsync后,当接收到onPrepared的时候通过MediaPlayer的getDuration方法取得总时长。对于本地的APE音乐文件,也可以通过上述方法在原创 2013-05-28 22:29:35 · 26818 阅读 · 0 评论 -
AudioPlayer的处理流程
首先需要注意的是,AudioPlayer处理的是已经解码后的数据1.创建AudioPlayer对象(1)在 AwesomePlayer::play_l()函数中创建了AudioPlayer对象,并且在AwesomePlayer.cpp文件中,只在此函数中创建过AudioPlayer对象 if (mAudioSource != NULL) { if (mAudioP原创 2012-03-05 13:16:12 · 11853 阅读 · 2 评论 -
android播放http流媒体时默认最低最高缓冲值在4.0.3版本上进行了修改
如题,在2.3.7版本上最低和最高值分别是512K Bytes和5M Bytes.。 enum { kPageSize = 65536, kHighWaterThreshold = 5 * 1024 * 1024, kLowWaterThreshold = 512 * 1024, // Read原创 2014-03-11 14:55:30 · 3026 阅读 · 0 评论 -
thumbnail的处理流程和读取缩略图thumbnail所在sample的index的方法
取得video thumbnail的处理流程如下图所示,取得image的thumbnail的处理流程类似,只是取得image thumbnail的函数变成了ThumbnailUtils.createImageThumbnail。Thumbnail的返回类型是Bitmap。寻找缩略图所在sample的index的方法在SampleTable::findThumbnailSample函数中原创 2011-12-20 16:54:08 · 5591 阅读 · 0 评论 -
通过实例验证播放本地音乐MediaPlayer的reset函数并不会阻塞主线程
如题,通过下面的一个例子,频繁点击播放下一首歌,验证MediaPlayer的reset函数是否会发生阻塞。验证数据如下:在从20:26:04.673到20:26:36.168的32秒时间内,点击170次Next播放下一首歌曲,都成功,没有发生阻塞主线程导致ANR的问题。由于本例播放的都是本地歌曲 ,所以没有发生阻塞的情况。如果是播放在线歌曲,需要与网络交换,频繁执行播放动作,可能会发生原创 2013-06-24 20:43:46 · 6790 阅读 · 6 评论 -
FLV文件格式看这三篇文章就够了
1. 流媒体-FLV格式详解及数据分析2. flv文件格式解析3. flv格式详解+实例剖析对于音频Tag,如图:分析如下:先看下tag header定义:对照tag header定义,可知08表示音频tag,后面的3字节00 00 07表示数据部分的长度大小为7,即从stream id后面的长度为7;3字节的时间戳00 00 00和1字节扩展时间戳00 都是0...原创 2019-01-13 11:38:42 · 873 阅读 · 0 评论 -
ubuntu14.04系统Android NDK编译ffmpeg遇到的问题
1 参考以下两篇博客中的build.sh,编译ffmpeg 4.1、4.1.1、以及旧版本2.7.7都存在问题FFmpeg编译成Android动态库Linux下使用android ndk编译FFmpeg(最新版FFmpeg 4.4.1)1.1 编译脚本如下:# build.sh# 在Linux下编译FFmpeg成功的脚本# 注意Linux和windows的换行符\r\n不太一样,要转...原创 2019-02-14 17:47:59 · 6577 阅读 · 2 评论 -
AwesomePlayer类的seek操作介绍
AwesomePlayer类的seek操作介绍1.执行音频seek的地方(mAudioPlayer->seekTo)只有两处,一处是在seekAudioIfNecessary_l函数中,另外一处是在finishSeekIfNecessary函数中。2.执行seekAudioIfNecessary_l函数的地方有两处,一处是在seekTo_l函数中,另外一处是在play_l函数中。原创 2012-05-24 16:30:45 · 4173 阅读 · 1 评论 -
音频采样率
1.什么是采样率?采样率(也称为采样速度或者采样频率)定义了每秒从连续信号中提取并组成离散信号的采样个数,单位用赫兹(Hz)来表示。采样频率的倒数是采样周期(也称为采样时间),它表示采样之间的时间间隔。这里要注意不要将采样率与位速相混淆。2.常用的数字音频采样率在数字音频领域,常用的采样率有: * 8,000 Hz - 电话所用采样率, 对于人的说话已经足够;原创 2012-07-14 10:30:40 · 16497 阅读 · 0 评论 -
设置RTSP, RTP和RTCP端口号
1.设置RTSP端口号设置RTSP端口号的处理位于ARTSPConnection.cpp文件中,首先从url中获取端口号,如果读取不到,则设置为默认端口554。代码处理如下:ARTSPConnection::ParseURL( const char *colonPos = strchr(host->c_str(), ':'); if (colonPos != NUL原创 2012-03-13 09:42:30 · 33275 阅读 · 1 评论 -
Android ICS创建StagefrightPlayer播放器的过程
ICS相比GB,在创建播放器时有少许变化。MediaPlayer::setDataSource(const sp& player)函数只是简单的把函数名改为MediaPlayer::attachNewPlayer(const sp& player),内部处理基本没有变化。MediaPlayerService类去掉了MediaPlayerService::create的重载函数,并且在cre原创 2011-12-14 14:58:49 · 3889 阅读 · 2 评论 -
ICS4.0.3创建NuPlayer的处理流程
ICS4.0.3中播放RTSP流媒体使用的播放器框架是NuPlayer,现在就分析创建NuPlayer的处理流程。1.创建Nulayer所做的处理在NuPlayerDriver::NuPlayerDriver()构造函数中:1.1 创建了ALooper对象mLooper,并调用了 mLooper->start函数,优先级为PRIORITY_AUDIO。 在ALooper:原创 2012-03-16 10:39:13 · 15625 阅读 · 12 评论 -
NuPlayer reset处理流程
1.NuPlayerDriver::reset() mPlayer->resetAsync();// 执行异步reset while (mResetInProgress) { // 等待reset完成,如果5秒未完成,则会出现ANR mCondition.wait(mLock); }2.NuPlayer::resetAsync()发送kWhatRe原创 2012-03-12 10:23:50 · 6800 阅读 · 1 评论 -
MediaErrors.h定义了多媒体格式的错误码,如常见的-1007错误
MediaErrors.h定义了多媒体格式的错误码,如常见的-1007错误为ERROR_MALFORMED,表示文件格式错误。例如log输出:E/MediaPlayer( 649): error (1, -1007)其中-1007即是ERROR_MALFORMED。错误码的定义位于:frameworks/base/include/media/stagefright/MediaErr原创 2011-08-06 13:45:16 · 9777 阅读 · 1 评论 -
MediaRecorderClient决定使用stagefright还是opencore实现录音录像的代码实现
android录音或者录像时,决定是使用stagefright还是opencore框架的代码实现位于MediaRecorderClient类中,代码实现如下:MediaRecorderClient::MediaRecorderClient(const sp& service, pid_t pid){ LOGV("Client constructor"); mPid = pid;原创 2011-08-13 17:24:30 · 4017 阅读 · 2 评论 -
3gp或者mp4文件的duration长度为0,在SampleIterator::seekTo函数返回错误码-1007
如果3gp或者mp4文件的duration长度为0,则会在SampleIterator::seekTo函数返回错误码-1007,即ERROR_MALFORMED错误。if (mTable->mSampleToChunkOffset || mTable->mChunkOffsetOffset || mTable->mSampleSize原创 2011-08-06 14:41:40 · 3341 阅读 · 0 评论 -
http streaming缓冲buffer更新进度的处理流程
对于http streaming,更新buffer进度的处理在AwesomePlayer::onBufferingUpdate()函数中,首先判断mCachedSource != NULL,即是http://流媒体的情况下,通过getBitrate(&bitrate)函数取得bitrate,然后计算出buffer的进度,通过notifyListener_l(MEDIA_BUFFERING_UPDA原创 2011-12-12 18:13:27 · 12844 阅读 · 3 评论 -
The audio codec for mp4 atom
In the 'esds' atom there are a few fields of relevance to determining the codec used. The first byte of content of the esds atom is the objectTypeIndication. (This is the 11th byte from your solution.原创 2011-06-07 15:55:00 · 5332 阅读 · 0 评论 -
联通和电信的流媒体播放
1.联通网址:http://www.wo.com.cn(1)HTTP 格式手机电视/点播/免费点播/英伦平安一路行/大使致辞-英伦行/观看WIFI/3G 使用的都是 Stagefright 框架。(2)RTSP格式手机电视/直播/卫视频道/BTV 北京/北京卫视/观看WIFI使用Stagefright框架, 不能使用Opencore 。 3G原创 2011-12-02 15:52:34 · 2902 阅读 · 0 评论 -
RTSP连接服务器和从服务器接收数据的处理流程
RTSP连接服务器是否成功,以及是否从服务器接收到实际播放的数据,主要是判断两个linux select函数的执行结果。1.连接服务器的处理过程ARTSPConnection::onConnect(const sp &msg) int err = ::connect( mSocket, (const struct sockaddr *)&remote,原创 2011-12-27 17:50:23 · 5012 阅读 · 2 评论 -
[整理]Stagefright框架中视频播放流程
Stagefright框架中视频播放流程1.创建playerengine// 设置数据源,以及 audio sinkMediaPlayer::SetDataSource(PATH_TO_FILE)-> MediaPlayerService::create->MediaPlayerService::Client::setDataSource->GetPlayerTyp原创 2011-10-27 14:42:17 · 9580 阅读 · 4 评论 -
trunk/ MP4Info/ Box/ ftyp.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210原创 2011-07-04 15:38:34 · 3568 阅读 · 0 评论 -
Android Stagefright MPEG4Extractor分析
视频播放的基本流程? video track +---------------+ frame +--------------+ +--------------->| Video Decoder |---------->| Video Outp转载 2012-06-16 22:22:22 · 5102 阅读 · 0 评论 -
Android MP4取得播放时长的方法
<!--@page {margin:2cm}h1 {margin-top:0.85cm; margin-bottom:0cm; color:#365f91; page-break-inside:avoid}h1.western {font-family:"Cambria",serif; font-size:14pt}h1.cjk {font-fami原创 2012-06-18 13:14:10 · 13161 阅读 · 1 评论 -
MediaPlayer中创建AudioTrack的过程
MediaPlayer中创建AudioTrack的过程使用MediaPlayer播放音视频时,会创建AudioTrack对象用于播放音频数据。下面就来看看MediaPlayer创建AudioTrack的过程:1.创建AudioTrack对象MediaPlayer类中并没有直接创建AudioTrack,而是把创建AudioTrack对象的操作放在了MediaPlayerServi原创 2012-06-04 17:12:28 · 7450 阅读 · 0 评论 -
音频seekTo的实现
1.音频的seekTo最终是在AudioPlayer类中实现的,AudioPlayer::seekTo函数status_t AudioPlayer::seekTo(int64_t time_us) { Mutex::Autolock autoLock(mLock); mSeeking = true;// 设置seek标志为true mReachedEOS = fals原创 2011-12-25 22:18:01 · 4325 阅读 · 2 评论 -
《音视频开发进阶指南:基于Android与iOS平台的实践》源码下载地址
年前买了这本书,想看下随书源码,一开始从优快云下载频道下载电子书+源码,但那个源码不是这边书的。从网上找了一段时间,终于找到了(其实在书的前言/勘误和支持中有给出),作者展晓凯的相关网站如下:作者展晓凯的网站:影音开发者联盟http://www.music-video.cn/其中有本书的代码地址:github代码仓库地址http://github.com/zhanxiao...原创 2019-04-25 14:17:17 · 6715 阅读 · 9 评论