ScreenRecorder-Problem: JPEG's (oder PNG's) zu AVI schneiden

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von StarGate01.

    ScreenRecorder-Problem: JPEG's (oder PNG's) zu AVI schneiden

    Hi

    Ich möchte gerne einen "ScreenRecorder" programmieren. Diesen Teil hab ich schon:

    -- Form1 --



    VB.NET-Quellcode

    1. Public Class Form1
    2. Declare Function GetAsyncKeyState Lib "User32" (ByVal vkKey As Integer) As Short
    3. Private Sub RecScreem_Tick(sender As System.Object, e As System.EventArgs) Handles RecScreen.Tick
    4. Dim ScreenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
    5. Dim BMP As New Bitmap(My.Computer.Screen.Bounds.Height, My.Computer.Screen.Bounds.Width)
    6. Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(BMP)
    7. g.CopyFromScreen(New Point(0, 0), New Point(0, 0), ScreenSize)
    8. Dim DirectoryA As String = FileDir.Text
    9. Dim Frame1 As String = FileNum.Text
    10. Dim img1 As String = FileTyp.Text
    11. FileNum.Text = FileNum.Text + 1
    12. BMP.Save(DirectoryA & Frame1 & img1)
    13. End Sub
    14. Private Sub PlayVideo_Tick(sender As System.Object, e As System.EventArgs) Handles PlayVideo.Tick
    15. Dim DirectoryA As String = FileDir.Text
    16. Dim Frame0 As String = FileNum.Text
    17. Dim img0 As String = FileTyp.Text
    18. FileNum.Text = FileNum.Text + 1
    19. Try
    20. VideoScreen.VideoScreenRec.Load(DirectoryA & Frame0 & img0)
    21. Catch ex As Exception
    22. PlayVideo.Enabled = False
    23. MsgBox("Fehler: " & ex.Message)
    24. End Try
    25. End Sub
    26. Private Sub Rec_Click(sender As System.Object, e As System.EventArgs) Handles Rec.Click
    27. MsgBox("Um ein Video zu machen wird dieses Programm zunächst unsichtbar gemacht." & vbCrLf & _
    28. "" & vbCrLf & _
    29. "Drücke F10 um es wieder sichtbar zu machen." & vbCrLf & _
    30. "Drücke F9 um es unsichtbar zu machen." & vbCrLf & _
    31. "Drücke F11 um es sichtbar zu machen und um die Aufnahme zu stoppen")
    32. Me.Opacity = 0.0001
    33. RecScreen.Enabled = True
    34. FileNum.Text = "0"
    35. End Sub
    36. Private Sub Ply_Click(sender As System.Object, e As System.EventArgs) Handles Ply.Click
    37. MsgBox("Für die Vorschau wird das Programm unsichtbar gemacht schließe die Vorschau um es wieder sichtbar zu machen!" & vbCrLf & _
    38. "Außerdem kann es sein das während der Vorschau das Bild etwas in die Breite gezogen ist das sollte sich aber im richtigen Video ändern")
    39. Try
    40. If PlayVideo.Enabled = True Then
    41. MsgBox("Stoppe die Aufnahme und versuche es nochmal")
    42. Else
    43. VideoScreen.Show()
    44. PlayVideo.Enabled = True
    45. FileNum.Text = "0"
    46. Me.Hide()
    47. End If
    48. Catch ex As Exception
    49. MsgBox("Ende!")
    50. End Try
    51. End Sub
    52. Private Sub StpV_Click(sender As System.Object, e As System.EventArgs) Handles StpV.Click
    53. VideoScreen.Hide()
    54. PlayVideo.Enabled = False
    55. End Sub
    56. Private Sub FileLocation_Click(sender As System.Object, e As System.EventArgs) Handles FileLocation.Click
    57. FolderBrowserDialog1.ShowDialog()
    58. FileDir.Text = FolderBrowserDialog1.SelectedPath & "\"
    59. End Sub
    60. Private Sub StpR_Click(sender As System.Object, e As System.EventArgs) Handles StpR.Click
    61. RecScreen.Enabled = False
    62. End Sub
    63. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    64. If GetAsyncKeyState(Keys.F10) Then
    65. Me.Opacity = 1
    66. End If
    67. If GetAsyncKeyState(Keys.F9) Then
    68. Me.Opacity = 0.0001
    69. End If
    70. If GetAsyncKeyState(Keys.F11) Then
    71. Me.Opacity = 1
    72. RecScreen.Enabled = False
    73. End If
    74. End Sub
    75. Private Sub int10_Click(sender As System.Object, e As System.EventArgs)
    76. PlayVideo.Interval = txtInterval.Text
    77. RecScreen.Interval = txtInterval.Text
    78. End Sub
    79. End Class


    -- Form2 --

    VB.NET-Quellcode

    1. Public Class VideoScreen
    2. Private Sub VideoScreen_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosingForm1.Show() End SubEnd Class


    So wie ihr wahrscheinlich gesehen habt ist die erste Form das (Haupt)-Programm was aufnimmst und abspielen kann und die zweite Form ist die Vorschau.

    Jetzt kommt mein Problem:

    Wie kann ich die einzelnen PNG-Bilder zu einer AVI-Datei zusammenfügen?

    Vielen Dank für Antworten :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PhoenixBlaster“ ()

    Willkommen im Forum. :thumbup:
    Hier musst Du ein Gefühl für die Fragestellung an Frau Google finden, probier mal .net image to movie.
    Da sehen einige Links vielversprechend aus.
    Ich glaube, hier im Forum lief da auch mal ein Thread zu, allerdings ist die Suchfunktion des FDorums nicht so tolerant wie die von Frau Google.
    Dann wäre es schön, wenn Du um solch langen Code einen Expander legst.
    Also: Code mit [VB]-Tags markieren und auf den [+]-Tag neben [VB] klicken.
    Würdest Du bitte Deinen 1. Post entsprechend editieren?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    wenn Du um solch langen Code einen Expander legst.
    Das sieht so aus:
    Dies ist ein Expander für langen Code

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. For i = 1 To 3
    3. MessageBox.Show(i.ToString)
    4. Next
    5. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    PhoenixBlaster schrieb:

    Also
    Du sollst Deinen Code in einem Post hier, falls er etwas länger ausfällt, in einen Expander packen, das sieht dann so aus wie in meinem Beispiel, wo zufällig eine ForSchleife drin vorkommt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    PhoenixBlaster schrieb:

    wie man sieht
    Lernresistent?

    RodFromGermany schrieb:

    in einen Expander packen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!


    Expander fügt man so ein:

    Spoiler anzeigen
    Hier der Inhalt des Expanders

    Oder mit Titel
    Hier der Inhalt des Expanders
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils