AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmaps als AVI-Vido / MPEG-Video speichern

Ein Thema von Harry Stahl · begonnen am 4. Okt 2018 · letzter Beitrag vom 5. Okt 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 19:31
Ich habe ein lauffähiges Demo hier in DP gefunden, also BMP2AVI, geschrieben von turboPASCAL.

Für mein Delphi 2010 musste ich folgende Änderung vornehmen damit es erstmal überhaupt funktioniert, es hat noch Probleme und Speicherleks, aber die Grundsubstanz funktioniert.
Datei: CreateAVI.pas
Zeile: 198
ist nun:     if AVIFileOpenW(pfile, PWideChar(WideString(WorkFile)), OF_WRITE or OF_CREATE, nil) <> AVIERR_OK then

edit
Ps: vorher war die Zeile     if AVIFileOpen(pfile, PChar(WorkFile), OF_WRITE or OF_CREATE, nil) <> AVIERR_OK then aber der Compiler hat immer die Ansi Version genommen und beim String abgekackt. Da ist wieder so was was ich nicht verstehe obwohl ja PChar und keine A/W angegeben war nimmt der intern bei mir die A variante...... (Workfile : String; falls ihr das fragen/sagen wollt)
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 4. Okt 2018 um 19:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.560 Beiträge
 
Delphi 12 Athens
 
#2

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 20:46
Hey KodeZwerg, herzlichen Dank für Deinen Einsatz.

Funktioniert hier auch unter Delphi 10.2.3.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 20:59
Ja gern geschehn, aber halt Windows vorbehalten (Video for Windows).
Bei der AviWriter komponente habe ich mal reingeschaut (zuletzt kam es mit Delphi 7 zum Einsatz), ja die Init abändern wie oben vorgeschlagen.
Ich habe es auf die schnelle nicht zum laufen bekommen, aber wenn die VfW Variante Dir erstmal genug Reiz bietet, belasse ich es dabei.


Ps: Musstest Du es wie ich auch abändern oder lief es out-of-box?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.560 Beiträge
 
Delphi 12 Athens
 
#4

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 21:46
Ja, musste es abändern...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 21:59
Ja, musste es abändern...
Das ist was ich vermisse das ihr euch bei anderen bedient aber die Änderungen (Fehlerbehebung) hier nicht hochladen tut damit andere auch davon profitieren können
Die müssen jetzt raten, was geändert wurde.
Ich brauche es nicht aber vielleicht andere!

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.560 Beiträge
 
Delphi 12 Athens
 
#6

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 22:03
@Eiweiss: KodeZwerg hat es doch in Beitrag 4 beschrieben, was er (und dann auch ich) geändert hat...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 22:04
@Eiweiss: KodeZwerg hat es doch in Beitrag 4 beschrieben, was er (und dann auch ich) geändert hat...
Nur bei ihm hat es ja nicht funktioniert
Zitat:
es hat noch Probleme und Speicherleks, aber die Grundsubstanz funktioniert.
gruss
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 22:06
Ich schrieb doch a) welche Datei und b) welche Zeile

Im Anhang für Leute die mich nicht Verstanden haben das komplette Projekt so wie es bei mir gerade läuft.

Eventuell EurekaLog auskommentieren, das hab ich nachträglich aktiviert.

Danke Harry, hast Du ne Antwort WARUM man es ändern muss? Weil in nem anderen Thread mir wiederholt auf ohne A/W und PChar als das einzig Wahre. Worin liegt da nun der Fehler?
Angehängte Dateien
Dateityp: 7z bmp2avi.7z (62,5 KB, 8x aufgerufen)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 22:10
Zitat:
Ich schrieb doch a) welche Datei und b) welche Zeile
Nun ja Papier (oder hier Beiträge sind geduldig)..

Dein Beitrag!
Zitat:
es hat noch Probleme und Speicherleks, aber die Grundsubstanz funktioniert.
Nun in dem fall sind die Fehler nicht behoben.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.560 Beiträge
 
Delphi 12 Athens
 
#10

AW: Bitmaps als AVI-Vido / MPEG-Video speichern

  Alt 4. Okt 2018, 22:45
Ich schrieb doch a) welche Datei und b) welche Zeile

Im Anhang für Leute die mich nicht Verstanden haben das komplette Projekt so wie es bei mir gerade läuft.

Eventuell EurekaLog auskommentieren, das hab ich nachträglich aktiviert.

Danke Harry, hast Du ne Antwort WARUM man es ändern muss? Weil in nem anderen Thread mir wiederholt auf ohne A/W und PChar als das einzig Wahre. Worin liegt da nun der Fehler?
Ja, in dem Fall ist es klar:

In der VFW.pas unit gibt es ganz am Anfang ein

{$UNDEF UNICODE} und weiter unten ein

Delphi-Quellcode:
{$IFDEF UNICODE}
function AVIFileOpen(var ppfile: IAVIFile; szFile: LPCWSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;
{$ELSE}
function AVIFileOpen(var ppfile: IAVIFile; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;
{$ENDIF}
daher wird in Deinem Unicode-Delphi mit "AVIFileOpen" die untere Funktion aufgerufen, wo dann in dem Ursprungscode ein Widestring an eine Funktion übergeben wird, die einen Pointer of Ansistring erwartet.

Unter einem Delphi 2007 müsste der Code daher direkt compilieren.

Man hätte alternativ auch

if AVIFileOpen(pfile, PAnsichar(AnsiString(WorkFile)), OF_WRITE or OF_CREATE, nil) <> AVIERR_OK then machen können, das kompiliert und hätte mit normalen Dateinamen auch funktioniert, aber eben nicht mit Unicode-Dateinamen.

Insofern ist Deine Lösung korrekt hier.

Evtl. könnte aber noch besser sein, das Undef Unicode zu entfernen (dann stimmt der Original-Code wieder hier, nur unter TAVICreator muss man

asi: TAVIStreamInfoA; in asi: TAVIStreamInfoW; ändern. Vielleicht funktionierts dann insgesamt besser, aber das war jetzt nur ein kurzer Blick drauf, muss ich mir noch genauer ansehen...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz