Delphi XE6 试用Android视频采集
FMX支持视频采集,具体见FMX.Media,提供了很类支持音频、视频的处理。
按帮助文档,用Note3做了测试,结果,效率太低,不可用。
具体可查询帮助Video Capturing一节,我就是按这个把代码复制过来做的测试.
一点进展:
对于这么低的效率,经与朋友讨论,应该是FMX完全自己处理的结果,如此说来,如果我们能调用Android内置的相机进行录像,然后取得录像文件,该问题就解决了。这样想来,Delphi XE6支持的拍照功能,就是按这个原理实现的,非常适用了!为此,XE6带做一个Standard Action,叫TTakePhotoFromCameraAction,非常快捷的支持拍照的开发,如果再提供一个TTakeVideoFromCameraAction该有多好!可惜了,现在还没有。
为了调用内置相机,朋友提醒我说,就是调用Android的Intent,怎么调用,还不会,那有没有人基于Android开发这样的控件呢?还真查到一组控件:DPF component suite for Android, 只可惜,目前还没有提供录像功能。
附测试的FMX代码:
- unit Unit2;
- interface
- uses
- System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
- FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
- FMX.StdCtrls, FMX.Objects, FMX.ListBox,FMX.Media;
- type
- TForm2 = class(TForm)
- Layout1: TLayout;
- StartButton: TButton;
- ComboBox1: TComboBox;
- Image1: TImage;
- procedure FormCreate(Sender: TObject);
- procedure StartButtonClick(Sender: TObject);
- procedure ComboBox1Change(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- private
- { Private declarations }
- public
- VideoCamera: TVideoCaptureDevice;
- procedure SampleBufferSync;
- procedure SampleBufferReady(Sender: TObject; const ATime: TMediaTime);
- end;
- var
- Form2: TForm2;
- implementation
- {$R *.fmx}
- { TForm2 }
- procedure TForm2.ComboBox1Change(Sender: TObject);
- begin
- VideoCamera := TVideoCaptureDevice
- //(TCaptureDeviceManager.Current.GetDevicesByName(ComboBox1.Selected.Text));
- (TCaptureDeviceManager.Current.Devices[]);
- if (VideoCamera <> nil) then
- begin
- StartButton.Enabled := true;
- end;
- end;
- procedure TForm2.FormCreate(Sender: TObject);
- var
- DeviceList: TCaptureDeviceList;
- i: integer;
- begin
- DeviceList := TCaptureDeviceManager.Current.GetDevicesByMediaType
- (TMediaType.Video);
- for i := to DeviceList.Count - do
- begin
- ComboBox1.Items.Add(DeviceList[i].Name);//这里在note3上取不到Name.
- end;
- end;
- procedure TForm2.FormDestroy(Sender: TObject);
- begin
- if VideoCamera <> nil then
- VideoCamera.StopCapture;
- end;
- procedure TForm2.SampleBufferReady(Sender: TObject; const ATime: TMediaTime);
- begin
- TThread.Synchronize(TThread.CurrentThread, SampleBufferSync);
- //Resize the image so that the video is buffered in its original size
- // Image1.Width:=Image1.Bitmap.Width;
- // Image1.Height:=Image1.Bitmap.Height;
- end;
- procedure TForm2.SampleBufferSync;
- begin
- VideoCamera.SampleBufferToBitmap(Image1.Bitmap, true);
- end;
- procedure TForm2.StartButtonClick(Sender: TObject);
- begin
- if (VideoCamera <> nil) then
- begin
- if (VideoCamera.State = TCaptureDeviceState.Stopped) then
- begin
- VideoCamera.OnSampleBufferReady := SampleBufferReady;
- VideoCamera.StartCapture;
- StartButton.Text := 'Stop';
- end
- else
- begin
- VideoCamera.StopCapture;
- StartButton.Text := 'Start';
- end;
- end
- else
- begin
- Caption := 'Video capture devices not available.';
- end;
- end;
- end.
http://blog.sina.com.cn/s/blog_44fa172f0101rg7p.html
Delphi XE6 试用Android视频采集的更多相关文章
- delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法
delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program F ...
- Delphi XE6 for Android 让手机震动(调用Java的函数)
震动,是调用了 安卓api JNI 里面的 函数 ,这些都是 调用java的 ,如下面的引用, uses FMX.Helpers.Android, Androidapi.JNI.App, A ...
- delphi XE7 在Android编译SharedActivity时出错
delphi XE6 在Android编译SharedActivity时正常,但xe7下编译出错,在uses添加Androidapi.Helpers就可以.
- 手机Android音视频采集与直播推送,实现单兵、移动监控类应用
从安卓智能手机.平板,到可穿戴的Android Ware.眼镜.手表.再到Android汽车.智能家居.电视,甚至最近看新闻,日本出的几款机器人都是Android系统的,再把目光放回监控行业,传统监控 ...
- 《Delphi XE6 android 编程入门教程》推荐
近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...
- Delphi XE6 Android拨号函数
http://blog.sina.com.cn/s/blog_44fa172f0101rpex.html Delphi XE6 Android拨号函数 (2014-05-07 17:48:51) 转载 ...
- delphi xe6 让 ListView 在 Android 可回弹[根据龟山阿卍原创修改为xe6版本]
Delphi XE6 找出 FMX.Platform.Android.pas 档案,并复制到自己的 Project 路径里,找到 GetScrollingBehaviour 函数,修改成如下: uni ...
- 直播软件开发关于Android、iOS中的视频采集步骤
很多人对直播软件开发还是抱有想法的,但是在这个资本冷静的市场下,直播平台该怎么玩,在直播软件开发过程中哪些功能是必须具备的,这都是值得关注的话题.今天我们给大家分享一份详细的直播软件开发关于Andro ...
- Android 视频直播 SDK
Android 视频直播 SDK接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1 ...
随机推荐
- 关于采用MVC开发默认路由导致首页部分文件访问失效的临时解决方案
最近开发中涉及了Mvc4的开发,其中的默认路由功能是很不错的东西,但是在实际应用中就出现了不少的问题.比如我们访问某网站http://www.abc.com,虽然路由会帮助自动转向Home/Index ...
- Qt中如何 编写插件 加载插件 卸载插件
Qt中如何 编写插件 加载插件 卸载插件是本文要介绍的内容.Qt提供了一个类QPluginLoader来加载静态库和动态库,在Qt中,Qt把动态库和静态库都看成是一个插件,使用QPluginLoade ...
- SQL Server 2008 对XML 数据类型操作
原文 http://www.cnblogs.com/qinjian123/p/3240702.html 一.前言 从 SQL Server 2005 开始,就增加了 xml 字段类型,也就是说可以直接 ...
- ISSkin Pack 3.0 (含预览程序 ISSkinViewer)
原文 http://restools.hanzify.org/article.asp?id=108 包含 250 款皮肤, 预览程序纯粹的由Inno Setup脚本写成. 足以展示Inno Setup ...
- c# excel sheep 导出
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...
- hdu 1690 The Balance_母函数
题意:给你n个数,这些数可以互相加或者减,输出在范围[1,sum]里不能通过运算得出的数 思路:套母函数模版 #include <iostream> #include<cstdio& ...
- wireshark 过滤条件汇总
原文地址:http://blog.const.net.cn/a/9340.htm 一.针对wireshark最常用的自然是针对IP地址的过滤.其中有几种情况: (1)对源地址为192.168.0.1的 ...
- cURL.1 手册页
摘自http://blog.csdn.net/huangxy10/article/details/45717793 cURL.1 手册页 名称 cURL - transfer a URL 摘要 cUR ...
- #include <hash_set>
哈希查找,不需要排序,适用于精确查找,比二分查找更快 #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS #include <iostream&g ...
- wxpython 拖动界面时进入假死状态(未响应)解决方法
场景:在一个事件中调用一个函数,但是这个函数执行的时间非常的长,此过程中拖动界面的时候会使得界面进入未响应状态,直到函数执行完才可以ok 解决方法: 在调用函数的时候使用多线程调用 import th ...