The purpose with ffplayout is to provide a 24/7 broadcasting solution that plays a json playlist for every day, while keeping the current playlist editable.
Check ffplayout-frontend: web-based GUI for ffplayout
out
value is higher then its duration
, see also Loop Clip
playlist_mode: False
){
"channel": "Test 1",
"date": "2019-03-05",
"program": [{
"in": 0,
"out": 647.68,
"duration": 647.68,
"source": "/Media/clip1.mp4"
}, {
"in": 0,
"out": 149,
"duration": 149,
"source": "/Media/clip2.mp4"
}, {
"in": 0,
"out": 114.72,
"duration": 114.72,
"source": "/Media/clip3.mp4",
"category": "advertisement"
}, {
"in": 0,
"out": 2531.36,
"duration": 2531.36,
"source": "/Media/clip4.mp4",
"category": ""
}
]
}
If you need a simple playlist generator check: playlist-generator
The playlist can be extend, to use custom attributes in your filters.
(Endless) streaming over multiple days will only work when config have day_start value and the length value is 24 hours. If you need only some hours for every day, use a cron job, or something similar.
You can use sources from remote URL in that way:
...
{
"in": 0,
"out": 149,
"duration": 149,
"source": "https://example.org/big_buck_bunny.webm"
}
But be careful with it, better test it multiple times!
More informations in Wiki
Check INSTALL.md
ffplayout also allows the passing of parameters:
-c, --config
use given config file-f, --folder
use folder for playing-l, --log
for user-defined log path, none for console output-i, --loop
loop playlist infinitely-m, --mode
set output mode: desktop, hls, stream, ...-p, --playlist
for playlist file-s, --start
set start time in hh:mm:ss, now for start with first-t, --length
set length in hh:mm:ss, none for no length checkYou can run the command like:
./ffplayout.py -l none -p ~/playlist.json -d -s now -t none -m desktop
For streaming multiple channels you need to use python supervisorD. A systemd service for it you found in docs folder.
To configure every channel create your ffplayout yaml configs under /etc/ffplayout with naming them ffplayout-001.yml, ffplayout-002.yml and so on. Then copy and edit the supervisor config /supervisor/conf.d/engine-001.conf with the same numbering.