Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possible improvements #49

Open
johnatank opened this issue Sep 8, 2022 · 2 comments
Open

Possible improvements #49

johnatank opened this issue Sep 8, 2022 · 2 comments

Comments

@johnatank
Copy link

Hi team,

Couple items I noticed while deploying and using this:

  1. is it needed to build a new image for srs considering the public image is already available and has lesser size? I used ossrs/srs:4 with this bot and it worked fine (ossrs/srs:5 didn't work). If compatibility is a concern - exact compatible version can be used as image tag to avoid upgrading to non compatible release;

  2. it would make sense to create bind volume to map configuation files, i.e.:

  hikvision-srs-server:
    volumes:
      - /hikvision-camera-bot/srs/conf/:/usr/local/srs/conf/

  hikvision-camera-bot:
    volumes:
      - /media/hdd/other/hik-dvr/:/data/dvr
      - /hikvision-camera-bot/hikvision-camera-bot/configs/:/app/configs

/hikvision-camera-bot/srs/conf/ and /hikvision-camera-bot/hikvision-camera-bot/configs/ would host docker.conf for SRS and configuration files for bot accordingly.

If not, image rebuild is required on each change in configuration file;

  1. looks like all streams (youtube, dvr, telegram, srs were tested) are hardcoded to hikvision_srs_server container name (or service name if docker-compose is used);

  2. for Telegram stream, I had to change acodec codec to aac in encoding-templates.json to make it working:

    "kitchen_telegram": {
      "null_audio": false,
      "loglevel": "error",
      "vcodec": "copy",
      "acodec": "aac",
      "asample_rate": -1,
      "format": "flv",
      "rtsp_transport_type": "tcp"
    }

Maybe that's an issue with my camera model (DS-2CV2Q21FD-IW) only.

Thanks,
Maksym

@tropicoo
Copy link
Owner

tropicoo commented Sep 16, 2022

I will take a look at your suggestions next week, I think.
But I'm unsure how you get a complete SRS image rebuild after changing the config file. All steps except copying the modified config file should be cached:

> docker-compose build hikvision-srs-server

[+] Building 1.8s (15/15) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                                                                           0.0s
 => => transferring dockerfile: 1.07kB                                                                                                                                                                                         0.0s
 => [internal] load .dockerignore                                                                                                                                                                                              0.0s
 => => transferring context: 34B                                                                                                                                                                                               0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                                                                                               1.5s
 => [auth] library/ubuntu:pull token for registry-1.docker.io                                                                                                                                                                  0.0s
 => [1/9] FROM docker.io/library/ubuntu:latest@sha256:20fa2d7bb4de7723f542be5923b06c4d704370f0390e4ae9e1c833c8785644c1                                                                                                         0.0s
 => [internal] load build context                                                                                                                                                                                              0.0s
 => => transferring context: 596B                                                                                                                                                                                              0.0s
 => CACHED [2/9] RUN ln -snf /usr/share/zoneinfo/Europe/Kiev /etc/localtime && echo Europe/Kiev > /etc/timezone                                                                                                                0.0s
 => CACHED [3/9] RUN sed -i 's/^deb http:\/\/archive\./deb http:\/\/ua\.archive\./' /etc/apt/sources.list                                                                                                                      0.0s
 => CACHED [4/9] RUN apt update     && apt upgrade --yes     && apt autoremove --yes     && apt install --yes --no-install-recommends         bash htop git tzdata sudo unzip openssl iputils-ping net-tools     && rm -rf /v  0.0s
 => CACHED [5/9] RUN git config --global http.sslVerify false     && git config --global http.postBuffer 1048576000                                                                                                            0.0s
 => CACHED [6/9] RUN git clone -b 4.0release https://github.com/ossrs/srs.git                                                                                                                                                  0.0s
 => CACHED [7/9] WORKDIR /srs/trunk                                                                                                                                                                                            0.0s
 => CACHED [8/9] RUN apt update     && apt install --yes gcc g++ libffi-dev libjpeg-dev zlib1g-dev build-essential libtool automake patch perl     && ./configure --srt=on --jobs=$(nproc) && make -j$(nproc)     && apt auto  0.0s
 => [9/9] COPY srs_prod/hik-docker.conf ./conf/hik-docker.conf                                                                                                                                                                 0.1s
 => exporting to image                                                                                                                                                                                                         0.1s
 => => exporting layers                                                                                                                                                                                                        0.0s
 => => writing image sha256:f5552cde3e3e8101d4340b23c2bfbffeefdfd5c92a93036031c1d467f62c8bcb                                                                                                                                   0.0s
 => => naming to docker.io/library/hik-hikvision-srs-server           

@johnatank
Copy link
Author

Yes, I didn't meant rebuild of image in the way - each image layer would be rebuilt. You are correct - docker would use cache for all unchanged layers. I mean docker build must be called each time configuration is changed. I believe it makes more sense to store config files in volumes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants