vlc bleibt kurzfristig stehen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
TommiB
User
Beiträge: 41
Registriert: Montag 9. Februar 2015, 18:15

Hallo Leute,

ich habe jetzt endlich hinbekommen, daß der nginx Streamserver auf diesen Rechner läuft.
Mittels OBS streame ich von einem zweiten Rechner auf den Streamserver.
Dieses kann ich mittels eines HTML-Statistik-Protokolls und einen HTML-Flash-Players auch sehen.

Dieses Script soll den Stream anzeigen.

Code: Alles auswählen

import os, sys, vlc, pygame
from time import sleep
from pygame.locals import *
wx=100
wy=100
wb=708
wh=454
os.environ["SDL_VIDEO_WINDOW_POS"] ="%d,%d" % (wx,wy)
pygame.init()
screen = pygame.display.set_mode((wb,wh),pygame.NOFRAME)

vlcInstance = vlc.Instance()
media = vlcInstance.media_new('rtmp://127.0.0.1/live/atv')
player = vlcInstance.media_player_new()
win_id = pygame.display.get_wm_info()['window']

player.set_hwnd(win_id)
player.set_media(media)

pygame.mixer.quit()

run=1

player.play()

while run==1:
         for event in pygame.event.get():
            if event.type==KEYDOWN:
                player.stop()
                pygame.quit()
                run=0
        sleep(0.5)
        print(player.video_get_size())
Nun bleibt der mein simple Player unvermittelt stehen und spielt wieder kurz an... usw....
Im HTML-Flash-Player sehe ich jedoch, dass der Stream flüssig läuft.

Hat jemand von Euch eine Idee woran das liegen könnte?

Gruß Tommi
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Beim Anlegen der Intanz kannst du Commandline-Optionen mitgeben, versuch mal die Cache-Größe zu erhöhen.

Code: Alles auswählen

vlc.Instance('--live-caching 32000')
Ich bin mir nicht sicher welchen Parameter du genau brauchst. Googlen oder einfach ausprobieren ;)

Code: Alles auswählen

╰─$ vlc --longhelp --advanced -H | grep cach
VLC media player 2.2.1 Terry Pratchett (Weatherwax) (revision 2.2.1-0-ga425c42)
      --sout-rtp-caching <integer [-2147483648 .. 2147483647]> 
          Default caching value for outbound RTP streams. This value should be
          high values, you will need to raise caching values.
          caching at input.
          how Windows Media Player will cache streamed content. Set to
      --sout-udp-caching <integer [-2147483648 .. 2147483647]> 
          Default caching value for outbound UDP streams. This value should be
      --sout-livehttp-caching, --no-sout-livehttp-caching 
                                 Allow cache (default disabled)
      --file-caching <integer [0 .. 60000]> 
                                 File caching (ms)
      --live-caching <integer [0 .. 60000]> 
                                 Live capture caching (ms)
      --disc-caching <integer [0 .. 60000]> 
                                 Disc caching (ms)
      --network-caching <integer [0 .. 60000]> 
                                 Network caching (ms)
      --sout-mux-caching <integer [-2147483648 .. 2147483647]> 
                                 Stream output muxer caching (ms)
          This allow you to configure the initial caching amount for stream
the more they change the more they stay the same
TommiB
User
Beiträge: 41
Registriert: Montag 9. Februar 2015, 18:15

Hallo Dav1d,
danke für die Antwort.

Ich glaube es liegt hier am Python. Hatte 3.5 installiert...
Das könnte sein, daß das vlc damit nicht flüssig läuft. Bin mir gar nicht sicher ob das vlc Py3.5 unterstützt.....

Es bleibt das Python-Script auch kurzzeitig stehen, lasse parallel mir den state von vlc ausgeben..
Da passiert derweil auch nichts mehr....

Hmm.. Da muss ich mal überlegen, ob ich mir eine früher Version installiere und damit weiter probiere.

Alles ein wenig selbstgemachtes Leid - glaube ich....

Gruß Tommi
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Python-Version sollte keinen unterschied machen, wenn das Binding mit Python 3 läuft ist alles gut. Wenn du durch die vlc.py schaust, siehst du dass alles nur Ctypes Code für libVLC ist.

Bleibt das Skript stehen oder nur der state vom VLC ändert sich kurzzeitig nicht?
the more they change the more they stay the same
TommiB
User
Beiträge: 41
Registriert: Montag 9. Februar 2015, 18:15

Ich berichtige mich....
Es bleibt nur der Stream stehen... da immer der gleiche state ausgegeben wird, konnte ich das nach mehreren Minuten nicht mehr erkennen.
Der Stream steht zum Teil 10 - 20 Sekunden....

Habe den Path mal direkt im VLC Player eingegeben....
Ist das gleiche.... Da bleibt der Stream auch stehen...

Im
TommiB
User
Beiträge: 41
Registriert: Montag 9. Februar 2015, 18:15

Es könnte natürlich auch sein, dass VLC nicht mit dem Codec von OBS klar kommt.
Dass es daher kommt.
Ich teste morgen weiter...

Erst mal danke Dav1d für die Antworten.

Gruß Tommi
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Eventuell an den VLC IRC-Channel bzw. das Forum wenden. Es ist zwar nicht viel los, aber die Leute die da sind kennen sich aus und helfen gerne.
the more they change the more they stay the same
TommiB
User
Beiträge: 41
Registriert: Montag 9. Februar 2015, 18:15

Ja, ich habe heute morgen schon eine Menge im Forum von VLC gelesen.
Da haben Viele Probleme mit RTMP Streams.
Ich muss mir wohl oder übel was anderes ausdenken, um einen RTMP Stream darstellen zu lassen.
:(

Gruß Tommi
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Eventuell libmpv? Dazu musst du eventuell die C-Bindings machen, ich habe nur python-mpv gefunden. Allerdings ist das mit CFFI nicht so viel Aufwand.

Du kannst dann entweder das Fenster einbetten, wie VLC das macht, oder opengl-cb nutzen um das Ganze auf einem OpenGL context abzubilden.
the more they change the more they stay the same
Antworten