new
This commit is contained in:
parent
864226f308
commit
df00b929f2
7 changed files with 194 additions and 0 deletions
38
docker-compose.yml
Normal file
38
docker-compose.yml
Normal file
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
version: '3.6'
|
||||
|
||||
services:
|
||||
owncast:
|
||||
container_name: "owncast_server"
|
||||
image: "gabekangas/owncast:latest"
|
||||
entrypoint: sh /app/run-server.sh
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./run-server.sh:/app/run-server.sh
|
||||
- ./owncast-data:/app/data
|
||||
networks:
|
||||
- ffplayout-network
|
||||
ports:
|
||||
- "8080:8080"
|
||||
ffplayout:
|
||||
container_name: ffplayout
|
||||
build: ffplayout/.
|
||||
volumes:
|
||||
- "./ffplayout/ffplayout.yml:/etc/ffplayout/ffplayout.yml"
|
||||
- "./logs:/logs"
|
||||
- "./video:/video"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "/etc/timezone:/etc/timezone:ro"
|
||||
# - "./logo.png:/usr/share/ffplayout/logo.png:ro"
|
||||
depends_on:
|
||||
- owncast
|
||||
networks:
|
||||
- ffplayout-network
|
||||
ports:
|
||||
- "8787:8787"
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
ffplayout-network:
|
||||
name: ffplayout-network
|
||||
driver: bridge
|
12
ffplayout/Dockerfile
Normal file
12
ffplayout/Dockerfile
Normal file
|
@ -0,0 +1,12 @@
|
|||
FROM ubuntu:latest
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
COPY ffplayout_0.24.0-rc3-1_amd64.deb /tmp
|
||||
|
||||
RUN apt update && apt-get install -y ffmpeg
|
||||
RUN apt install -y /tmp/ffplayout_0.24.0-rc3-1_amd64.deb
|
||||
|
||||
EXPOSE 8787
|
||||
|
||||
CMD [ "/bin/ffplayout", "-i", "--log", "/logs", "--folder", "/video", "--play-mode", "folder", "--config", "/etc/ffplayout/ffplayout.yml"]
|
142
ffplayout/ffplayout.yml
Normal file
142
ffplayout/ffplayout.yml
Normal file
|
@ -0,0 +1,142 @@
|
|||
general:
|
||||
help_text: Sometimes it can happen, that a file is corrupt but still playable,
|
||||
this can produce an streaming error over all following files. The only way
|
||||
in this case is, to stop ffplayout and start it again. Here we only say when
|
||||
it stops, the starting process is in your hand. Best way is a systemd service
|
||||
on linux. 'stop_threshold' stop ffplayout, if it is async in time above this
|
||||
value. A number below 3 can cause unexpected errors.
|
||||
stop_threshold: 11
|
||||
|
||||
rpc_server:
|
||||
help_text: Run a JSON RPC server, for getting infos about current playing and
|
||||
for some control functions.
|
||||
enable: true
|
||||
address: 127.0.0.1:7070
|
||||
authorization: av2Kx8g67lF9qj5wEH3ym1bI4cCs
|
||||
|
||||
mail:
|
||||
help_text:
|
||||
Send error messages to email address, like missing playlist; invalid
|
||||
json format; missing clip path. Leave recipient blank, if you don't need this.
|
||||
'mail_level' can be INFO, WARNING or ERROR. 'interval' means seconds until
|
||||
a new mail will be sended.
|
||||
subject: Playout Error
|
||||
smtp_server: mail.example.org
|
||||
starttls: true
|
||||
sender_addr: ffplayout@example.org
|
||||
sender_pass: "abc123"
|
||||
recipient:
|
||||
mail_level: ERROR
|
||||
interval: 30
|
||||
|
||||
logging:
|
||||
help_text:
|
||||
If 'log_to_file' is true, log to file, when is false log to console.
|
||||
'backup_count' says how long log files will be saved in days. 'local_time' to
|
||||
false will set log timestamps to UTC. Path to /var/log/ only if you run this
|
||||
program as daemon. 'log_level' can be DEBUG, INFO, WARNING, ERROR.
|
||||
'ffmpeg_level' can be info, warning, error.
|
||||
log_to_file: true
|
||||
backup_count: 7
|
||||
local_time: true
|
||||
timestamp: true
|
||||
log_path: /var/log/ffplayout/
|
||||
log_level: DEBUG
|
||||
ffmpeg_level: error
|
||||
|
||||
processing:
|
||||
help_text:
|
||||
Default processing for all clips, to have them unique. Mode can be playlist
|
||||
or folder. 'aspect' must be a float number. 'logo' is only used if the path exist.
|
||||
'logo_scale' scale the logo to target size, leave it blank when no scaling
|
||||
is needed, format is 'number:number', for example '100:-1' for proportional
|
||||
scaling. With 'logo_opacity' logo can become transparent. With 'logo_filter'
|
||||
'overlay=W-w-12:12' you can modify the logo position. With 'use_loudnorm'
|
||||
you can activate single pass EBU R128 loudness normalization. 'loud_*' can
|
||||
adjust the loudnorm filter. With 'custom_filter' it is possible, to apply further
|
||||
filters. The filter outputs should end with [c_v_out] for video filter,
|
||||
and [c_a_out] for audio filter.
|
||||
mode: playlist
|
||||
width: 1024
|
||||
height: 576
|
||||
aspect: 1.778
|
||||
fps: 25
|
||||
add_logo: true
|
||||
logo: /usr/share/ffplayout/logo.png
|
||||
logo_scale:
|
||||
logo_opacity: 0.7
|
||||
logo_filter: overlay=W-w-12:12
|
||||
add_loudnorm: false
|
||||
loudnorm_ingest: false
|
||||
loud_i: -18
|
||||
loud_tp: -1.5
|
||||
loud_lra: 11
|
||||
volume: 1
|
||||
custom_filter:
|
||||
|
||||
ingest:
|
||||
help_text:
|
||||
Run a server for a ingest stream. This stream will override the normal streaming
|
||||
until is done. There is only a very simple authentication mechanism, which check if the
|
||||
stream name is correct.
|
||||
enable: false
|
||||
input_param: -f live_flv -listen 1 -i rtmp://127.0.0.1:1936/live/stream
|
||||
|
||||
playlist:
|
||||
help_text: >
|
||||
'path' can be a path to a single file, or a directory. For directory put
|
||||
only the root folder, for example '/playlists', subdirectories are read by the
|
||||
script. Subdirectories needs this structure '/playlists/2018/01'. 'day_start'
|
||||
means at which time the playlist should start, leave day_start blank when playlist
|
||||
should always start at the begin. 'length' represent the target length from
|
||||
playlist, when is blank real length will not consider. 'infinit: true' works with
|
||||
single playlist file and loops it infinitely.
|
||||
path: /var/lib/ffplayout/playlists
|
||||
day_start: "5:59:25"
|
||||
length: "24:00:00"
|
||||
infinit: false
|
||||
|
||||
storage:
|
||||
help_text: Play ordered or randomly files from path. 'filler_clip' is for fill
|
||||
the end to reach 24 hours, it will loop when is necessary. 'extensions' search
|
||||
only files with this extension. Set 'shuffle' to 'true' to pick files randomly.
|
||||
path: "/var/lib/ffplayout/tv-media"
|
||||
filler_clip: "/var/lib/ffplayout/tv-media/filler/filler.mp4"
|
||||
extensions:
|
||||
- "mp4"
|
||||
- "mkv"
|
||||
shuffle: true
|
||||
|
||||
text:
|
||||
help_text:
|
||||
Overlay text in combination with libzmq for remote text manipulation.
|
||||
On windows fontfile path need to be like this 'C\:/WINDOWS/fonts/DejaVuSans.ttf'.
|
||||
'text_from_filename' activate the extraction from text of a filename. With 'style'
|
||||
you can define the drawtext parameters like position, color, etc. Post Text over
|
||||
API will override this. With 'regex' you can format file names, to get a title from it.
|
||||
add_text: false
|
||||
text_from_filename: false
|
||||
fontfile: "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
|
||||
style: "x=(w-tw)/2:y=(h-line_h)*0.9:fontsize=24:fontcolor=#ffffff:box=1:boxcolor=#000000:boxborderw=4"
|
||||
regex: ^.+[/\\](.*)(.mp4|.mkv)$
|
||||
|
||||
out:
|
||||
help_text:
|
||||
The final playout compression. Set the settings to your needs. 'mode'
|
||||
has the options 'desktop', 'hls', 'null', 'stream'. Use 'stream' and adjust
|
||||
'output_param:' settings when you want to stream to a rtmp/rtsp/srt/... server.
|
||||
In production don't serve hls playlist with ffpapi, use nginx or another web server!
|
||||
mode: stream
|
||||
output_param: >-
|
||||
-vcodec libx264
|
||||
-profile:v high
|
||||
-g 48
|
||||
-r 24
|
||||
-sc_threshold 0
|
||||
-b:v 3000k
|
||||
-preset veryfast
|
||||
-c:a aac
|
||||
-ar 44100
|
||||
-b:a 128k
|
||||
-flags +global_header
|
||||
-f flv rtmp://owncast/live/CIRpaLEipOOS
|
BIN
ffplayout/ffplayout_0.24.0-rc3-1_amd64.deb
Normal file
BIN
ffplayout/ffplayout_0.24.0-rc3-1_amd64.deb
Normal file
Binary file not shown.
1
run-server.sh
Normal file
1
run-server.sh
Normal file
|
@ -0,0 +1 @@
|
|||
./owncast --streamkey CIRpaLEipOOS
|
1
video/README.md
Normal file
1
video/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
media files goes here
|
BIN
video/bumper.mp4
Normal file
BIN
video/bumper.mp4
Normal file
Binary file not shown.
Loading…
Reference in a new issue