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视频采集的更多相关文章

  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. jquery 实现简单拖拽

    $.fn.drag = function(obj) { var dragging = false; var oDrag = $(obj); oDrag.mousedown(function(e) { ...

  2. QTextEdit中选中文本修改字体与颜色,全部文本修改字体与颜色(设置调色板的前景色、背景色、文字颜色以及基色)

    ----我的生活,我的点点滴滴!! 当然以下内容都可以通过设置样式来达到目的,但是下面不使用这样的方法 先来看张图,理解此图基本就能实现上面所要达到的目的了 Widget::Widget(QWidge ...

  3. QT:程序忙碌时的进度条——开启时间循环,等结束的时候再退出

    当程序在执行一项(或多项)耗时比较久的操作时,界面总要有一点东西告诉用户“程序还在运行中”,那么,一个“没有终点”的进度条就是你需要的了.PS:最好把耗时的操作扔到一个子线程中去,以免他阻塞了界面线程 ...

  4. 【改造Linux命令之rm - 删除文件或目录-】

    用途说明 rm命令是常用的命令,用来删除文件或目录(remove files or directories).它也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比 ...

  5. select自动选中

    //筛选 var typeid = "<!--{$typeid}-->"; var bigclassid = "<!--{$bigclassid}--& ...

  6. A Knight's Journey 分类: dfs 2015-05-03 14:51 23人阅读 评论(0) 收藏

    A Knight’s Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34085 Accepted: 11621 ...

  7. 杭电oj 2037 今年暑假不AC

    Tips:贪心算法的典型应用,可以按照节目结束时间由小到大排序,(至于结束时间相同的,有些人说按开始时间早的排序,不过个人认为不必处理,因为结束时间一样,两个之中要么都没有,要么必有一个)然后再依次进 ...

  8. python 重要模块

    1,使用字典的特殊字符串替换,基于字典的字符串格式化

  9. Mininet 搭建自定义网络

    Mininet支持参数化拓扑,用几行python代码,你就可以创建一个基于你传进去的参数配置的灵活拓扑结构,还可被多个实验重复使用. 下面是一个小例子:(基于mininet/topo.py:Singl ...

  10. #include <boost/scoped_array.hpp>

    多个元素使用#include <boost/scoped_array.hpp> 单个元素使用#include <boost/scoped_ptr.hpp> 作用域数组 作用域数 ...