request timed out什么意思

request timed out什么意思,第1张

request timed out的意思是:请求超时,连接不到服务器。

request

读音:英[rɪˈkwest]   美[rɪˈkwɛst]

n 要求; 需要; 所请求的事物; 申请书;

vt (下级对上级的) 请求; 请求得到; 索取; 邀请[常接不定式或从句];

[例句]Mr Dennis said he had requested access to a telephone

翻译:丹尼斯先生说他已经请求使用电话。

timed

读音:英['taɪmd]   美['taɪmd]

释义:同步的,定时的,时控的;

原型: time

out

英[aʊt]   美[aʊt]

adv 出局; 在外,在外部; 完全,彻底; 出版;

prep (表示来源) 从; (从…里) 出来; (表示不在原状态) 脱离; 离去;

vt 使熄灭; 揭露; 驱逐;

[例句]Carefully pull out the centre pages

翻译:小心翼翼地抽出中间的几页。

扩展资料

out

第三人称单数:outs

复数:outs

现在分词:outing

过去式:outed

过去分词:outed

request

第三人称单数:requests

复数:requests

现在分词:requesting

过去式:requested

过去分词:requested

最近观察到日志上偶现一个错误:

该问题很清晰,就是发起>

1、 StageFright介绍

Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,并没有完全抛弃opencore,主要是做了一个OMX层,仅仅是对 opencore的omx-component部分做了引用。stagefright是在MediaPlayerService这一层加入的,和opencore是并列的。Stagefright在 Android中是以shared library的形式存在(libstagefrightso),其中的module -- AwesomePlayer可用来播放video/audio。 AwesomePlayer提供许多API,可以让上层的应用程序(Java/JNI)来调用。

2、 StageFright数据流封装

21》由数据源DataSource生成MediaExtractor。通过MediaExtractor::Create(dataSource)来实现。Create方法通过两步来生成相应的 MediaExtractor(MediaExtractorcpp):

 通过dataSource->sniff来探测数据类型

 生成相应的Extractor:

if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG4)

|| !strcasecmp(mime, "audio/mp4")) {

return new MPEG4Extractor(source);

} else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) {

return new MP3Extractor(source, meta);

} else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_NB)

|| !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_WB)) {

return new AMRExtractor(source);

} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_WAV)) {

return new WAVExtractor(source);

} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_OGG)) {

return new OggExtractor(source);

} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MATROSKA)) {

return new MatroskaExtractor(source);

} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG2TS)) {

return new MPEG2TSExtractor(source);

}

22》把音视频轨道分离,生成mVideoTrack和mAudioTrack两个MediaSource。代码如下(AwesomePlayercpp):

if (!haveVideo && !strncasecmp(mime, "video/", 6)) {

setVideoSource(extractor->getTrack(i));

haveVideo = true;

} else if (!haveAudio && !strncasecmp(mime, "audio/", 6)) {

setAudioSource(extractor->getTrack(i));

haveAudio = true;

}

23》得到的这两个MediaSource,只具有parser功能,没有decode功能。还需要对这两个MediaSource做进一步的包装,获取了两个MediaSource(具有parse和decode功能):

mVideoSource = OMXCodec::Create(

mClientinterface(), mVideoTrack->getFormat(),

false, // createEncoder

mVideoTrack,

NULL, flags);

mAudioSource = OMXCodec::Create(

mClientinterface(), mAudioTrack->getFormat(),

false, // createEncoder

mAudioTrack);

当调用MediaSourcestart()方法后,它的内部就会开始从数据源获取数据并解析,等到缓冲区满后便停止。在AwesomePlayer里就可以调用MediaSource的read方法读取解码后的数据。

 对于mVideoSource来说,读取的数据:mVideoSource->read(&mVideoBuffer, &options)交给显示模块进行渲染,mVideoRenderer->render(mVideoBuffer);

 对mAudioSource来说,用mAudioPlayer对mAudioSource进行封装,然后由mAudioPlayer负责读取数据和播放控制。

3、 StageFright的Decode

经过“数据流的封装”得到的两个MediaSource,其实是两个OMXCodec。AwesomePlayer和mAudioPlayer都是从MediaSource中得到数据进行播放。AwesomePlayer得到的是最终需要渲染的原始视频数据,而mAudioPlayer读取的是最终需要播放的原始音频数据。也就是说,从OMXCodec中读到的数据已经是原始数据了。

OMXCodec是怎么把数据源经过parse、decode两步以后转化成原始数据的。从OMXCodec::Create这个构造方法开始,它的参数:

 IOMX &omx指的是一个OMXNodeInstance对象的实例。

 MetaData &meta这个参数由MediaSourcegetFormat获取得到。这个对象的主要成员就是一个KeyedVector<uint32_t, typed_data> mItems,里面存放了一些代表MediaSource格式信息的名值对。

 bool createEncoder指明这个OMXCodec是编码还是解码。

 MediaSource &source是一个MediaExtractor。

 char matchComponentName指定一种Codec用于生成这个OMXCodec。

先使用findMatchingCodecs寻找对应的Codec,找到以后为当前IOMX分配节点并注册事件监听器:omx->allocateNode(componentName, observer, &node)。最后,把IOMX封装进一个OMXCodec:

sp<OMXCodec> codec = new OMXCodec(

omx, node, quirks,

createEncoder, mime, componentName,

source);

这样就得到了OMXCodec。

AwesomePlayer中得到这个OMXCodec后,首先调用mVideoSource->start()进行初始化。 OMXCodec初始化主要是做两件事:

 向OpenMAX发送开始命令。mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle)

 调用allocateBuffers()分配两个缓冲区,存放在Vector<BufferInfo> mPortBuffers[2]中,分别用于输入和输出。

AwesomePlayer开始播放后,通过mVideoSource->read(&mVideoBuffer, &options)读取数据。mVideoSource->read(&mVideoBuffer, &options)具体是调用OMXCodecread来读取数据。而OMXCodecread主要分两步来实现数据的读取:

 通过调用drainInputBuffers()对mPortBuffers[kPortIndexInput]进行填充,这一步完成 parse。由OpenMAX从数据源把demux后的数据读取到输入缓冲区,作为OpenMAX的输入。

 通过fillOutputBuffers()对mPortBuffers[kPortIndexOutput]进行填充,这一步完成 decode。由OpenMAX对输入缓冲区中的数据进行解码,然后把解码后可以显示的视频数据输出到输出缓冲区。

AwesomePlayer通过mVideoRenderer->render(mVideoBuffer)对经过parse和decode 处理的数据进行渲染。一个mVideoRenderer其实就是一个包装了IOMXRenderer的AwesomeRemoteRenderer:

mVideoRenderer = new AwesomeRemoteRenderer(

mClientinterface()->createRenderer(

mISurface, component,

(OMX_COLOR_FORMATTYPE)format,

decodedWidth, decodedHeight,

mVideoWidth, mVideoHeight,

rotationDegrees));

4、 StageFright处理流程

Audioplayer 为AwesomePlayer的成员,audioplayer通过callback来驱动数据的获取,awesomeplayer则是通过 videoevent来驱动。二者有个共性,就是数据的获取都抽象成mSource->Read()来完成,且read内部把parser和dec 绑在一起。Stagefright AV同步部分,audio完全是callback驱动数据流,video部分在onVideoEvent里会获取audio的时间戳,是传统的AV时间戳做同步。

41》AwesomePlayer的Video主要有以下几个成员:

 mVideoSource(解码视频)

 mVideoTrack(从多媒体文件中读取视频数据)

 mVideoRenderer(对解码好的视频进行格式转换,android使用的格式为RGB565)

 mISurface(重绘图层)

 mQueue(event事件队列)

42》stagefright运行时的Audio部分抽象流程如下:

 设置mUri的路径

 启动mQueue,创建一个线程来运行 threadEntry(命名为TimedEventQueue,这个线程就是event调度器)

 打开mUri所指定的文件的头部,则会根据类型选择不同的分离器(如MPEG4Extractor)

 使用 MPEG4Extractor对MP4进行音视频轨道的分离,并返回MPEG4Source类型的视频轨道给mVideoTrack

 根据 mVideoTrack中的编码类型来选择解码器,avc的编码类型会选择AVCDecoder,并返回给mVideoSource,并设置mVideoSource中的mSource为mVideoTrack

 插入onVideoEvent到Queue中,开始解码播放

 通过mVideoSource对象来读取解析好的视频buffer

如果解析好的buffer还没到AV时间戳同步的时刻,则推迟到下一轮 *** 作

 mVideoRenderer为空,则进行初始化(如果不使用 OMX会将mVideoRenderer设置为AwesomeLocalRenderer)

 通过mVideoRenderer对象将解析好的视频buffer转换成RGB565格式,并发给display模块进行图像绘制

 将onVideoEvent重新插入event调度器来循环

43》数据由源到最终解码后的流程如下:

URI,FD

DataSource

MediaExtractor

|

mVideoTrack mAudioTrack//音视频数据流

mVideoSource mAudioSource//音视频解码器

| |

mVideoBuffer mAudioPlayer

说明:

 设置DataSource,数据源可以两种URI和FD。URI可以>

以上就是关于request timed out什么意思全部的内容,包括:request timed out什么意思、connect timed out问题排查、请教android中的TimedEventQueue问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10637486.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存