04. august 2012 - 00:13 Der er 12 kommentarer og
1 løsning

TMediaplayer --> Panel --> BMP--> JPEG

HEJ,

For nmogen år siden arbejdede jeg med at en TMediaPlayer skulle vise nogen VMV-filer og jeg skulle trække nogen enkelte billeder ud fra disse VMW-filer.

Det blev gjort med en TMediaplayer, som brugte et PANEL som visningsfelt. Manøvreringen skete med TMediaplayeren selv.

Når VMW-filen var på det rigtige billede (med lidt fiflen frem og tilbage (Mediaplayer1.Step; og Mediaplayer1.Back; ) ) ved at aktivere BUtton1.SaveAsBmp;

Denne But..1.SaveAsBmp husker jeg ikke meget af, men den oprettede en "forbindelse" til PANEL1, således at jeg kunne hente samtlige pixels fra Panel1 og gemme dem som BMP (og/eller JPEG).

Jeg har søgt på nettet men finder ikke længere nogen om denne metode (sikkert fordi jeg søger på den forkerte steder), men jeg har stærkt brug for denne metode (og de aktuelle billeder som BMP og JPEG).

(Det var vist noget med en hWinControl eller noget i den retning)

Kan nogen hjælpe ?

TAK på forkant.

Kristian
Avatar billede kroning Nybegynder
04. august 2012 - 09:53 #1
Har lige prøvet dette og det virker, derefter er det bare at gemme billedet som bmp eller jpg.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, MPlayer,jpeg;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Image1: TImage;
    Button1: TButton;
    MediaPlayer1: TMediaPlayer;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
    Image1.Picture.Bitmap.Width := Panel1.Width;
    Image1.Picture.Bitmap.Height := Panel1.Height;
    Image1.Picture.Bitmap.PixelFormat := pf24bit;


    Image1.Picture.Bitmap.Canvas.CopyRect(Rect(0,0, Image1.Picture.Bitmap.Width,Image1.Picture.Bitmap.Height),
    Form1.Canvas,
    Rect(Panel1.Left, Panel1.Top,
    Panel1.Left + Panel1.Width-1,
    Panel1.Top + Panel1.Height-1) );
end;

end.
04. august 2012 - 12:07 #2
HEJ Kroning,

Desværre, den fungerer ikke hos mig.

Har det nydeligste billede i PANEL-delen, men når jeg trykker button1 (button3 hos mig) får jeg til stadighed et 100 pct. sort image på IMAGE-delen. Uanset om panel bil'de er sort / sort-hvidt / farve.

Har derefter prøvet at modificere lidt i koden men får stadig sorte billeder i IMAGE-delen.

Kristian
Avatar billede kroning Nybegynder
04. august 2012 - 14:31 #3
Jeg bruger Delphi 7 og Windows 7
Avatar billede mbsnet Nybegynder
04. august 2012 - 15:10 #4
04. august 2012 - 16:44 #5
HEJ,

Desværre, det her virker heller ikke.

Prøvede noget nyt. Installerede en D7 Second Edition (D7SE) på en bærbar og prøvede igen. Den opfører sig som 1. forsøg (DR TV under strejker - sort skærm) og min ordinære D7 enterprise (D7E) er begyndt at give mig fejlen MCI-Device not found og/eller MCI-Device not initialized - en sjælden gang i mellem (stokastisk) giver den mig DR-modellen (som nævnt ovenfor)...

Koldstarter giver samme fejl med samme frekvens.

Jeg tænkte på om det kunne være relevant at sende PAS-koden og DFM-koden ?

Findes der evt. en anden mere pålidelig gratis komponent (evt. med source) hvor jeg kan FRAME-steppe (gfrem / tilbage) og hente billedet som BMP / Jpeg (BMP er et krav) -  (skal dog kunne vise VMW-filer også i store størrelser (1.2 --> 3,2 Gb) ) ?

Maskinen (en (frika)Delle DIM 8400) kører en ny -geninstalleret XP SP2 (som opgraderes i løbet af i morgen til SP3).


Kristian
Avatar billede mbsnet Nybegynder
05. august 2012 - 20:25 #6
Man kunne vælge dx... tag evt. et kig på DSPack, der medfølger glimrende demo projekter. Det kan være du kan ændre lidt i koderne for at opnå det som du ønsker...
Avatar billede mbsnet Nybegynder
05. august 2012 - 20:25 #7
07. august 2012 - 13:50 #8
Hej

Har experimenteret en del, dog alle med foreløbigt negativt udfald.

Fandt fejlen, som jeg refererer til i #5. (Forkert kopieret WMV-fil). Min 8 GB USB-dongel er defekt på enkelte celler, så der var årsagen ..) da jeg brugte en anden gik kopieringen bedre. Så det funker nu. Så nu er den EKS...

Har downloadet DSPACK og vil afprøve den effektivt senere. De foreløbige eksperimenter ser dog lovende ud (tak til MBS).

Melder tilbage.

Kristian
13. august 2012 - 15:10 #9
HEJ,

Har downloadet DSPACK. Installeret den og der er muligheder der. Desværre har den ikke SINGLESTEP (som er et krav!). Enten må jeg selv lave singlestep-funktionen eller droppe komponenten.

Søgte videre på nettet og fandt VISIOFORGES MEDIAPLAYER SDK DELPHI. Den ser ud til at kunne det jeg ønsker (inkl. Singlestep / framestep).

Kan også gemme frame som BMP. Arbejder videre med denne løsning.

KRistian
Avatar billede mbsnet Nybegynder
14. august 2012 - 09:23 #10
Hej.

Jeg husker at du tidligere spurgte til com objekter. Derfor nævnte jeg lige dspack, som basalt set er dx- multimedie interfaces pakket ind i T-objekter. Man kan jo også bruge com interfaces direkte uden dspack, men tænkte nok at der var lidt at kigge på i pakken.

Fortsat held og lykke med dit projekt.

btw: med dspack installeret, så prøv at droppe en TFilter på en form, derefter gå til property "BaseFilter" i object inspector, ok klik med mus på "...". Nu kommer en liste over alle system enheder. Derefter kan filtret forbindes med filtergraph osv.

//mbs
14. august 2012 - 13:02 #11
HEJ,

1000 --> 000,00 TAK (bestem selv antal nuller (foran kommaet))

Det vil jeg prøve....

KRistian

PS: Har forøvrigt kommet ganske langt med projektet. Nu kan jeg "spole" frem til den ønskede frame (ikke tilbage). Singlestep (+/-) mangler lidt kode. Mangler også lidt kode til behandlinegn af frame'n.


KR
16. september 2012 - 12:18 #12
Jeg lukker spørgsmålet om 1 uge.

Nogen kommentarer til dette ?  (points etc. ? )

Kristian
29. september 2012 - 21:52 #13
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester