1
2
mirror of https://github.com/vimagick/dockerfiles synced 2024-06-20 22:08:39 +00:00

update ffserver

This commit is contained in:
kev 2016-07-05 03:33:59 +08:00
parent 4bb73644f1
commit 7bded15bc5
5 changed files with 101 additions and 38 deletions

@ -1,14 +1,13 @@
# #
# Dockerfile for ffmpeg # Dockerfile for ffserver
# #
FROM alpine FROM vimagick/ffmpeg
MAINTAINER kev <noreply@easypi.info> MAINTAINER kev <noreply@easypi.info>
RUN apk add -U ffmpeg COPY ffserver.conf /etc/
ADD ffserver.conf /etc/ EXPOSE 554 8090
EXPOSE 8090 ENTRYPOINT ["ffserver"]
CMD ["ffserver"]

@ -1,21 +1,24 @@
ffserver - FFserver video server ffserver - FFserver video server
================================ ================================
`FFserver` is a streaming server for both audio and video. It supports ![](https://badge.imagelayers.io/vimagick/ffserver:latest.svg)
[FFserver][1] is a streaming server for both audio and video. It supports
several live feeds, streaming from files and time shifting on live several live feeds, streaming from files and time shifting on live
feeds (you can seek to positions in the past on each live feed, feeds (you can seek to positions in the past on each live feed,
provided you specify a big enough feed storage in `ffserver.conf`). provided you specify a big enough feed storage in `ffserver.conf`).
## docker-compose.yml ## docker-compose.yml
``` ```yaml
ffserver: ffserver:
image: vimagick/ffserver image: vimagick/ffserver
ports: ports:
- "554:554"
- "8090:8090" - "8090:8090"
volumes: volumes:
- ffserver.conf:/etc/ffserver.conf - ./ffserver.conf:/etc/ffserver.conf
- data:/data - ./data:/data
restart: always restart: always
``` ```
@ -25,22 +28,33 @@ ffserver:
HTTPPort 8090 HTTPPort 8090
HTTPBindAddress 0.0.0.0 HTTPBindAddress 0.0.0.0
RTSPPort 554
RTSPBindAddress 0.0.0.0
MaxClients 100 MaxClients 100
MaxBandwidth 100000 MaxBandwidth 100000
CustomLog - CustomLog -
<Feed feed.ffm> <Feed feed.ffm>
File /tmp/feed.ffm File /data/feed.ffm
</Feed> </Feed>
<Stream feed.mp3> <Stream video.mp4>
Format rtp
Feed feed.ffm Feed feed.ffm
Format mp2 VideoCodec libx264
AudioCodec libmp3lame VideoFrameRate 24
AudioBitRate 64 VideoBitRate 100
AudioChannels 1 VideoSize 640x480
AudioSampleRate 44100 AVPresetVideo default
NoVideo AVPresetVideo baseline
AVOptionVideo flags +global_header
NoAudio
#AudioCodec libmp3lame
#AudioBitRate 32
#AudioChannels 2
#AudioSampleRate 22050
#AVOptionAudio flags +global_header
</Stream> </Stream>
<Stream status.html> <Stream status.html>
@ -48,29 +62,43 @@ Format status
</Stream> </Stream>
``` ```
> WARNING: I've not figured out how to stream video yet! > :warning: I've not figured out how to stream video+audio yet!
## server ## Server Setup
``` ```bash
$ cd ~/fig/ffserver $ cd ~/fig/ffserver
$ tree $ tree
. .
├── data ├── data
│ └── feed.mp3 │ └── video.mp4
├── docker-compose.yml ├── docker-compose.yml
└── ffserver.conf └── ffserver.conf
$ docker-compose up -d $ docker-compose up -d
$ docker-compose exec ffserver ffmpeg -re -i video.mp4 http://localhost:8090/feed.ffm
$ docker exec ffserver_ffserver_1 ffmpeg -i /data/feed.mp3 http://localhost:8090/feed.ffm
``` ```
## client > :hammer: `data/video.mp4` is for testing purposes only.
``` ## Client Setup
$ firefox http://server:8090/status.html
$ firefox http://server:8090/feed.mp3 ```bash
$ ffmpeg -re -i video.mp4 http://easypi.info:8090/feed.ffm
``` ```
## Player Setup
```bash
$ ffplay rtsp://easypi.info/video.mp4
$ vlc http://easypi.info:8090/video.rtsp
$ firefox http://easypi.info:8090/status.html
```
## References
- <http://ffmpeg.org/ffserver.html>
- <http://www.ffmpeg.org/sample.html>
- <https://trac.ffmpeg.org/wiki/ffserver>
[1]: https://www.ffmpeg.org/ffserver.html

@ -1,6 +1,7 @@
ffserver: ffserver:
image: vimagick/ffserver image: vimagick/ffserver
ports: ports:
- "554:554"
- "8090:8090" - "8090:8090"
volumes: volumes:
- ./ffserver.conf:/etc/ffserver.conf - ./ffserver.conf:/etc/ffserver.conf

@ -1,22 +1,33 @@
HTTPPort 8090 HTTPPort 8090
HTTPBindAddress 0.0.0.0 HTTPBindAddress 0.0.0.0
RTSPPort 554
RTSPBindAddress 0.0.0.0
MaxClients 100 MaxClients 100
MaxBandwidth 100000 MaxBandwidth 100000
CustomLog - CustomLog -
<Feed feed.ffm> <Feed feed.ffm>
File /tmp/feed.ffm File /data/feed.ffm
</Feed> </Feed>
<Stream feed.mp3> <Stream video.mp4>
Format rtp
Feed feed.ffm Feed feed.ffm
Format mp2 VideoCodec libx264
AudioCodec libmp3lame VideoFrameRate 24
AudioBitRate 64 VideoBitRate 100
AudioChannels 1 VideoSize 640x480
AudioSampleRate 44100 AVPresetVideo default
NoVideo AVPresetVideo baseline
AVOptionVideo flags +global_header
NoAudio
#AudioCodec libmp3lame
#AudioBitRate 32
#AudioChannels 2
#AudioSampleRate 22050
#AVOptionAudio flags +global_header
</Stream> </Stream>
<Stream status.html> <Stream status.html>

@ -17,8 +17,32 @@ red5:
restart: always restart: always
``` ```
## Server Setup
```bash
$ docker-compose up -d
```
## Client Setup
```bash
$ ffmpeg -i /dev/video0 -video_size 800x600 -f flv rtmp://easypi.info/live/webcam
```
## Player Setup
```bash
# kodi
$ echo 'rtmp://easypi.info/live/webcam live=1' > ~/Movies/webcam.strm
# ffplay
$ brew reinstall ffmpeg --with-ffplay --with-rtmpdump
$ ffplay 'rtmp://easypi.info/live/webcam live=1'
```
## references ## references
- <https://github.com/Red5/docker> - <https://github.com/Red5/docker>
- <http://kodi.wiki/view/Internet_video_and_audio_streams>
[1]: https://github.com/Red5/red5-server [1]: https://github.com/Red5/red5-server