当前位置:首页 » 安卓系统 » androidh264解码

androidh264解码

发布时间: 2022-09-20 09:55:43

① android mediacodec编码h264 怎样调节gop

简单地说。软解码是用软件方式进行解码,需要占用CPU资源,速度相当较慢。硬解码直接用硬件方式解决,不占用CPU资源,速度相对较快。

② 哪位高手做过ffmpeg在android下的运用.小弟我只想调用解码H264的帧

用NDK把ffmpeg 编译成动态库SO 文件
再android工程利用JNI生成接口调用这个静态库。
试过videolan的东西么?
olvaffe/ffmpeg/ffmpeg-android/commits/android

③ android h264硬编码,得到流写入文件后不能播放是怎么回事

自己写解码264文件,如果用view显示,就需要转成bitmap显示,或者使用opengl可以显示yuv数据

如果已经保存成MP4格式的文件,就不需要解码了,通过mediaplayer就能播

④ Android自带的浏览器是否支持h264编码的html5视频

特别是移动平台的浏览器对h264的支持尤其重要,近两年的ARM处理器基本都包含h264硬解码,若不启用硬解码,不但耗电,流畅性也得不到保证。

⑤ Android 音视频01 --- H264的基本原理01

H264压缩技术主要采用了以下几种方法对视频数据进行压缩。包括:

解决的是空域数据冗余问题。

解决的是时域数据冗徐问题

将空间上的相关性变为频域上无关的数据然后进行量化。

经过压缩后的帧分为:I帧,P帧和B帧:

关键帧,采用帧内压缩技术。

向前参考帧,在压缩时,只参考前面已经处理的帧。采用帧音压缩技术。

双向参考帧,在压缩时,它即参考前而的帧,又参考它后面的帧。采用帧间压缩技术。
除了I/P/B帧外,还有图像序列GOP。

H264的基本原理其实非常简单,下我们就简单的描述一下H264压缩数据的过程。通过摄像头采集到的视频帧(按每秒 30 帧算),被送到 H264 编码器的缓冲区中。编码器先要为每一幅图片划分宏块。

划分好宏块后,计算宏块的象素值。以此类推,计算一幅图像中每个宏块的像素值。

对于视频数据主要有两类数据冗余,一类是时间上的数据冗余,另一类是空间上的数据冗余。其中时间上的数据冗余是最大的。为什么说时间上的冗余是最大的呢?假设摄像头每秒抓取30帧,这30帧的数据大部分情况下都是相关联的。也有可能不止30帧的的数据,可能几十帧,上百帧的数据都是关联特别密切的。
H264编码器会按顺序,每次取出两幅相邻的帧进行宏块比较,计算两帧的相似度。如下图:

在H264编码器中将帧分组后,就要计算帧组内物体的运动矢量了。
H264编码器首先按顺序从缓冲区头部取出两帧视频数据,然后进行宏块扫描。当发现其中一幅图片中有物体时,就在另一幅图的邻近位置(搜索窗口中)进行搜索。如果此时在另一幅图中找到该物体,那么就可以计算出物体的运动矢量了。
运动矢量计算出来后,将相同部分(也就是绿色部分)减去,就得到了补偿数据。我们最终只需要将补偿数据进行压缩保存,以后在解码时就可以恢复原图了。压缩补偿后的数据只需要记录很少的一点数据。
我们把运动矢量与补偿称为 帧间压缩技术 ,它解决的是视频帧在时间上的数据冗余。除了帧间压缩,帧内也要进行数据压缩,帧内数据压缩解决的是空间上的数据冗余。

人眼对图象都有一个识别度,对低频的亮度很敏感,对高频的亮度不太敏感。所以基于一些研究,可以将一幅图像中人眼不敏感的数据去除掉。这样就提出了帧内预测技术。
一幅图像被划分好宏块后,对每个宏块可以进行 9 种模式的预测。找出与原图最接近的一种预测模式。然后,将原始图像与帧内预测后的图像相减得残差值。再将我们之前得到的预测模式信息一起保存起来,这样我们就可以在解码时恢复原图了,经过帧内与帧间的压缩后,虽然数据有大幅减少,但还有优化的空间。

可以将残差数据做整数离散余弦变换,去掉数据的相关性,进一步压缩数据。

上面的帧内压缩是属于有损压缩技术。也就是说图像被压缩后,无法完全复原。而CABAC属于无损压缩技术。
无损压缩技术大家最熟悉的可能就是哈夫曼编码了,给高频的词一个短码,给低频词一个长码从而达到数据压缩的目的。MPEG-2中使用的VLC就是这种算法,我们以 A-Z 作为例子,A属于高频数据,Z属于低频数据。看看它是如何做的。
CABAC也是给高频数据短码,给低频数据长码。同时还会根据上下文相关性进行压缩,这种方式又比VLC高效很多。

制定了相互传输的格式,将宏快 有组织,有结构,有顺序的形成一系列的码流。这种码流既可 通过 InputStream 网络流的数据进行传输,也可以封装成一个文件进行保存,主要作用是为了传输。

组成H264码流的结构中 包含以下几部分 ,从大到小排序依次是:
H264视频序列,图像,片组,片,NALU,宏块 ,像素。

NAL层:(Network Abstraction Layer,视频数据网络抽象层) : 它的作用是H264只要在网络上传输,在传输的过程每个包以太网是1500字节,而H264的帧往往会大于1500字节,所以要进行拆包,将一个帧拆成多个包进行传输,所有的拆包或者组包都是通过NAL层去处理的。
VCL层:(Video Coding Layer,视频数据编码层) : 对视频原始数据进行压缩

起始码0x 00 00 00 01 或者 0x 00 00 01 作为 分隔符
两个 0x 00 00 00 01之间的字节数据 是表示一个NAL Unit。

I 帧的特点:

1.分组:把几帧图像分为一组(GOP,也就是一个序列),为防止运动变化,帧数不宜取多。
2.定义帧:将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;
3.预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;
4.数据传输:最后将I帧数据与预测的差值信息进行存储和传输。

1.更高的编码效率:同H.263等标准的特率效率相比,能够平均节省大于50%的码率。
2.高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。
3.提高网络适应能力:H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。
4.采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。
5.H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。
6.H.264可以应用在不同场合:H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。
7.错误恢复功能:H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据。
8.较高的复杂度:264性能的改进是以增加复杂性为代价而获得的。据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。
H.264的目标应用涵盖了目前大部分的视频服务,如有线电视远程监控、交互媒体、数字电视、视频会议、视频点播、流媒体服务等。H.264为解决不同应用中的网络传输的差异。定义了两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。

⑥ 手机怎么播放h264格式的视频文件

  1. 做教程准备的工具和文件。

  2. 用windows自带播放器打开h264监控提示无法打开。

  3. 首先安装解码,点击h264解码进行自解压安装。

  4. h264解码安装完成后,点开转换工具目录,先点击注册 。

  5. 注册导入后,点开转换,出现主界面。

  6. 点击avi 会弹出打开源文件对话框,下边文件类型选 所有文件,即*.*看到h264监控文件。

  7. 弹出转换确认框,点击确定开始转换。

  8. h264监控录像转换工具提示转换完成 。

  9. 现在打开转换后的文件,发现可以用自带播放器看了。

⑦ 安卓开发怎么将和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为什么播放不出RTSP H264视频的原因都有那些 同样的视频流在XP系统的RealPlayer中是可以播放的

是做开发吗,
一种情况是硬件采用的硬件解码,硬件不支持
另外一种情况是软件解码,软件没写好,不过H264软解估计够呛
目前一般都应该支持才对,最大可能是软件没有写好

⑨ android2.3.3不支持high profile h264视频解码怎么办

high profile应该是高清的,一般要安装软件且硬件支持才行

⑩ android,怎么加快h264解码速度

可以用videoView来用系统的播放器做一个。具体可以看下文档。还蛮简单的。 查看原帖>>

热点内容
华为手机视频在哪个文件夹 发布:2025-01-12 02:56:54 浏览:715
电脑qq音乐缓存音乐 发布:2025-01-12 02:55:27 浏览:344
手机没改密码为什么密码变了 发布:2025-01-12 02:55:24 浏览:811
继承者下载22下载ftp 发布:2025-01-12 02:44:06 浏览:354
数据库换格式 发布:2025-01-12 02:44:02 浏览:460
一起编程地球 发布:2025-01-12 02:42:43 浏览:875
无法设置kms服务器地址怎么办 发布:2025-01-12 02:42:36 浏览:526
android任务 发布:2025-01-12 02:36:07 浏览:633
家用办公学习电脑要什么配置 发布:2025-01-12 02:27:00 浏览:913
十一代思域劲动有哪些配置 发布:2025-01-12 02:26:56 浏览:417