① android自带的浏览器是否支持h264编码的html5视频
特别是移动平台的浏览器对h264的支持尤其重要,近两年的ARM处理器基本都包含h264硬解码,若不启用硬解码,不但耗电,流畅性也得不到保证。
② 这两种h264编码有什么区别
H264(intel quick sync video)是用Intel CPU的内部GPU核显进行编码,俗称硬编码。
H264(CPU)就是直接用CPU进行编码,俗称软编码。
③ android使用MediaCodec进行解码,就是硬解码吗
Android api中有自带的硬解码方法MediaCodec,但是SDK并没有规定输出格式,参考H264的解码格式
④ 安卓开发怎么将和h264文件解码播放
如题所示,我想将摄像头采集的数据进行h.264硬编码,我想知道Android是如何对视频数据进行硬件编码的
目前已经知道的方案有:
1、用Android4.1 API MediaCodec来对视频数据进行编码
http://stackoverflow.com/q/17232477/2293921
此种方式我测试了,并未成功,目前一直卡在这里,如果你等帮助我,我将非常感激
2、通过MediaRecorder方式对数据进行编码
具体可参考 http://blog.csdn.net/zblue78/article/details/6083374
3、通过移植ffmpeg
这种方式没接触过,也不了解
可能还有一些其他的方式来对视频硬编码,如果你了解一下,感谢分享!
综上,我更倾向于1的方式去做
我来回答
Android , MediaCodec , 硬编码
post_newreply
//$(\'note_\').focus();
function succeedhandle_vfastpost(url, message, param) {
$(\'vmessage\').value = \'\';
succeedhandle_fastpost(url, message, param);
showCreditPrompt();
}
var vf_tips = \'#在这里快速回复#\';
$(\'vmessage\').value = vf_tips;
$(\'vmessage\').style.color = \'#CDCDCD\';
$(\'vmessage\').onclick = function() {
if($(\'vmessage\').value==vf_tips) {
$(\'vmessage\').value=\'\';
$(\'vmessage\').style.color=\"#000\";
}
}
$(\'vmessage\').onblur = function() {
if(!$(\'vmessage\').value) {
$(\'vmessage\').value=vf_tips;
$(\'vmessage\').style.color=\"#CDCDCD\";
}
}
$(\'vreplysubmit\').onclick = function() {
if($(\'vmessage\').value == vf_tips) {
return false;
}
}
⑤ android mediacodec编码h264 怎样调节gop
简单地说。软解码是用软件方式进行解码,需要占用CPU资源,速度相当较慢。硬解码直接用硬件方式解决,不占用CPU资源,速度相对较快。
⑥ 在android 平台实现硬解的大侠们,你们是怎么实现硬解码的
1、视频尺寸
一般都能支持176X144/352X288这种尺寸,但是大一些的,640X480就有很多机子不行了,至于为什么,我也不知道。当然,这个尺寸必须和摄像头预览的尺寸一致,预览的尺寸可以枚举一下。
2、颜色空间
根据ANdroid SDK文档,确保所有硬件平台都支持的颜色,在摄像头预览输出是YUV12,在编码器输入是COLOR_FormatYUV420Planar,也就是前面代码中设置的那样。 不过,文档终究是文档,否则安卓就不是安卓。
在有的平台上,这两个颜色格式是一样的,摄像头的输出可以直接作为编码器的输入。也有的平台,两个是不一样的,前者就是YUV12,后者等于I420,需要把前者的UV分量颠倒一下。
byte[] i420bytes = null;
private byte[] swapYV12toI420(byte[] yv12bytes, int width, int height) {
if (i420bytes == null)
i420bytes = new byte[yv12bytes.length];
for (int i = 0; i < width*height; i++)
i420bytes[i] = yv12bytes[i];
for (int i = width*height; i < width*height + (width/2*height/2); i++)
i420bytes[i] = yv12bytes[i + (width/2*height/2)];
for (int i = width*height + (width/2*height/2); i < width*height + 2*(width/2*height/2); i++)
i420bytes[i] = yv12bytes[i - (width/2*height/2)];
return i420bytes;
}
3、输入输出缓冲区的格式
SDK里并没有规定格式,但是,这种情况H264的格式基本上就是附录B。但是,也有比较有特色的,它就是不带那个StartCode,就是那个0x000001,搞得把他编码器编出来的东西送给他的解码器。
ByteBuffer outputBuffer = outputBuffers[outputBufferIndex];
byte[] outData = new byte[bufferInfo.size + 3];
outputBuffer.get(outData, 3, bufferInfo.size);
if (frameListener != null) {
if ((outData[3]==0 && outData[4]==0 && outData[5]==1)
|| (outData[3]==0 && outData[4]==0 && outData[5]==0 && outData[6]==1))
{
frameListener.onFrame(outData, 3, outData.length-3, bufferInfo.flags);
}
else
{
outData[0] = 0;
outData[1] = 0;
outData[2] = 1;
frameListener.onFrame(outData, 0, outData.length, bufferInfo.flags);
}
}
⑦ android开发怎么把视频编码成H265
首先,你的文件有没有错误。 比如,拿出来,放在pc上看看是否能播。不能播,可能你保存的文件有误。如果,能播。那么可能与文件的权限有问题。如果放在file的目录下,可能需要更改文件目录及创建的文件的权限。其方法网上有,调用java的方法,使用linux命令行。
⑧ android h264硬编码,得到流写入文件后不能播放是怎么回事
自己写解码264文件,如果用view显示,就需要转成bitmap显示,或者使用opengl可以显示yuv数据
如果已经保存成MP4格式的文件,就不需要解码了,通过mediaplayer就能播
⑨ android mediarecorder硬编码获取音视频流,怎样设置时间戳达到音视频同步
参考spydroid开源项目,这个开源项目有音频(aac),视频(H264)流的读取,具体操作都有,就是音视频时间戳不知怎么弄,音视频同步搞不定,您有想法记得分享哦!
⑩ 如何把摄像头采集的图像进行h264硬编码
这个时间戳和h.264的时间戳可以完全采用一样的。楼主是希望,时间戳用的是当前的采样的时间吗??这样的话会造成显示的不正常。
另外延时楼主也要估算网络的情况问题,你的RTP服务器发送端是否正常。延迟可能是时间戳定时器的问题,但是也有可能是网传的问题。希望楼主早日解决问题。