FMX支持视频采集,具体见FMX.Media,提供了很类支持音频、视频的处理。

按帮助文档,用Note3做了测试,结果,效率太低,不可用。

具体可查询帮助Video Capturing一节,我就是按这个把代码复制过来做的测试.

一点进展:

对于这么低的效率,经与朋友讨论,应该是FMX完全自己处理的结果,如此说来,如果我们能调用Android内置的相机进行录像,然后取得录像文件,该问题就解决了。这样想来,Delphi XE6支持的拍照功能,就是按这个原理实现的,非常适用了!为此,XE6带做一个Standard Action,叫TTakePhotoFromCameraAction,非常快捷的支持拍照的开发,如果再提供一个TTakeVideoFromCameraAction该有多好!可惜了,现在还没有。

为了调用内置相机,朋友提醒我说,就是调用Android的Intent,怎么调用,还不会,那有没有人基于Android开发这样的控件呢?还真查到一组控件:DPF component suite for Android, 只可惜,目前还没有提供录像功能。

附测试的FMX代码:

  1. unit Unit2;
  2. interface
  3. uses
  4. System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  5. FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
  6. FMX.StdCtrls, FMX.Objects, FMX.ListBox,FMX.Media;
  7. type
  8. TForm2 = class(TForm)
  9. Layout1: TLayout;
  10. StartButton: TButton;
  11. ComboBox1: TComboBox;
  12. Image1: TImage;
  13. procedure FormCreate(Sender: TObject);
  14. procedure StartButtonClick(Sender: TObject);
  15. procedure ComboBox1Change(Sender: TObject);
  16. procedure FormDestroy(Sender: TObject);
  17. private
  18. { Private declarations }
  19. public
  20. VideoCamera: TVideoCaptureDevice;
  21. procedure SampleBufferSync;
  22. procedure SampleBufferReady(Sender: TObject; const ATime: TMediaTime);
  23. end;
  24. var
  25. Form2: TForm2;
  26. implementation
  27. {$R *.fmx}
  28. { TForm2 }
  29. procedure TForm2.ComboBox1Change(Sender: TObject);
  30. begin
  31. VideoCamera := TVideoCaptureDevice
  32. //(TCaptureDeviceManager.Current.GetDevicesByName(ComboBox1.Selected.Text));
  33. (TCaptureDeviceManager.Current.Devices[]);
  34. if (VideoCamera <> nil) then
  35. begin
  36. StartButton.Enabled := true;
  37. end;
  38. end;
  39. procedure TForm2.FormCreate(Sender: TObject);
  40. var
  41. DeviceList: TCaptureDeviceList;
  42. i: integer;
  43. begin
  44. DeviceList := TCaptureDeviceManager.Current.GetDevicesByMediaType
  45. (TMediaType.Video);
  46. for i := to DeviceList.Count - do
  47. begin
  48. ComboBox1.Items.Add(DeviceList[i].Name);//这里在note3上取不到Name.
  49. end;
  50. end;
  51. procedure TForm2.FormDestroy(Sender: TObject);
  52. begin
  53. if VideoCamera <> nil then
  54. VideoCamera.StopCapture;
  55. end;
  56. procedure TForm2.SampleBufferReady(Sender: TObject; const ATime: TMediaTime);
  57. begin
  58. TThread.Synchronize(TThread.CurrentThread, SampleBufferSync);
  59. //Resize the image so that the video is buffered in its original size
  60. // Image1.Width:=Image1.Bitmap.Width;
  61. // Image1.Height:=Image1.Bitmap.Height;
  62. end;
  63. procedure TForm2.SampleBufferSync;
  64. begin
  65. VideoCamera.SampleBufferToBitmap(Image1.Bitmap, true);
  66. end;
  67. procedure TForm2.StartButtonClick(Sender: TObject);
  68. begin
  69. if (VideoCamera <> nil) then
  70. begin
  71. if (VideoCamera.State = TCaptureDeviceState.Stopped) then
  72. begin
  73. VideoCamera.OnSampleBufferReady := SampleBufferReady;
  74. VideoCamera.StartCapture;
  75. StartButton.Text := 'Stop';
  76. end
  77. else
  78. begin
  79. VideoCamera.StopCapture;
  80. StartButton.Text := 'Start';
  81. end;
  82. end
  83. else
  84. begin
  85. Caption := 'Video capture devices not available.';
  86. end;
  87. end;
  88. end.

http://blog.sina.com.cn/s/blog_44fa172f0101rg7p.html

Delphi XE6 试用Android视频采集的更多相关文章

  1. delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法

    delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program F ...

  2. Delphi XE6 for Android 让手机震动(调用Java的函数)

    震动,是调用了 安卓api  JNI 里面的 函数  ,这些都是 调用java的 ,如下面的引用, uses  FMX.Helpers.Android,  Androidapi.JNI.App,  A ...

  3. delphi XE7 在Android编译SharedActivity时出错

    delphi XE6 在Android编译SharedActivity时正常,但xe7下编译出错,在uses添加Androidapi.Helpers就可以.

  4. 手机Android音视频采集与直播推送,实现单兵、移动监控类应用

    从安卓智能手机.平板,到可穿戴的Android Ware.眼镜.手表.再到Android汽车.智能家居.电视,甚至最近看新闻,日本出的几款机器人都是Android系统的,再把目光放回监控行业,传统监控 ...

  5. 《Delphi XE6 android 编程入门教程》推荐

    近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...

  6. Delphi XE6 Android拨号函数

    http://blog.sina.com.cn/s/blog_44fa172f0101rpex.html Delphi XE6 Android拨号函数 (2014-05-07 17:48:51) 转载 ...

  7. delphi xe6 让 ListView 在 Android 可回弹[根据龟山阿卍原创修改为xe6版本]

    Delphi XE6 找出 FMX.Platform.Android.pas 档案,并复制到自己的 Project 路径里,找到 GetScrollingBehaviour 函数,修改成如下: uni ...

  8. 直播软件开发关于Android、iOS中的视频采集步骤

    很多人对直播软件开发还是抱有想法的,但是在这个资本冷静的市场下,直播平台该怎么玩,在直播软件开发过程中哪些功能是必须具备的,这都是值得关注的话题.今天我们给大家分享一份详细的直播软件开发关于Andro ...

  9. Android 视频直播 SDK

    Android 视频直播 SDK接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1 ...

随机推荐

  1. 关于采用MVC开发默认路由导致首页部分文件访问失效的临时解决方案

    最近开发中涉及了Mvc4的开发,其中的默认路由功能是很不错的东西,但是在实际应用中就出现了不少的问题.比如我们访问某网站http://www.abc.com,虽然路由会帮助自动转向Home/Index ...

  2. Qt中如何 编写插件 加载插件 卸载插件

    Qt中如何 编写插件 加载插件 卸载插件是本文要介绍的内容.Qt提供了一个类QPluginLoader来加载静态库和动态库,在Qt中,Qt把动态库和静态库都看成是一个插件,使用QPluginLoade ...

  3. SQL Server 2008 对XML 数据类型操作

    原文 http://www.cnblogs.com/qinjian123/p/3240702.html 一.前言 从 SQL Server 2005 开始,就增加了 xml 字段类型,也就是说可以直接 ...

  4. ISSkin Pack 3.0 (含预览程序 ISSkinViewer)

    原文 http://restools.hanzify.org/article.asp?id=108 包含 250 款皮肤, 预览程序纯粹的由Inno Setup脚本写成. 足以展示Inno Setup ...

  5. c# excel sheep 导出

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  6. hdu 1690 The Balance_母函数

    题意:给你n个数,这些数可以互相加或者减,输出在范围[1,sum]里不能通过运算得出的数 思路:套母函数模版 #include <iostream> #include<cstdio& ...

  7. wireshark 过滤条件汇总

    原文地址:http://blog.const.net.cn/a/9340.htm 一.针对wireshark最常用的自然是针对IP地址的过滤.其中有几种情况: (1)对源地址为192.168.0.1的 ...

  8. cURL.1 手册页

    摘自http://blog.csdn.net/huangxy10/article/details/45717793 cURL.1 手册页 名称 cURL - transfer a URL 摘要 cUR ...

  9. #include <hash_set>

    哈希查找,不需要排序,适用于精确查找,比二分查找更快 #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS #include <iostream&g ...

  10. wxpython 拖动界面时进入假死状态(未响应)解决方法

    场景:在一个事件中调用一个函数,但是这个函数执行的时间非常的长,此过程中拖动界面的时候会使得界面进入未响应状态,直到函数执行完才可以ok 解决方法: 在调用函数的时候使用多线程调用 import th ...