0

我有一个摄像头记录意图,当结果正常时,我尝试将此视频转换为 byte[] 以发送 Web 服务:

我这样做:

if (resultCode == RESULT_OK) {
                    // Video guardado
                    videoUri = data.getData();
                    if (videoUri != null) {

                        ByteArrayOutputStream out = new ByteArrayOutputStream();
                        FileInputStream fichero_codificar = null;
                        try {

                            fichero_codificar = new FileInputStream(
                                    videoUri.getPath());

                            byte[] buf = new byte[1024];
                            int n;
                            while (-1 != (n = fichero_codificar.read(buf))) {
                                out.write(buf, 0, n);
                            }
                            byte[] videoByte = out.toByteArray();
                            strBase64 = Base64.encode(videoByte);
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

但在 fichero_codificar = new FileInputStream(videoUri.getPath())

logcat 说文件不存在或补丁不正确。

有人有我的问题的例子吗?谢谢

4

1 回答 1

0

看起来您查找的信息不正确。以下是我在应用程序中使用相机意图的方式:

                thumbnail = (Bitmap) data.getExtras().get("data");  
            try {

                FileOutputStream out = new FileOutputStream(getPicName(index));
                thumbnail.compress(Bitmap.CompressFormat.PNG, 90, out);
            } catch (Exception e) {
                e.printStackTrace();
            }

因此,也许可以尝试使用 Video 对象而不是 Bitmap 对象。 如果这不起作用,您可以尝试 .getAbsolutePath() 代替。

是的,它绝对不是你认为的那样。我在我的身上运行了调试器,getPath 返回了这个:/external/images/media/21,这是一个内容 Uri。

于 2012-06-26T16:55:26.027 回答