Rozdelenie mp3   zodpovězená otázka

VB.NET, I/O operace

Dobrý večer,

vedel by mi niekto povedať, či existuje vo VB .net možnosť rozdeliť mp3 subor na niekoľko častí? Ak áno, ako?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Stačilo by mi v AxWindowsMediaPlayer načítať pozície a a spúšťať jednotlivé časti. Start(t1(i)) Stop(t2(i))

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobý večer,potreboval som niečo také ako uvedený kód. Funguje, ale potrebuje učesať.

Public Class Form1
    Dim cast(100) As String
    Dim i As Integer
    'Spusti delene MP3 a vycisti combobox
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.ComboBox1.Items.Clear()
        i = 0
        cast(0) = 0
        AxWindowsMediaPlayer1.URL = "C:\test.mp3"
    End Sub
    'nastavuje jednotlive body rozdelenia
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        i += 1
        cast(i) = AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
        Me.ComboBox1.Items.Add("cast" & i)
    End Sub
    'Ukonci prehravanie a prida posledny bod rozdelenia
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        AxWindowsMediaPlayer1.Ctlcontrols.pause()
        Me.ComboBox1.Items.Add("cast" & i + 1)
    End Sub
    'vyberie cast ktoru chcete prehrat
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        Me.Timer1.Enabled = True
        AxWindowsMediaPlayer1.Ctlcontrols.pause()
        AxWindowsMediaPlayer1.Ctlcontrols.currentPosition = cast(Me.ComboBox1.SelectedIndex)
        AxWindowsMediaPlayer1.Ctlcontrols.play()
    End Sub
    'kontroluje, ci nebol dosiahnuty nasledujuci bod rozdelenia a zastavi pri poslednej polozke prehrava do konca
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If CStr(AxWindowsMediaPlayer1.Ctlcontrols.currentPosition) >= cast(Me.ComboBox1.SelectedIndex + 1) And Me.ComboBox1.SelectedIndex + 1 < ComboBox1.Items.Count Then
            AxWindowsMediaPlayer1.Ctlcontrols.pause()
            Me.Timer1.Enabled = False
        End If
    End Sub
End Class

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

S AxWindowsMediaPlayerem nemám praktické zkušenosti, ale s DirectX.AudioVideoPlayback to jde celkem jednoduše (dá se přímo nastavit i konec přehrávání):

Imports Microsoft.DirectX.AudioVideoPlayback

Public Class Form1
    Dim WithEvents aud As Audio


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        aud = New Audio("D:\dokumenty\tata\obec\infokanal\data\hudba\L Stopa 4.mp3")

        ' čas začátku přehrávání (v s)
        Dim start As Double = 5.5
        ' délka přehrávaného úseku (v s)
        Dim delka As Double = 7.25

        ' nastaví začáteční bod přehrávání
        aud.SeekCurrentPosition(10000000 * start, SeekPositionFlags.AbsolutePositioning)
        '' stejný efekt možno získat:
        'aud.CurrentPosition = start

        ' nastaví konec skladby
        aud.SeekStopPosition(10000000 * delka, SeekPositionFlags.IncrementalPositioning)

        '' možno použít i absolutního vyjádření:
        '' čas konce skladby (v s)
        'Dim konec As Double = 12.75
        'aud.SeekStopPosition(10000000 * konec, SeekPositionFlags.AbsolutePositioning)

        ' pouze kontrola:
        MsgBox("Čas začátku: " & aud.CurrentPosition & " s" & vbCrLf & "Čas konce : " & aud.StopPosition / 10000000 & " s")

        ' spustíme přehrávání
        aud.Play()

    End Sub

  

End Class

Do referencí je zapotřebí, samozřejmě dát DirectX a directX.audioVideoPlayback.

Uvedený příklad je pouze funkční demo, jak si nastavíte hodnoty "start" a "delka" resp, "konec" je plně na Vašich potřebách (buď můžete zadat přímo časové údaje - jako v ukázce, nebo si skladbu můžete nejprve "rozstříhat" Vaším postupem a jednotlivé časy si odchytit a uložit.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Ďakujem za odpoveď. Príjemný večer!

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback