Ver Mensaje Individual
  #7  
Antiguo 02-08-2023
voci voci is offline
Miembro
 
Registrado: oct 2003
Posts: 97
Reputación: 21
voci Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Ambas usan el mismo navegador?
No usa el navegador para reproducir la cámara, aunque como digo el componente en si ya está compilado, el código de la unidad a compilar es este:

Código:
unit Main;

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.ExtCtrls, FMX.Surfaces, FMX.StdCtrls, FMX.Edit, FMX.Controls.Presentation,
  VideoStream;

type
  TFormMain = class(TForm)
    ImageViewer: TImageViewer;
    Panel: TPanel;
    EditUrl: TEdit;
    ButtonStartStop: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ButtonStartStopClick(Sender: TObject);
  private
    { Private declarations }
    VideoClient: TVideoClient;
    BitmapSurface: TBitmapSurface;
    WasRealignContent: Boolean;
    procedure ImageAvailable(JpegImage: TByteDynArray);
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;

implementation

{$R *.fmx}

procedure TFormMain.FormCreate(Sender: TObject);
begin
  BitmapSurface := TBitmapSurface.Create;

  VideoClient := TVideoClient.Create;
  VideoClient.OnImageAvailable := ImageAvailable;
end;

procedure TFormMain.FormDestroy(Sender: TObject);
begin
  VideoClient.Free;
  BitmapSurface.Free;
end;

procedure TFormMain.ButtonStartStopClick(Sender: TObject);
begin
  if not VideoClient.Active then
  begin
    VideoClient.Url := EditUrl.Text;
    VideoClient.Active := True;
    ButtonStartStop.Text := 'Stop';
    EditUrl.Enabled := False;
  end
  else
  begin
    VideoClient.Active := False;
    ButtonStartStop.Text := 'Start';
    EditUrl.Enabled := True;
  end
end;

procedure TFormMain.ImageAvailable(JpegImage: TByteDynArray);
var Stream: TBytesStream;
begin
  Stream := TBytesStream.Create(TBytes(JpegImage));
  try
    TBitmapCodecManager.LoadFromStream(Stream, BitmapSurface);
  finally
    Stream.Free;
  end;

  ImageViewer.Bitmap.Assign(BitmapSurface);

  // workaround for Android
  if not WasRealignContent then
  begin
    ImageViewer.RealignContent;
    WasRealignContent := True;
  end;
end;

end.
Saludos.
Responder Con Cita