文件名称:H264Android_code
介绍说明--下载内容均来自于网络,请自行研究使用
H264解码器源码,移植ffmpeg中的H264解码部分到Android,深度删减优化,在模拟器(320x480)中验证通过。
程序的采用jni架构。界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求。
在这个版本中,从H264码流中分割出Nal是在java层做的,这样在java层直接调用解码时就知道是否有显示视频,缺点的就是耦合度/封装性差一点。
如果采用在底层做Nal分割的方法,可以封装得好看一些,但是每次送的数据有限制,如果送的数据太多,底层可能会一次解码出好几帧视频,但是通知到界面层只能显示一帧,造成丢帧的现象。 如果每次送的数据较少,就会有很多次底层调用没有进行实质解码,很小气的做法,比如有一压缩数据帧需要600字节,如果一次送100个字节给解码器,那么要送6次才会进行实质解码,因为每个数据帧有大有小,所以只能取极小值才不会导致丢帧。
不过所有的编码解码都是各种因素平衡折中的结果,具体用什么方法具体分析。
注意解码库写死了视频大小240x320,其他视频大小要简单修改一下底层的代码。-H264 decoder source code, porting ffmpeg s H264 decoding to Android, the depth of cut optimization, in the simulator (320x480) in the validation passed.
程序的采用jni架构。界面部分,文件读取,视频显示都是用java做的,底层的视频解码用C来做满足速度的要求。
在这个版本中,从H264码流中分割出Nal是在java层做的,这样在java层直接调用解码时就知道是否有显示视频,缺点的就是耦合度/封装性差一点。
如果采用在底层做Nal分割的方法,可以封装得好看一些,但是每次送的数据有限制,如果送的数据太多,底层可能会一次解码出好几帧视频,但是通知到界面层只能显示一帧,造成丢帧的现象。 如果每次送的数据较少,就会有很多次底层调用没有进行实质解码,很小气的做法,比如有一压缩数据帧需要600字节,如果一次送100个字节给解码器,那么要送6次才会进行实质解码,因为每个数据帧有大有小,所以只能取极小值才不会导致丢帧。
不过所有的编码解码都是各种因素平衡折中的结果,具体用什么方法具体分析。
注意解码库写死了视频大小240x320,其他视频大小要简单修改一下底层的代码。-H264 decoder source code, porting ffmpeg s H264 decoding to Android, the depth of cut optimization, in the simulator (320x480) in the validation passed.
相关搜索: h264
Android
ffmpeg
h264
h264
java
android
h264
ffmpeg
android
co
FFMPEG
H264
h264
decoder
h264
解码
android
android
porting
Android
ffmpeg
h264
h264
java
android
h264
ffmpeg
android
co
FFMPEG
H264
h264
decoder
h264
解码
android
android
porting
(系统自动生成,下载前可以参看下载内容)
下载文件列表
H264Android\.project
...........\AndroidManifest.xml
...........\default.properties
...........\jni\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
...........\...\mpegvideo.c
...........\...\mpegvideo.h
...........\...\Android.mk
...........\...\main.c.old
...........\...\main.dsp.old
...........\...\H264Android.c
...........\Application.mk
...........\libs\armeabi\libH264Android.so
...........\bin\h264\com\H264Android.class
...........\...\....\...\R$attr.class
...........\...\....\...\R$drawable.class
...........\...\....\...\R$layout.class
...........\...\....\...\R.class
...........\...\....\...\R$string.class
...........\...\....\...\VView.class
...........\...\classes.dex
...........\...\resources.ap_
...........\...\H264Android.apk
...........\gen\h264\com\R.java
...........\res\drawable-hdpi\icon.png
...........\...\.........mdpi\icon.png
...........\...\.........ldpi\icon.png
...........\...\layout\main.xml
...........\...\values\strings.xml
...........\src\h264\com\H264Android.java
...........\.classpath
butterfly.264\butterfly.264
H264Android\bin\h264\com
...........\gen\h264\com
...........\src\h264\com
...........\libs\armeabi
...........\bin\h264
...........\gen\h264
...........\res\drawable-hdpi
...........\...\drawable-mdpi
...........\...\drawable-ldpi
...........\...\layout
...........\...\values
...........\src\h264
...........\jni
...........\libs
...........\bin
...........\gen
...........\res
...........\src
...........\assets
H264Android
butterfly.264
...........\AndroidManifest.xml
...........\default.properties
...........\jni\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
...........\...\mpegvideo.c
...........\...\mpegvideo.h
...........\...\Android.mk
...........\...\main.c.old
...........\...\main.dsp.old
...........\...\H264Android.c
...........\Application.mk
...........\libs\armeabi\libH264Android.so
...........\bin\h264\com\H264Android.class
...........\...\....\...\R$attr.class
...........\...\....\...\R$drawable.class
...........\...\....\...\R$layout.class
...........\...\....\...\R.class
...........\...\....\...\R$string.class
...........\...\....\...\VView.class
...........\...\classes.dex
...........\...\resources.ap_
...........\...\H264Android.apk
...........\gen\h264\com\R.java
...........\res\drawable-hdpi\icon.png
...........\...\.........mdpi\icon.png
...........\...\.........ldpi\icon.png
...........\...\layout\main.xml
...........\...\values\strings.xml
...........\src\h264\com\H264Android.java
...........\.classpath
butterfly.264\butterfly.264
H264Android\bin\h264\com
...........\gen\h264\com
...........\src\h264\com
...........\libs\armeabi
...........\bin\h264
...........\gen\h264
...........\res\drawable-hdpi
...........\...\drawable-mdpi
...........\...\drawable-ldpi
...........\...\layout
...........\...\values
...........\src\h264
...........\jni
...........\libs
...........\bin
...........\gen
...........\res
...........\src
...........\assets
H264Android
butterfly.264