多媒体
文章平均质量分 69
LiuYinChina
多年 VC++ 经验,擅长模板、调试
展开
-
关于SIP的源码地址
Below you will find descriptions and links to SIP and RTP stacks, applications, test utilities, SIP proxies, SIP PBXs and STUN server and clients. Most of them are open source :-), but not all of them转载 2014-08-24 22:09:27 · 2190 阅读 · 0 评论 -
libstagefright 音视频同步方案
1:音视频数据都有一个list,用于存放解码后的数据; ListmFilledBuffers; 2:解码后的音视频数据不断的往list中存放,不做音视频同步方面的时间上控制 mFilledBuffers.push_back(i);3:音视频同步主要表现在从list中取数据进行视频的显示和音频的输出;4:其中audio数据在线程函数t转载 2014-12-18 10:34:52 · 823 阅读 · 0 评论 -
Android视频播放数据读取的流程
这里分析Android4.0.1本地视频数据读取的流程,其他过程类似当播放条件准备妥当之后,就要循环进行读取视频的原始数据放到MediaBuffer,将MediaBuffer中的数据输送到解码器中解码,解码后的数据放到MediaBuffer中,在将这MediaBuffer中的数据进行render显示。本文主要侧重读取原始数据的流程,主要是代码跟踪,不夹杂个人分析,有些mpe转载 2014-12-18 11:37:11 · 2417 阅读 · 0 评论 -
OMX只是一个框架,所以解码器是硬解还是软解都没关系,而且大多说厂家的硬解码都是使用OMX框架
OMX只是一个框架,所以与解码器是硬解还是软解都没关系,而且大多说厂家的硬解码都是使用OMX框架数据格式及OMX输入缓冲细节 enum State{ DEAD, LOADED, LOADED_TO_IDLE, IDLE_TO_EXECUTING, EXECUTING, EXE转载 2014-12-18 11:48:52 · 1674 阅读 · 0 评论 -
OMXCodec::read() 已经两次遇到等待不到锁而卡死的情况
status_t OMXCodec::read( MediaBuffer **buffer, const ReadOptions*options) { status_t err = OK; *buffer = NULL; Mutex::AutolockautoLock(mLock); if (mState != EXECUTI转载 2014-12-18 11:49:29 · 863 阅读 · 0 评论 -
视频文件NAL单元不完整导致不能播放
遇到两类这样的情况:1:一些从网上down下来的在线视频,播放过程中直接提示无法播放;2:还有一个是一个500M的视频,能够正常播放,但是播放过程中,如果拖动进度条,做seek操作,会提示无法播放这两种情况log提示一致:Video is malformed,就是在如下的代码中出现错误: while(srcOffset转载 2014-12-18 11:14:42 · 1431 阅读 · 0 评论 -
dlna测试遇到的第二个问题
问题背景:一个将近300M的adts音频文件,通过服务器共享给手机终端,手机终端使用dlna应用进行播放,发现缓冲了半个小时还不能播放。另外不能播放对应的服务器采用的是Content-Length这种编码格式,而采样chunked这种编码方式的服务器却能够正常播放。打log发现,在MediaExtractor中构造AACExtractor时一直没有返回,所以直接到AACEx转载 2014-12-18 11:25:11 · 1625 阅读 · 0 评论 -
Android rtsp 流媒体音视频帧的处理流程
先把从收到rtp包到封装成完整的一帧涉及的相关函数从上到下罗列一遍,后续在忘记的情况下理清的时候可以作为线索,不用从头去分析代码(MyHandler.h)onMessageReceived(case setu) sp notify = newAMessage('accu', id());void ARTPConnection::addStreamvoid ARTPConnectio转载 2014-12-18 11:22:34 · 3663 阅读 · 0 评论 -
CodecInfo为一个结构体,包含两个成员,后面定义了这个结构体类型的一个数组
void OMXCodec::findMatchingCodecs( const char *mime, bool createEncoder, const char*matchComponentName, uint32_t flags, Vector*matchingCodecs) { matchingCodecs->cle转载 2014-12-18 11:47:52 · 1526 阅读 · 0 评论 -
在一个数组中避免重复查找的算法---omxcodec
void OMXCodec::findMatchingCodecs( const char *mime, bool createEncoder, const char*matchComponentName, uint32_t flags, Vector*matchingCodecs) { matchingCodecs->cle转载 2014-12-18 11:46:54 · 658 阅读 · 0 评论 -
netperf用法
http://blog.csdn.net/iamljj/article/details/6254461全局参数:-H:指定运行netserver的服务器的IP地址-l: 指定测试的时间长度(秒)-t: 指定进行的测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR网络性能测试:1. 批量性能测试 局部参数:转载 2014-12-31 21:58:35 · 1973 阅读 · 0 评论 -
开源项目 for android
git clone git://git.videolan.org/vlc/vlc-android.gitgit clone git@gitorious.org:gstreamer/android.gitgit clone git@gitorious.org:ffmpeg/ffmpeg-android.git原创 2015-05-11 23:41:32 · 635 阅读 · 0 评论 -
AudioSink & AudioTrack
AudioTrack is the hardware audio sink. AudioSink is used forin-memory decode and potentially other applications where output doesn'tgo straight to hardware.AudioTrack是硬件音频接收器,AudioSink用于内存解码或者可能转载 2014-12-18 11:50:46 · 4363 阅读 · 0 评论 -
分享一个分析的 rtsp 流媒体的问题
前面几篇博文都是关于http协议的流媒体,这篇博客分享一篇分析的rtsp协议的流媒体的问题。问题北京:播放一个内网服务器上面的音频文件,拖动进度条,毕现的会有so crash的现象查看log,crash的地方是:CHECK_LE(offset + payloadLength,buffer->size());这个宏没有满足导致。在分析这个问题之前,先大致了解一下r转载 2014-12-18 11:24:08 · 1195 阅读 · 0 评论 -
带鉴权信息的 SIP 呼叫
带鉴权信息的SIP呼叫 INVITE sip:1000@192.168.50.34SIP/2.0Via: SIP/2.0/UDP192.168.50.32:2445;branch=z9hG4bK-d8754z-244fd550d2729557-1---d8754z-;rportMax-Forwards: 70Contact:To: From:"1002";tag=f26转载 2014-08-24 22:21:12 · 5196 阅读 · 0 评论 -
RTSP 服务器
rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp原创 2014-09-16 15:52:46 · 741 阅读 · 0 评论 -
adb 协议
adb通信分为两部分:adb client和adb server,以及adb server和adb daemon。 client和server之间的通信协议adb server对本地的tcp 5037号端口进行监听,等待adb client的命令。client的每个命令都会包含两个部分,前一部分固定4个字节,以十六进制方式指定命令部分的长度。后一部分是真正的内容。发送命令的接口为writ转载 2014-09-17 10:13:31 · 624 阅读 · 0 评论 -
iPhone, iPad, iPod – HTTP Live Streaming (HLS) with free tools on Windows
Apple HTTP Live Streaming (HLS) has been a nightmare to get working. Below, I’ll go through some of my trials and tribulations in getting HLS encoding for non-live streams working in Windows. In sum转载 2014-10-10 14:44:01 · 680 阅读 · 0 评论 -
IBinder的三个主要部分(暂不分析底层如何实现)
1:定义服务类,如AudioFlinger.cpp MediaPlayerService.cppCameraService.cppAudioPolicyService.cpp 实现的过程参考前面的某一篇博客,差不多就是定义一个IXXXX,然后定义两个BnXXX和BpXXX等等;2:在开机流程中,将这些服务注册到servicemanager中去,这个servic转载 2014-12-18 11:40:03 · 691 阅读 · 0 评论 -
HTTP协议的chunked编码
一般情况HTTP的Header包含Content-Length域来指明报文体的长度。如:有时候服务生成HTTP回应是无法确定消息大小的,比如大文件的下载,或者后台需要复杂的逻辑才能全部处理页面的请求,这时用需要实时生成消息长度,服务器一般使用chunked编码。 在进行Chunked编码传输时,在回复消息的Headers有transfer-coding域值为c转载 2014-12-18 11:25:54 · 580 阅读 · 0 评论 -
HTTP协议头详解
HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP 协议的详细内容请参 考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户 信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错转载 2014-12-06 22:52:14 · 735 阅读 · 0 评论 -
不适合作为流媒体的视频文件
测试各个服务器上的视频文件的时候,经常发现有些视频莫名其妙的播放不流畅,甚至是非常卡顿以至于播放不了,但是在本地播放这些文件非常流畅,将这些文件下载下来播放,并且将MPEG4Extractor中解析的log打上,发现一个规律,这些视频文件的树状结构的box中,moov这个字段都在文件的最末尾,也就是在真正视频数据的后面。 由于视频播放前首先需要使用extractor解析这个文件,其实解析就转载 2014-12-18 11:16:25 · 2429 阅读 · 0 评论 -
OMXCodec数据处理过程
buffer的处理主要由以下4个命令来进行驱动OMXCodec使用OMX_EmptyThisBuffer传递未解码的buffer给component,component收到该命令后会读取input port buffer中的数据,将其组装成帧进行解码,读取buffer中的数据完成后会调用EmptyBufferDone通知OMXCodeccompome转载 2014-12-18 11:57:15 · 1625 阅读 · 0 评论 -
处理的一个 http live streaming 的问题
测试一项http livestreaming的流媒体,提示无法播放,底层解码器直接报错,打开解码器相关的log开关,问题一目了然,播放的视频时720P的,而我们的手机最大支持分辨率为840*480左右,所以无法播放。由于这项测试必须通过,所以我们先后采取了一下两种方法去规避1:使用谷歌的软解去解码; 调用谷歌软解去解码视频帧的时候都是没有图像的,无法正常播放;2:使用co转载 2014-12-18 11:12:04 · 1020 阅读 · 0 评论 -
Android异步消息框架
自从rtsp从stagefright播放器移植到NuPlayer之后,你会发现相关的类中存在许多类似下面的代码:================================11111111111111==========================NuPlayerDriver::NuPlayerDriver() :mLooper(new ALooper) {转载 2014-12-18 11:21:39 · 869 阅读 · 0 评论 -
学习网址
各类学习网址原创 2015-02-27 23:42:08 · 820 阅读 · 0 评论