| |
VB.NET - Ein- und UmsteigerRe: MP3 Zeiten ändern | | | Autor: Volker Bunge | Datum: 26.12.18 10:29 |
| Hallo Kuno60,
vielen Dank für die Antwort.
So, haben Deinen Code mal getestet. Grundsätzlich funktioniert er, aber leider nur, wenn ich ihn im Einzelschrittmodus laufen lassen.
Hier mal meine Modifikation (ist zwar noch nicht optimal, funktioniert aber mit F8 tadellos. (Endlösung siehte weiter unten).
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) _
Handles Button3.Click
Spielzeit_ermitteln("Datei1.mp3")
Spielzeit_ermitteln("Datei2.mp3")
End Sub
Sub Spielzeit_ermitteln(datei As String)
Medi.Open(New Uri(datei))
' Application.DoEvents()
Dim erg As String
If Medi.NaturalDuration.HasTimeSpan = True Then
erg = Medi.NaturalDuration.TimeSpan.Hours & ":" & _
Medi.NaturalDuration.TimeSpan.Minutes & ":" & _
Medi.NaturalDuration.TimeSpan.Seconds
MsgBox(erg)
End If
Medi.Close()
End Sub Dann habe ich gedacht, ach mach den Code mal gleich so, wie er eigentlich sein soll. Hier das Ergebnis
#Region "Spielzeit von MP3-Dateien ermitteln"
' Verweise auf .net PresentationCore und .net WindowsBase hinzufügen!
' Imports System.Windows.Media (vor Public Class) muss auch noch eingefügt
' werden
Private WithEvents Medi As New MediaPlayer
Function Spielzeit_ermitteln(datei As String) As String
' Öffnet 'intern' die übergebene Datei
Medi.Open(New Uri(datei))
' Hierdurch habe ich die Lösung gefunden. Vorher war die Datei wohl
' noch nicht vollständig geladen, aber das Programm war schon 'fertig'
' und daher war das Ergebnis immer leer
'MsgBox(Medi.BufferingProgress)
'MsgBox("Weiter")
'MsgBox(Medi.BufferingProgress)
' Habe deshalb diese Do While Schleife eingebaut
' Standardrückgabewert festlegen
Spielzeit_ermitteln = ""
' Die Zeit solange ermitteln, bis der BufferingProgress = 1.0 ist und
' die Variable Spielzeit_ermitteln <> "" ist
' Jetzt wird halt solange 'gewartet', bis die Datei vollständig geladen
' wurde und die Spieldauer richtig ermittelt werden kann.
Do
' Hier wird geprüft, ob die Zeitangabe vorhanden ist
If Medi.NaturalDuration.HasTimeSpan = True Then
' Jetzt wird die Zeitdarstellung erstellt und über den
' Funktionsnamen zurückgeliefert.
Spielzeit_ermitteln = Format( _
Medi.NaturalDuration.TimeSpan.Hours, "00") & ":" & Format( _
Medi.NaturalDuration.TimeSpan.Minutes, "00") & ":" & Format( _
Medi.NaturalDuration.TimeSpan.Seconds, "00")
End If
Loop While Val(Medi.BufferingProgress) = 0 Or Spielzeit_ermitteln = ""
' Zum Schluss noch die Datei wieder schließen. Fertig
Medi.Close()
End Function
#End Region So wie im Code beschrieben, bin ich mit BufferingProgress und der Do While Schleife an mein Ziel angekommen.
Werde jetzt mal meine alte Programmierung gegen diese hier tauschen und sehen was passiert.
Vielen Dank für den Denkanstoss, hoffe dass somit mein Problem behoben ist.
Volker
Beitrag wurde zuletzt am 26.12.18 um 10:35:43 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats März 2024 Dieter OtterUTF-8 Konvertierung von Dateien und StringsVB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|