Search code examples
httpgstreamerhttp-live-streaming

m3u8 file only plays locally


I have an application using the appsrc pipeline to convert raw RGBA frames into an HLS stream. The files are saved locally, and when played back via VLC locally it plays without issue.

This is the working pipeline:

appsrc

  • video/x-raw
  • format=RGBA
  • width=720
  • height=1550
  • framerate=25/1
  • stream-type=0
  • is-live=TRUE
  • format=GST_FORMAT_TIME

videoconvert

openh264enc

  • profile=high
  • bitrate=1000

h264parse

  • config-interval=1

mpegtsmux

hlssink

  • max-files=5
  • target-duration=25
  • playlist-length=3
  • location=.../%04.ts
  • playlist-location=.../video.m3u8

But when I run a local web server (tried multiple), point it at the directory with the files, nothing plays with either VLC nor browser on another device on the network. The web server doesn't have any errors, it verifies that it receives GET requests first for the m3u8, then the individual .ts file, but playback doesn't happen. Other files like jpeg are served properly, so I'm almost certain the servers nor firewall aren't the issue here.

Again, the HLS file plays without issue locally via VLC, just not over a local server. What could be the issue?


Solution

  • I had a do-timestamp=true property I had to set false, then everything worked.