Alfie: loop attribute in <video> element (Chrome)

problematische Seite

Hallo,

ich suche Lösung (möglicherweise ohne JavaScript). Mit

<video id="moonvideo" width="880" preload="auto" controls autoplay loop muted>
  <source src="Video/IMGP0567.mp4" type="video/mp4">
  <p>Sorry, your browser doesn't support embedded videos in this format.</p>
</video>

wird das Video zwar automatisch gestartet, aber nur 1× wiedergegeben. Die Buttons für Play/Pause haben keinen Effekt. D.h. auch „manuell” kann das Video nicht nochmal gestartet werden.

PS: Kein Problem in FireFox, Opera, SeaMonkey, Edge.

  1. problematische Seite

    Hallo Alfie,

    PS: Kein Problem in FireFox, Opera, SeaMonkey, Edge.

    1. Welcher Edge? Edge-Edge oder Chromium-Edge?
    2. Wo ist es ein Problem? Das loop Attribut sollte gut unterstützt sein

    Rolf

    --
    sumpsi - posui - obstruxi
    1. problematische Seite

      Hallo Rolf,

      PS: Kein Problem in FireFox, Opera, SeaMonkey, Edge.

      1. Welcher Edge? Edge-Edge oder Chromium-Edge?

      Muss mich korrigieren. Edge v84.0.522.50 (64-Bit) auf Win7/10 und Opera v69.0.3686.95 auch nicht.

      1. Wo ist es ein Problem? Das loop Attribut sollte gut unterstützt sein

      In der Theorie schon. Auch lt. der W3C-Spezifikation. Praktisch aber eben nicht; siehe meine HTML5-valide (!) Testseite…

      1. problematische Seite

        Hallo Alfie,

        Edge v84.0.522.50 (64-Bit) auf Win7/10 und Opera v69.0.3686.95 auch nicht.

        Das sind alles Chromium Browser.

        Passend dazu fand ich diesen stackoverflow Thread mit einem vorgeschlagenen Workaround. Angeblich erwartet Chrome vom Server, das ein bestimmter Request Type unterstützt wird, sonst loopt er nicht.

        https://stackoverflow.com/questions/8088364/html5-video-will-not-loop

        Rolf

        --
        sumpsi - posui - obstruxi
        1. problematische Seite

          Hallo Rolf,

          Edge v84.0.522.50 (64-Bit) auf Win7/10 und Opera v69.0.3686.95 auch nicht.

          Das sind alles Chromium Browser.

          T’schuidigung. ;-)

          […] Angeblich erwartet Chrome vom Server, das ein bestimmter Request Type unterstützt wird, sonst loopt er nicht. https://stackoverflow.com/questions/8088364/html5-video-will-not-loop

          Ja, danke, diesen Faden hatte ich auch schon in den Fingern. Wieauchimmer, dieser Teil

          … works if the video file was served up by a server that understands partial content requests. i.e. the server needs to honor requests that contain a "Range" header with a 206 "Partial Content" response.

          erschließt sich mir nicht. Wenn ich mir den Header meiner Testseite ansehe, ist das ein stinknormaler 200er. Versuch am Anfang der Seite

          <?php header("Location: /dark.htm",TRUE,206); ?>
          

          liefert mir wie erwartet HTTP/1.1 206 Partial Content, Chrome ist’s egal.

          Verwirrend.

          1. problematische Seite

            Hallo,

            […] Angeblich erwartet Chrome vom Server, das ein bestimmter Request Type unterstützt wird, sonst loopt er nicht. https://stackoverflow.com/questions/8088364/html5-video-will-not-loop

            Ja, danke, diesen Faden hatte ich auch schon in den Fingern. Wieauchimmer, dieser Teil

            … works if the video file was served up by a server that understands partial content requests. i.e. the server needs to honor requests that contain a "Range" header with a 206 "Partial Content" response.

            erschließt sich mir nicht. Wenn ich mir den Header meiner Testseite ansehe, ist das ein stinknormaler 200er. Versuch am Anfang der Seite

            <?php header("Location: /dark.htm",TRUE,206); ?>
            

            liefert mir wie erwartet HTTP/1.1 206 Partial Content, Chrome ist’s egal.

            ich verstehe nicht, warum du hier einen Location-Header vergewaltigst, um einen Status 206 zu erzwingen. Zumal das an der völlig falschen Stelle ist: Es geht nicht um den Abrufstatus des HTML-Dokuments, sondern die Video-Ressource muss partiell, also stückweise abrufbar sein.

            Normalerweise wird eine HTTP-Ressource vom Client angefordert und vom Server mit dem Statuscode 200 in einem Rutsch geliefert. Bei gestreamten Medien kann es aber praktisch sein, wenn der Client gezielt einzelne Fragmente anfordern kann ("Gib mir mal das Stück von Byte-Offset 27833400 bis 29101332"). Und wenn der Server das versteht, liefert er genau diesen Ausschnitt - und zwar mit dem Status 206.

            Verwirrend.

            Verwirrend finde ich vor allem, warum die verchromten Browser den Looping von dieser Fähigkeit des Servers abhängig machen.

            Live long and pros healthy,
             Martin

            --
            Home is where my beer is.
            1. problematische Seite

              Hallo Martin,

              der Request auf die IMGP0567.mp4 Datei, der mit Range Header durchgeführt wird, liefert aber auch HTTP 206. Der Stackoverflow-Beitrag ist von 2011 und möglicherweise ist das heute nicht mehr der Grund.

              Ich habe auch noch gelesen, dass Chrome die Autoplay-Policy geändert habe - aber ein Autoplay findet ja statt. Nur nicht der Loop. Es gibt wohl Startup-Schalter für Chrome, die das deaktivieren, aber

              Ein Gerücht, dass es an einem Antivirus-Plugin liegen könnte, kann ich für mich nicht bestätigen. Ich hab meins abgeschaltet - keine Änderung.

              Ich bin ratlos.

              Rolf

              --
              sumpsi - posui - obstruxi
              1. problematische Seite

                Hallo Rolf,

                der Request auf die IMGP0567.mp4 Datei, der mit Range Header durchgeführt wird, liefert aber auch HTTP 206.

                Wenn ich die Datei direkt aufrufe, wird’s noch spannender. In allen Brausen (auuser IE, der einen externe Player öffnet) läuft das Video 1× durch. Im Chrome/Opera/Edge sind die Buttons ohne Funktion d.h., ich kann das teil nicht nocheinmal starten. Seltsam.

                Ich habe auch noch gelesen, dass Chrome die Autoplay-Policy geändert habe - aber ein Autoplay findet ja statt.

                Korrekt, da muted.

                Es gibt wohl Startup-Schalter für Chrome, die das deaktivieren,…

                Äh, wie/wo/welche?

                Ein Gerücht, dass es an einem Antivirus-Plugin liegen könnte, kann ich für mich nicht bestätigen. Ich hab meins abgeschaltet - keine Änderung.

                Jepp.

                Ich bin ratlos.

                Welcome to the club.

            2. problematische Seite

              Hallo Martin,

              ich verstehe nicht, warum du hier einen Location-Header vergewaltigst, um einen Status 206 zu erzwingen. Zumal das an der völlig falschen Stelle ist: Es geht nicht um den Abrufstatus des HTML-Dokuments, sondern die Video-Ressource muss partiell, also stückweise abrufbar sein.

              Das ist meiner Unkenntnis / meinem Unvermögen geschuldet, HTTP 206 für eine bestimmte Resource innerhalb des Dokuments zu setzen. Bisher kannte ich nur das Ändern am Anfang für’s gesamte. Wie gesagt, didn’t know better.

              Verwirrend finde ich vor allem, warum die verchromten Browser den Looping von dieser Fähigkeit des Servers abhängig machen.

              Live long and pros healthy,

              Dif-tor heh smusma 🖖

  2. problematische Seite

    Hi there,

    ich suche Lösung (möglicherweise ohne JavaScript). Mit

    <video id="moonvideo" width="880" preload="auto" controls autoplay loop muted>
      <source src="Video/IMGP0567.mp4" type="video/mp4">
      <p>Sorry, your browser doesn't support embedded videos in this format.</p>
    </video>
    
    

    wird das Video zwar automatisch gestartet, aber nur 1× wiedergegeben.

    Also ich hab das jetzt kurz durchgechecked, das Problem liegt eindeutig an Deinen Videos. Deine Videos werden bei mir (neuester Chrome, Linux Mint 19.3) einfach nicht wiederholt, während andere (ich hab's mit einigen probiert) mp4-Dateien (also H264-Codec wie Deine) problemlos abgespielt und wiederholt werden. Deine Videos wurden offenbar irgendwie mit dem VLC bearbeitet, vielleicht ist da irgendetwas passiert...

    1. problematische Seite

      Hallo,

      Also ich hab das jetzt kurz durchgechecked, das Problem liegt eindeutig an Deinen Videos.

      ich habe jetzt nur IMGP0567.mp4 genauer untersucht. Und ja, da ist etwas faul. Zunächst mal fällt auf, dass ffmpeg eine Framerate von 25.29fps angibt. Und dann erzählt er noch das hier:

      [mp4 @ 0xca1b00] Non-monotonous DTS in output stream 0:0; previous: 0, current: 0; changing to 1. This may result in incorrect timestamps in the output file.
      

      Da ist also irgendwie die Timeline kaputt. Es sieht so aus, als ob nach 85 intakten Frames noch ein defekter kommt, und der bringt den in Chrome-basierten Browsern verbauten Video-Player so aus dem Tritt, dass er an der Stelle einfach hängenbleibt.

      Dieses eine zusätzliche Einzelbild mit dem kaputten DTS führt wohl auch dazu, dass ffmpeg eine Framerate von 25.29 errechnet. Schneidet man das ab, ist der Rest fehlerfrei und die Framerate beträgt glatte 25fps.

      Live long and pros healthy,
       Martin

      --
      Home is where my beer is.
      1. problematische Seite

        Hallo Martin,

        ich habe jetzt nur IMGP0567.mp4 genauer untersucht. […] Da ist also irgendwie die Timeline kaputt. Es sieht so aus, als ob nach 86 intakten Frames noch ein defekter kommt, und der bringt den in Chrome-basierten Browsern verbauten Video-Player so aus dem Tritt, dass er an der Stelle einfach hängenbleibt.

        Dieses eine zusätzliche Einzelbild mit dem kaputten DTS führt wohl auch dazu, dass ffmpeg eine Framerate von 25.29 errechnet. Schneidet man das ab, ist der Rest fehlerfrei und die Framerate beträgt glatte 25fps.

        Wie klawischnigg richtig vermutet hat, war am Ende VLC zu Gange. Das Problem entstand schon vorher in avidemux. Die Skalierung in VLC von 1920×1080 auf 880×496 war unschön. Also in avidemux (wo ich auch mehr Möglichkeiten zu Farbkorrektur etc. habe). Nach dem letzten I-Frame war in der Datei aus der Kamera tatsächlich noch ein „leeres”. Das allein auszuschließen war nicht genug. Framerate wird weiter als 25.00 angezeigt. Also zusätzlich Framerate von 25.294116 → 24.709 und dann in VLC zurück auf 25.00. Schwere Geburt. Man lernt nie aus.

        Danke für eure Hilfe!

        1. problematische Seite

          Hallo,

          Dieses eine zusätzliche Einzelbild mit dem kaputten DTS führt wohl auch dazu, dass ffmpeg eine Framerate von 25.29 errechnet. Schneidet man das ab, ist der Rest fehlerfrei und die Framerate beträgt glatte 25fps.

          Wie klawischnigg richtig vermutet hat, war am Ende VLC zu Gange. Das Problem entstand schon vorher in avidemux. Die Skalierung in VLC von 1920×1080 auf 880×496 war unschön. Also in avidemux (wo ich auch mehr Möglichkeiten zu Farbkorrektur etc. habe). Nach dem letzten I-Frame war in der Datei aus der Kamera tatsächlich noch ein „leeres”. Das allein auszuschließen war nicht genug. Framerate wird weiter als 25.00 angezeigt. Also zusätzlich Framerate von 25.294116 → 24.709 und dann in VLC zurück auf 25.00. Schwere Geburt.

          klingt sehr kompliziert. Ich habe das "defekte" Video einfach mit ffmpeg im copy-Modus (also ohne neu zu codieren) kopiert. Beim letzten Frame kam dann die schon zitierte Beschwerde, und ffmpeg hat dieses Frame einfach ignoriert. Ergebnis: ein 100% sauberes Video mit 85 Frames bei 25.00fps. Ergibt exakt 3.40s Spieldauer.

          Überhaupt habe ich ffmpeg in den letzten ein bis zwei Jahren als das Schweizer Offiziersmesser der Audio- und Videobearbeitung kennen und lieben gelernt. Es ist zwar ein Kommandozeilentool, aber sehr mächtig.
          Gibt's übrigens sowohl für Linux als auch für Windows.

          Man lernt nie aus.

          Sonst wäre das Leben ja auch langweilig!

          Live long and pros healthy,
           Martin

          --
          Home is where my beer is.
          1. problematische Seite

            Hallo Martin,

            klingt sehr kompliziert.

            War’s auch.

            Ich habe das "defekte" Video einfach mit ffmpeg im copy-Modus (also ohne neu zu codieren) kopiert. Beim letzten Frame kam dann die schon zitierte Beschwerde, und ffmpeg hat dieses Frame einfach ignoriert. Ergebnis: ein 100% sauberes Video mit 85 Frames bei 25.00fps. Ergibt exakt 3.40s Spieldauer.

            Kuhl.

            Überhaupt habe ich ffmpeg in den letzten ein bis zwei Jahren als das Schweizer Offiziersmesser der Audio- und Videobearbeitung kennen und lieben gelernt.

            Da bin ich blutiger Laie und werd’s wohl auch bleiben. Nicht mein Ding.

            Es ist zwar ein Kommandozeilentool, aber sehr mächtig.

            Mein erster Code war 1976 in Lochkarten gestanzt. 😉 Die Kommandozeile schreckt mich nicht.

            Ich schreibe hautpsächlich Pakete für die Open Source Weichware R. Dafür gibt’s zwar auch GUIs aber ich bleibe lieber in der Konsole.

            Gibt's übrigens sowohl für Linux als auch für Windows.

            Hab ich inzwischen schon auf der Platte. Zwar schon OT, aber verräts du mir noch die Argumente für den Aufruf von ffmpeg?

            1. problematische Seite

              Hallo Alfie,

              Überhaupt habe ich ffmpeg in den letzten ein bis zwei Jahren als das Schweizer Offiziersmesser der Audio- und Videobearbeitung kennen und lieben gelernt.

              Da bin ich blutiger Laie und werd’s wohl auch bleiben. Nicht mein Ding.

              bis vor einiger Zeit habe ich Videobearbeitung ohne GUI auch noch für so gut wie unmöglich gehalten. Jetztt benutze ich nur noch einen Player (VLC oder auch ffplay), um die exakten Cutpoints zu ermitteln.

              Es ist zwar ein Kommandozeilentool, aber sehr mächtig.

              Mein erster Code war 1976 in Lochkarten gestanzt. 😉

              Oha. Dann bist du noch mehr Urgestein als ich. 1976 kam ich gerade in die zweite Klasse.

              Ich schreibe hautpsächlich Pakete für die Open Source Weichware R.

              Oh. Davon höre ich zum ersten Mal. Aber Statistik ist auch nicht so mein Ding.

              Zwar schon OT, aber verräts du mir noch die Argumente für den Aufruf von ffmpeg?

              Nö. Das würde den Rahmen hier sprengen. Aber ein paar typische Beispiele:

              ffmpeg -i <videofile> -hide_banner
              

              Analysiert die angegebene Videodatei und gibt alle verfügbaren Daten aus. Ohne -hide_banner würde ffmpeg auch noch einen langen Roman über seine eigenen Build-Optionen ausgeben. Das interessiert aber niemanden.

              ffmpeg -i video.ts -c copy video.mpg
              

              Konvertiert eine MPEG-TS-Videodatei (Transport Stream) verlustfrei in MPEG-PS (Program Stream). Nutze ich manchmal, um Aufnahmen von meinem TV-Gerät auch für andere Software "zugänglich" zu machen, denn viele können mit MPEG-TS nicht viel anfangen.

              ffmpeg -y -i <input> -pass 1 -c:v libxvid -b:v 1200k -r 25 -s 720x576 -aspect 16:9 -an -f avi /dev/null -hide_banner
              ffmpeg    -i <input> -pass 2 -c:v libxvid -b:v 1200k -r 25 -s 720x576 -aspect 16:9 -c:a libmp3lame -b:a 128k -ar 44100 <output> -hide_banner
              

              Konvertiert eine beliebige Videodatei <input> nach MPEG4-ASP in Standard-TV-Auflösung mit durchschnittlich 1200kbps Videobandbreite, die Tonspur dazu als mp3 mit 128k. Benutzt dafür das 2-Pass-Verfahren (Pass 1 zur Analyse, Pass 2 zur Erzeugung der Ausgabe).

              Live long and pros healthy,
               Martin

              --
              Home is where my beer is.
              1. Hallo Martin,

                Zwar schon OT, aber verräts du mir noch die Argumente für den Aufruf von ffmpeg?

                Nö. Das würde den Rahmen hier sprengen.

                Ja, das habe ich in meiner lokalen Installation auch gefunden & den Wald vor lauter Bäumen nicht gesehen.

                Aber ein paar typische Beispiele: […]

                Vielen Dank, sehr hilfreich!
                Jetzt klappt auch die Schleife im 2. Video. Zwar 973KB, aber nur für den privaten Gebrauch.

                1. Ich führe einmal ein Selbstgespräch…

                  Jetzt klappt auch die Schleife im 2. Video.

                  Die Rechnung ohne den Wirt gemacht. In den Chromium-Browsern alles in Butter (autostart, loop, play/pause buttons benutzbar).

                  Aber: Jetzt zickt der Feuerfuchs und seine Abkömmlinge (etwa SeaMonkey, Ghostery). Unten läuft brav die Timeline, dafür sind die Videos in ihrem 1. Frame festgenagelt. Gar wunderlich.

                  1. Hallo,

                    Ich führe einmal ein Selbstgespräch…

                    wenn's hilft ...

                    Die Rechnung ohne den Wirt gemacht. In den Chromium-Browsern alles in Butter (autostart, loop, play/pause buttons benutzbar).

                    Aber: Jetzt zickt der Feuerfuchs und seine Abkömmlinge (etwa SeaMonkey, Ghostery). Unten läuft brav die Timeline, dafür sind die Videos in ihrem 1. Frame festgenagelt. Gar wunderlich.

                    kann ich nicht bestätigen. Natürlich läuft bei mir im Pale Moon (ein Firefox-Fork) keines der Videos von alleine los, das habe ich aus gutem Grund deaktiviert. Aber ich kann die Videos über den Play/Pause-Button starten, dann laufen sie im Endlos-Loop; ich kann sie auch jederzeit anhalten und wieder fortsetzen.

                    No problem visible from here.

                    Live long and pros healthy,
                     Martin

                    --
                    Home is where my beer is.
                    1. Hallo Der Martin, hallo @Alfie

                      Aber: Jetzt zickt der Feuerfuchs

                      Unter Windows 10 kann ich kann ich das ebenfalls nicht bestätigen.

                      kann ich nicht bestätigen. Natürlich läuft bei mir im Pale Moon (ein Firefox-Fork) keines der Videos von alleine los,

                      bei mir auch nicht. Und ich kann mich nicht erinnern, dass ich das deaktiviert hätte.

                      das habe ich aus gutem Grund deaktiviert.

                      Möglicherweise ist das aus gutem Grund inzwischen die Voreinstellung.

                      Aber ich kann die Videos über den Play/Pause-Button starten, dann laufen sie im Endlos-Loop; ich kann sie auch jederzeit anhalten und wieder fortsetzen.

                      No problem visible from here.

                      Same here in firefox.

                      Bis demnächst
                      Matthias

                      --
                      Du kannst das Projekt SELFHTML unterstützen,
                      indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
            2. problematische Seite

              Hallo Alfie,

              Mein erster Code war 1976 in Lochkarten gestanzt.

              Bei mir 1968, IBM 1401. Das war eine seltsame Zeit, wo man etwas wegnehmen musste (Material der Löcher), um etwas dazu zu bekommen (80-stellige Programmierzeile).

              Andererseits konnte man jedes Bit noch mit Handschlag begrüßen und die Programmierung im Sinn des Wortes „begreifen“. Programmierer - ein Handwerker. Ein Programm hatte Gewicht.

              Linuchs

    2. problematische Seite

      Hallo klawischnigg,

      Also ich hab das jetzt kurz durchgechecked, das Problem liegt eindeutig an Deinen Videos.

      Korrekt. Siehe auch meine Antwort an den Martin, warum.

      […] Deine Videos wurden offenbar irgendwie mit dem VLC bearbeitet, vielleicht ist da irgendetwas passiert...

      VLC: Richtig geraten.

      1. problematische Seite

        Hallo Alfie,

        […] Deine Videos wurden offenbar irgendwie mit dem VLC bearbeitet, vielleicht ist da irgendetwas passiert...

        VLC: Richtig geraten.

        das muss man nicht raten; das steht im Klartext in den Metadaten des Videoclips. 😉

        Live long and pros healthy,
         Martin

        --
        Home is where my beer is.