Push Live DASH Stream via HTTP POST in FFmpeg

This article explains how to stream live DASH (Dynamic Adaptive Streaming over HTTP) content directly to a remote web server using FFmpeg’s HTTP POST method. You will learn the specific command-line arguments and parameters required to package a live video source into DASH segments and upload them to an ingestion server in real time.

The FFmpeg Command

To push a live DASH stream via HTTP POST, you must configure FFmpeg to use the dash muxer and set the HTTP transfer method to POST.

Here is the standard command-to-use template:

ffmpeg -re -i input.mp4 \
  -c:v libx264 -preset veryfast -b:v 3000k \
  -c:a aac -b:a 128k \
  -f dash \
  -method POST \
  -http_persistent 1 \
  -seg_duration 4 \
  -streaming 1 \
  -use_template 1 \
  -use_timeline 1 \
  http://yourserver.com/live/manifest.mpd

Parameter Breakdown

Server-Side Requirements

To successfully receive the stream, your target web server must be configured to handle incoming HTTP POST requests. The server must accept the incoming .mpd and .m4s payloads and write them to the designated directory in the web root so that players (such as Dash.js or Shaka Player) can fetch them via standard HTTP GET requests. Common setups include using an Nginx server with an upload module or a custom Node.js/Python receiver script.