首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:我想录制一个特低质量的视频源,并将其以离散的数据包发送。有可能吗?你会怎么做呢?

Android:我想录制一个特低质量的视频源,并将其以离散的数据包发送。有可能吗?你会怎么做呢?
EN

Stack Overflow用户
提问于 2012-02-15 23:40:37
回答 1查看 1K关注 0票数 5

基本上,我希望能够在少于3g的时间内发送几秒钟延迟的“实时”馈送。如果它的质量很低也没关系。如果有必要,我甚至可以使用4位灰度(虽然128-256色会更好)。如果有必要,我愿意在大于1fps的情况下将分辨率降低到160x120。在这种最粗糙的设置下完全未压缩意味着过饱和的低带宽连接。

我是否应该简单地将快照视为图像?有没有人熟悉Bitmapfactory关于最低质量JPEG的功能?

我应该查看PNG还是GIF?我的理解是,可靠的字段最适合使用这些。我不确定除了天空的一大部分之外,我还能不能很好地依赖于实心场,因为我希望能控制一架发回“视频”的无人机。有几秒钟延迟的人造视频是很好的,甚至是更好的,因为我预计服务器连接经常丢失和恢复。

我在"3g“上得到了128k的信号,但我不能完全依靠它。我可以做任何必要的解码服务器端-这应该不是一个问题。

所以我问你,Stack,你想从你的智能手机上通过互联网观看,而不能依赖于良好的连接。你是如何处理它的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-21 09:53:44

我认为最简单的方法是抓取预览图像并发送这些图像。

这是我找到的一段很好的代码,用来抓取JPEG格式的预览图像。它又好又快,应该能满足你的需求。我也用它来上传,所以我想要非常小的文件大小。

输出1920x1080图像时,文件大小在150-300KB之间。

代码语言:javascript
复制
    camera.setOneShotPreviewCallback(new PreviewCallback() {
            @Override
            public void onPreviewFrame(byte[] data, Camera camera) {
                try {
                    Camera.Parameters parameters = camera.getParameters();
                    Size size = parameters.getPreviewSize();
                    YuvImage image = new YuvImage(data, parameters.getPreviewFormat(),
                            size.width, size.height, null);
                    File file = new File(getCacheDir().getPath() + "/out.jpg");
                    FileOutputStream filecon = new FileOutputStream(file);
                    image.compressToJpeg(
                            new Rect(0, 0, image.getWidth(), image.getHeight()), 90,
                            filecon);
                } catch (FileNotFoundException e) {
                }
            }
        });

下面是我如何将预览大小设置为最大值,但您可以将其设置为更小的值来加快速度。

代码语言:javascript
复制
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
imageWidth = previewSizes.get(0).width;
imageHeight = previewSizes.get(0).height;
parameters.setPreviewSize(imageWidth, imageHeight);
camera.setParameters(parameters);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9296373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档