Laden...

Video speichern ohne (Pfad-)Dialog

Erstellt von Scydo vor 2 Jahren Letzter Beitrag vor 2 Jahren 285 Views
S
Scydo Themenstarter:in
3 Beiträge seit 2022
vor 2 Jahren
Video speichern ohne (Pfad-)Dialog

Hallo zusammen,

ich arbeite an einem Projekt bei dem ich ein Videostream anzeigen lasse. Diesen Stream möchte ich auch als AVI speichern.

Das ganze verwenden IDS uEye Hardware und die Codebeispiele davon funktionieren auch.

Nun ist in dem Beispiel-Code SaveFileDialog in Verwendung.


private void toolStripButtonVideoRec_Click(object sender, EventArgs e)
{
	uEye.Defines.Status statusRet = uEye.Defines.Status.SUCCESS;

	if (toolStripButtonVideoRec.Checked)
	{
        	SaveFileDialog fileDialog = new SaveFileDialog();
                fileDialog.Filter = "Video file (*.avi)|*.avi";
                fileDialog.DefaultExt = "avi";
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {
                    statusRet = m_Camera.Video.Start(fileDialog.FileName);
                    if (statusRet != uEye.Defines.Status.SUCCESS)
                    {
                        MessageBox.Show("Could not start video recording");
                        toolStripButtonVideoRec.Checked = false;
                    }
                }
                else
                {
                    toolStripButtonVideoRec.Checked = false;
                }
	}
        else
        {
        	statusRet = m_Camera.Video.Stop();
        }
}

Das funktioniert auch soweit gut. Doch würde ich gerne den Pfad vorgeben und das Speichern ohne den Dialog ausführen.

Kann man das

fileDialog.ShowDialog() == DialogResult.OK

automatisch bestätigen sprich auf OK setzen?

m_Camera.Video.Start(fileDialog.FileName);

benötigt einen String bzw. den Dateinamen und füllt die Datei im Hintergrund. Nach

m_Camera.Video.Stop();

wird die Datei finalisiert.

Mit

fileDialog.InitialDirectory = stringpath

kann ich den Pfad zwar vorher angeben aber ich muss trotzdem den Dialog bestätigen. Am liebsten wäre mir, wenn ich den Status für den Dialog vorher setzen kann in z.B. einer Variable und der dann anhand dessen ausgeführt wird.

Grüße
Scydo

Vielen Dank vorab und bei Unklarheiten einfach nachfragen.

4.939 Beiträge seit 2008
vor 2 Jahren

Hallo und willkommen,

dann verwende den ganzen FileSaveDialog nicht und gebe den kompletten Dateipfad direkt (bzw. als Konstante) bei m_Camera.Video.Start(...); an.
Falls du Pfad und Dateiname getrennt im Code hast, dann benutze Path.Cmbine(path, filename).

S
Scydo Themenstarter:in
3 Beiträge seit 2022
vor 2 Jahren

Das funktioniert leider nicht, ich kann m_Camera.Video.Start(...) leider nur einen String übergeben der den Dateinamen beinhalten muss.

Path.Combine(path, filename) ist zwar ein String aber ist halt nicht nur der Dateiname.

Das Problem beim Weglassen von FileSaveDialog ist, dass ich nicht weiß wie ich dann m_Camera.Video.Start(...) den Pfad übergeben kann.

16.835 Beiträge seit 2008
vor 2 Jahren

Wenn das so ist, dann übergib halt nur den FileName, wo ist denn das Problem?

Nen bisschen Docs musst schon lesen, wenn Du Software entwickeln willst 😉Path Klasse (System.IO)
Path.GetFileName Methode (System.IO)

Das Problem beim Weglassen von FileSaveDialog ist, dass ich nicht weiß wie ich dann m_Camera.Video.Start(...) den Pfad übergeben kann.

Musst halt festlegen, zB in ner Config oder Random erzeugen.
Niemand kennt hier Deine Anforderungen und Deine Situation - musst also Dein Problem genauer beschreiben (siehe [Hinweis] Wie poste ich richtig?) oder halt selbst was überlegen -deswegen heisst der Job ja Entwickler 🙂

4.939 Beiträge seit 2008
vor 2 Jahren

In fileDialog.FileName steht auch der komplette Dateipfad (d.h. Pfad, Dateiname und Erweiterung) drin, nicht nur der Dateiname.
Und den übergibst du dann stattdessen direkt als (zusammengesetzten) String.

S
Scydo Themenstarter:in
3 Beiträge seit 2022
vor 2 Jahren

DANKE! Ich glaube nicht das mir ein so unfassbar dummer Fehler gelungen ist...

ich habe genau das schon probiert gehabt und hatte einen Pfad angegeben jedoch wurde die Datei einfach nicht erstellt...
Ja kein wunder wenn der Pfad einen Schreibfehler beinhaltet und der Pfad somit gar nicht exisitert...

Das ist mir gerade super peinlich.

Habe den Fehler entdeckt, als ich nun den Inhalt von Pfad.Combine ausgegeben habe als MessageBox und den mit fileDialog.FileName verglichen habe.

Manchmal sieht man den wald vor lauter bäumen nicht mehr...

Nochmals Danke für die HILFE!

Pfad.Combine nutzte ich vorher gar nicht, werde ich jetzt aber.