文件名称:H264Android
介绍说明--下载内容均来自于网络,请自行研究使用
H264解码器源码,移植ffmpeg中的H264解码部分到Android,深度删减优化,在模拟器(320x480)中验证通过。
程序的采用jni架构。界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求。
在这个版本中,从H264码流中分割出Nal是在java层做的,这样在java层直接调用解码时就知道是否有显示视频,缺点的就是耦合度/封装性差一点。
如果采用在底层做Nal分割的方法,可以封装得好看一些,但是每次送的数据有限制,如果送的数据太多,底层可能会一次解码出好几帧视频,但是通知到界面层只能显示一帧,造成丢帧的现象。 如果每次送的数据较少,就会有很多次底层调用没有进行实质解码,很小气的做法,比如有一压缩数据帧需要600字节,如果一次送100个字节给解码器,那么要送6次才会进行实质解码,因为每个数据帧有大有小,所以只能取极小值才不会导致丢帧。
不过所有的编码解码都是各种因素平衡折中的结果,具体用什么方法具体分析。-H264 decoder source code, porting the H264 decoding ffmpeg to Android, depth of cut optimization, in the simulator (320x480) is verified.
Program using jni architecture. Part of the interface, file read, the video display is made with java, the underlying video decoding using C do meet the speed requirements.
In this version, from the H264 stream is segmented Nal java layer do so directly call the java layer decoding know whether displaying video, the disadvantage is that the degree of coupling/encapsulation almost.
If you do use the underlying Nal segmentation method, you can get some good-looking package, but every time there is limited data to send, if sending too much data, the underlying may decode several time-fr a me video, but can only display notifications to the UI layer one, resulting in dropped fr a mes phenomenon. If you send less data each time, there will be many times the underlying call no substantial decoding, a small gas practice, such a fr a me requ
程序的采用jni架构。界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求。
在这个版本中,从H264码流中分割出Nal是在java层做的,这样在java层直接调用解码时就知道是否有显示视频,缺点的就是耦合度/封装性差一点。
如果采用在底层做Nal分割的方法,可以封装得好看一些,但是每次送的数据有限制,如果送的数据太多,底层可能会一次解码出好几帧视频,但是通知到界面层只能显示一帧,造成丢帧的现象。 如果每次送的数据较少,就会有很多次底层调用没有进行实质解码,很小气的做法,比如有一压缩数据帧需要600字节,如果一次送100个字节给解码器,那么要送6次才会进行实质解码,因为每个数据帧有大有小,所以只能取极小值才不会导致丢帧。
不过所有的编码解码都是各种因素平衡折中的结果,具体用什么方法具体分析。-H264 decoder source code, porting the H264 decoding ffmpeg to Android, depth of cut optimization, in the simulator (320x480) is verified.
Program using jni architecture. Part of the interface, file read, the video display is made with java, the underlying video decoding using C do meet the speed requirements.
In this version, from the H264 stream is segmented Nal java layer do so directly call the java layer decoding know whether displaying video, the disadvantage is that the degree of coupling/encapsulation almost.
If you do use the underlying Nal segmentation method, you can get some good-looking package, but every time there is limited data to send, if sending too much data, the underlying may decode several time-fr a me video, but can only display notifications to the UI layer one, resulting in dropped fr a mes phenomenon. If you send less data each time, there will be many times the underlying call no substantial decoding, a small gas practice, such a fr a me requ
(系统自动生成,下载前可以参看下载内容)
下载文件列表
H264Android
...........\.classpath
...........\.project
...........\AndroidManifest.xml
...........\Application.mk
...........\FAQ.txt
...........\assets
...........\bin
...........\...\H264Android.apk
...........\...\classes.dex
...........\...\h264
...........\...\....\com
...........\...\....\...\H264Android.class
...........\...\....\...\R$attr.class
...........\...\....\...\R$drawable.class
...........\...\....\...\R$layout.class
...........\...\....\...\R$string.class
...........\...\....\...\R.class
...........\...\....\...\VView.class
...........\...\resources.ap_
...........\default.properties
...........\gen
...........\...\h264
...........\...\....\com
...........\...\....\...\R.java
...........\jni
...........\...\Android.mk
...........\...\H264Android.c
...........\...\avcodec.h
...........\...\cabac.c
...........\...\cabac.h
...........\...\common.c
...........\...\common.h
...........\...\dsputil.c
...........\...\dsputil.h
...........\...\golomb.c
...........\...\golomb.h
...........\...\h264.c
...........\...\h264.h
...........\...\h264data.h
...........\...\h264utils.c
...........\...\main.c.old
...........\...\main.dsp.old
...........\...\mpegvideo.c
...........\...\mpegvideo.h
...........\libs
...........\....\armeabi
...........\....\.......\libH264Android.so
...........\res
...........\...\drawable-hdpi
...........\...\.............\icon.png
...........\...\drawable-ldpi
...........\...\.............\icon.png
...........\...\drawable-mdpi
...........\...\.............\icon.png
...........\...\layout
...........\...\......\main.xml
...........\...\values
...........\...\......\strings.xml
...........\src
...........\...\h264
...........\...\....\com
...........\...\....\...\H264Android.java