相关疑难解决方法(0)

BitmapFactory.decodeByteArray()返回NULL

我正在使用相机的previewCallback尝试抓取图像.这是我正在使用的代码

private Camera.PreviewCallback mPrevCallback = new Camera.PreviewCallback() 
{
        public void onPreviewFrame( byte[] data, Camera Cam ) {
                Log.d("CombineTestActivity", "Preview started");
                Log.d("CombineTestActivity", "Data length = " 
                        + data.length );
                currentprev = BitmapFactory.decodeByteArray( data, 0, 
                        data.length );

               if( currentprev == null )
                   Log.d("CombineTestActivity", "currentprev is null" );

                Log.d("CombineTestActivity", "Preview Finished" );

        }
};
Run Code Online (Sandbox Code Playgroud)

数据的长度总是与576000相同.

此外,我尝试更改相机的参数,以便图像以不同的格式返回.这就是我这样做时的样子.

mCamera = Camera.open();
camParam = mCamera.getParameters();
camParam.setPreviewFormat( ImageFormat.RGB_565 );
mCamera.setParameters( camParam );
    mCamera.setPreviewCallback( mPrevCallback );
Run Code Online (Sandbox Code Playgroud)

但是,当我更改预览格式并将其保留为默认值NV21时,BitmapFactory.decodeByteArray将返回null.我也尝试将预览格式更改为JPEG类型.我甚至在ddms中得到了一个调试语句,这就是我得到的

"D/skia(14391):--- SkImageDecoder :: Factory返回null"

java format camera android image

20
推荐指数
3
解决办法
3万
查看次数

使用FFMpeg为Android解码视频

我尝试使用互联网上提供的示例示例中的FFMpeg库解码视频,我用新版本的ffmpeg搞清楚,这是我从我的类文件中调用的代码,

   private static native int decodeVideo(String filename);
   decodeVideo(getString(R.string._sdcard_abc_3gp));
Run Code Online (Sandbox Code Playgroud)

现在位于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, NULL);

      if(av_open_input_file(&pFormatCtx, str, NULL, 0, NULL)!=0)
      {
          LOGI("Can't open file '%s'\n", str);
          return 1;
      }
      else
      {
          LOGI("File is opened\n");
          LOGI("File '%s', Codec %s",pFormatCtx->filename,pFormatCtx->iformat->name);
      } …
Run Code Online (Sandbox Code Playgroud)

video android ffmpeg decode android-ndk

16
推荐指数
1
解决办法
5817
查看次数

如何从Android编程中的Camera Application捕获预览图像帧?

我正在编写一个应用程序来捕获相机预览帧并将其转换为Android中的位图.这是我的代码:

   Camera.PreviewCallback previewCallback = new Camera.PreviewCallback()  
    { 
            public void onPreviewFrame(byte[] data, Camera camera)  
            { 
                    try 
                    { 
                            BitmapFactory.Options opts = new BitmapFactory.Options(); 
                            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//,opts); 
                    } 
                    catch(Exception e) 
                    {

                    } 
            } 

    }; 

    mCamera = Camera.open();
    mCamera.setPreviewCallback(previewCallback); 
Run Code Online (Sandbox Code Playgroud)

在我开始预览之后,使用数据调用回调,但位图为空.

将字节数组转换为BitMap时,我做错了什么?

camera android bitmap

9
推荐指数
2
解决办法
5万
查看次数

在Android中提取视频帧

我想知道是否可以从Android中正在运行的视频中提取帧?我需要定期提取帧并发送它们进行进一步处理.

有人能为我找到答案吗?

谢谢,

ABHI

video android extraction

5
推荐指数
3
解决办法
2万
查看次数

提取Android中的所有视频帧

我录制的视频时间有限.现在我想获取所有视频帧.我使用下面的代码,并使用它,我能够得到帧,但我没有得到所有的视频帧.重复3到4帧然后我有一个不同的帧.但是众所周知,我们可以在一秒钟内获得25-30帧来显示流畅的视频.如何获得所有帧.

 for (int i = 0; i < 30; i++) {

                    Bitmap bArray = mediaMetadataRetriever.getFrameAtTime(
                            1000000 * i,
                            MediaMetadataRetriever.OPTION_CLOSEST);

                    savebitmap(bArray, 33333 * i);

                }
Run Code Online (Sandbox Code Playgroud)

我不想使用NDK.我得到这个链接不知道应该是什么值"argb8888".我在这里得到错误.任何人都可以解释如何做到这一点. 从Android中的视频图像中获取帧

video camera android photo frame

5
推荐指数
2
解决办法
1万
查看次数

将图像从SurfaceView获取到ImageView?

我从使用SurfaceView作为相机preivew获取图像/可绘制或位图时遇到了一些麻烦.

    final CameraSurfaceView cameraSurfaceView = new CameraSurfaceView(this);
    LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout1);
    ll.addView(cameraSurfaceView); // THIS WORKS

    ImageView ivCam = (ImageView) findViewById(R.id.ivCam);
    ivCam.setImageBitmap(cameraSurfaceView.getDrawingCache()); // THIS DOESN'T :(
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢!

编辑:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final CameraSurfaceView cameraSurfaceView = new CameraSurfaceView(this);
        LinearLayout ll = (LinearLayout)findViewById(R.id.LLS);
        ll.addView(cameraSurfaceView); // THIS WORKS


    }

///////////////////////////////////////////////////////////////////////////////////////////////   

    public class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback
    {
            private SurfaceHolder holder;
            private Camera camera;

            public CameraSurfaceView(Context context) 
            {
                    super(context);

                    //Initiate the Surface Holder properly
                    this.holder = this.getHolder();
                    this.holder.addCallback(this);
                    this.holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); …
Run Code Online (Sandbox Code Playgroud)

android

3
推荐指数
1
解决办法
2万
查看次数

在c ++中从YUV转换为RGB(android-ndk)

我在android中开发,并希望将字节数组从相机的previewCallback(YUV格式)转换为rgb格式.

我使用了这个答案中给出的功能:从Android中的视频图像中获取帧

它在java中完美运行,但我的问题是我想用c ++编写函数(我使用的是ndk,而不是很熟悉c ++).

我试图用c ++创建函数,但它总是会产生奇怪的结果(例如图片全部为绿色).

有没有人有类似的功能或这个功能在c ++中工作?

谢谢.

c++ rgb java-native-interface android yuv

3
推荐指数
1
解决办法
2万
查看次数

从相机获取位图流?

我的目标是从相机中获取最大数量的图像而不保存它们,但我不知道如何进行这种操作.我知道如何从拍摄照片的相机中捕捉到一张图像,但是我是如何在不拍照的情况下从相机中获取照片的?

我不会通过互联网发送照片,而是在设备上处理它们.我必须拍摄视频或照片序列吗?

camera android bitmap

3
推荐指数
1
解决办法
2419
查看次数

从流媒体中获取Android摄像头的RGB数据

我有个问题.如何从相机中获取流中的RGB数据?或来自相机的YUV数据并转换为RGB?THA

android

0
推荐指数
1
解决办法
1万
查看次数