Articles of 解码

Android MediaCodec解码h264原始帧

我正在使用Android MediaCodec API来解码h264帧。 我可以解码和渲染视图上的帧。 我的问题是解码器错过了许多帧,尤其是第一个帧。 DecodeMediaCodec.dequeueOutputBuffer()返回-1。 a约150 h264帧,刚刚解码43帧。 我找不到问题所在。 这是我的代码。 /** * init decoder */ private void initDecodeMediaCodec() { mDecodeMediaCodec = MediaCodec.createDecoderByType(MIME_TYPE); MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, VIDEO_WIDTH_640, VIDEO_HEIGHT_480); mDecodeMediaCodec.configure(format, new Surface(mRemoteVideoView.getSurfaceTexture()), null, 0); mDecodeMediaCodec.start(); mDecodeInputBuffers = mDecodeMediaCodec.getInputBuffers(); System.out.println("decode—–" + mDecodeMediaCodec.getCodecInfo().getName()); } 解码器初始化后,我将启动解码器线程。 /** * * @param frameData */ private void decode() { new Thread(new Runnable() […]

ANDroid – 使用apktool编辑后运行APK文件得到错误:

我有一个APK文件名:Splash.apk。 首先我使用apktool解码 apk d Splash.apk 然后我编辑Manifest,XML。 最后我把项目导出到APK文件名:EditedSpash.apk。 apk b Splash 当我在仿真器上运行EditedSpash.apk。 我有错误。 你为我解释吗? adb install EditedSplash.apk Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

使用OpenMAX(IL?)进行Android上的audio/video解码

运行Android的许多新硬件平台,特别是NVIDIA的Tegra 2,都支持OpenMAX加速媒体。 如果没有这种支持,在当今的设备上解码720pvideo是不可能的,但是Android上支持的分路器的数量是相当渺茫的。 我已经能够find的唯一的公共API已经通过Android SDK中的MediaPlayer类。 但是,Android源代码树中有多处OpenMAX相关小技巧。 在我的设备(Samsung Galaxy Tab 10.1)上,我可以通过/ system / lib中的许多OpenMAX库访问硬件解码器,如果能够与我的video应用程序进行交互,这将非常棒。 任何人都可以向我提供有关实现由OpenMAX支持的解码器的信息吗? 我find了Khronos的文档,但没有用例子代码或教程的方式。 我已经demuxing,甚至软件解码照顾(通过libavcodec / libavformat),我只想把挂钩启用硬件编码。 我也在这里假设有必要直接链接到设备上可用的,这使得它在可移植性方面相当乏善可陈,但它的工作原理。 另外,我对任何有关访问Tegra 2设备上的video解码的私有API知道的东西感兴趣。 特别是如果有像NVIDIA为桌面Linux发行版所实现的vdpau接口,因为有足够的可用的 – 但我无法find指示支持的共享库。

Android媒体编解码器video解码

这是我的第一个问题,所以请让我知道,如果我错过了任何东西! 使用Android API 16的新媒体编解码器实现尝试和解码video,以便我可以发送帧作为纹理应用(纹理部分已经完成)。 所以我已经拿出了一些关于堆栈的帮助,但在runOutputBuffer()我的outputBufIndex返回-1 (或在一个无限循环,因为我已经提供-1作为超时)任何人都可以帮助这个,和/或者提供关于从哪里去的build议? 感谢您的帮助,这里是我的代码: public MediaDecoder( BPRenderView bpview ) { surface = bpview; extractor = new MediaExtractor( ); extractor.setDataSource( filePath ); format = extractor.getTrackFormat( 0 ); mime = format.getString( MediaFormat.KEY_MIME ); createDecoder( ); runInputBuffer( ); } public void createDecoder( ) { codec = MediaCodec.createDecoderByType( "video/avc" ); // format =extractor.getTrackFormat( 0 ); Log.d( […]

Android字节在Camera.onPreviewFrame中的图像

当试图转换Camera.onPreviewFrame的byte[] Bitamp使用BitmapFactory.decodeByteArray给我一个错误SkImageDecoder::Factory returned null 以下是我的代码: public void onPreviewFrame(byte[] data, Camera camera) { Bitmap bmp=BitmapFactory.decodeByteArray(data, 0, data.length); }

解码video使用FFMpeg为Android

我试图解码使用FFMpeg库从互联网上的示例例子的video,我想出了新版本的ffmpeg,这里是我从我的类文件调用的代码, private static native int decodeVideo(String filename); decodeVideo(getString(R.string._sdcard_abc_3gp)); 现在在位于JNI目录的.c文件中,我写了这个代码, jint Java_ru_dzakhov_ffmpeg_test_MainActivity_decodeVideo(JNIEnv* env, jobject javaThis,jstring filename) { AVFormatContext *pFormatCtx; int i, videoStream; AVCodecContext *pCodecCtx; AVCodec *pCodec; AVFrame *pFrame; AVFrame *pFrameRGB; AVPacket packet; int frameFinished; int numBytes; uint8_t *buffer; // Register all formats and codecs av_register_all(); // Open video file const jbyte *str; str = (*env)->GetStringUTFChars(env, filename, […]

在APK中对AndroidManifest.xml进行编码/解码

我正在使用ApkTool来解码APK文件中的AndroidManifest.xml ,它完美的工作,但我怎么能再次编码它,应用一些变化之后,编码的方式相同? 例如(在我的情况下)更改应用程序标签。

有没有更快的方法来解码HTML字符比stringHtml.fromHtml()?

我正在使用Html.fromHtml(STRING).toString()来转换一个string,可能或可能不具有HTML和/或html实体,在一个纯文本string。 这很慢,我想我最后的计算是平均花了22ms。 大量的这些可以增加一分钟以上。 所以我正在寻找一个更快,性能build成的选项。 无论如何加快这一点,还是有其他解码选项可用? 编辑:由于似乎没有一个内置的方法是更快或专为性能打造,我会奖励任何人可以指向我的方向图书馆: 适用于Android 授权免费使用 比Html.fromHtml(String).toString();更快Html.fromHtml(String).toString(); 作为一个说明,我已经试过Jsoup这个方法: Jsoup.parse(String).text() ,它是慢的。

无法在不使用媒体提取器的情况下对Android 4.2上的video进行低级解码

我想在不使用提取器的情况下解码video帧。 所以我只是尝试了一个小样本,在那里我使用媒体提取器,但我不做extractor.readsample()将比特stream数据复制到input缓冲区中,而是使用FFmpegparsing器,在JNI内部,我将video帧复制到input字节缓冲区,然后排队input缓冲区..但是当我调用decoder.dequeueOutputBuffer(info, 10000) ,它返回MediaCodec.INFO_TRY_AGAIN_LATER 。 虽然它工作正常,如果我使用extractor.readsample() 。 请find下面的代码片段: Java端: import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import android.app.Activity; import android.media.MediaCodec; import android.media.MediaCodec.BufferInfo; import android.media.MediaExtractor; import android.media.MediaFormat; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; public class VideoBrowser extends Activity implements SurfaceHolder.Callback { private static final String SAMPLE = […]

Android如何使用BitmapFactory选项来缩放图像

我想用BitmapFactory.decodeFile(path,选项)从SD卡解码图像。 我还希望大于2048×2048像素的图像缩小到最大2048×2048(保持比例)。 我可以在获取位图后手动执行此操作,但除了已经分配的字节外,还需要分配大量的字节。 我应该如何设置我的BitmapFactory.Options对象来获得该效果? 谢谢