Skip to main content
Version: 6.0 (Stable) ✅

SRS for linux-arm

How to run SRS on ARM pcu?

  • Run SRS on ARM: Client can play stream from ARM server.

Why run SRS on ARM?

The use scenario:

  • Run SRS on ARM server, see #1282.
  • Crossbuild for ARM embeded device, see #1547.

RaspberryPi

User is able to build and run SRS on RespberryPI. Please don't use crossbuild.

ARM Server: armv7, armv8(aarch64)

User is able to build and run SRS on ARM servers. Please don't use crossbuild.

./configure && make 

Build SRS in ARM server docker, see aarch64

docker run -it --rm -v `pwd`:/srs -w /srs ossrs/srs:aarch64 \ bash -c "./configure && make" 

For armv8 or aarch64, user should specify the arch, if the CPU arch is not identified automatically, see #1282:

./configure --extra-flags='-D__aarch64__' && make 

Run SRS:

./objs/srs -c conf/console.conf 

Publish stream:

ffmpeg -re -i doc/source.flv -c copy -f flv rtmp://127.0.0.1:1935/live/livestream 

Play stream:http://localhost:8080/live/livestream.flv

image

Ubuntu Cross Build SRS: ARMv8(aarch64)

Build SRS in docker(Ubuntu20(xenial)):

cd ~/git/srs/trunk docker run --rm -it -v `pwd`:/srs -w /srs ossrs/srs:ubuntu20 bash 

Install toolchain(optional):

apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu 

Cross build SRS:

./configure --cross-build --cross-prefix=aarch64-linux-gnu- make 

Run SRS on aarch64 docker:

cd ~/git/srs/trunk && docker run --rm -it -v `pwd`:/srs -w /srs \ -p 1935:1935 -p 1985:1985 -p 8080:8080 arm64v8/ubuntu \ ./objs/srs -c conf/console.conf 

Publish stream:

ffmpeg -re -i doc/source.flv -c copy -f flv rtmp://127.0.0.1:1935/live/livestream 

Play stream:http://localhost:8080/live/livestream.flv

Ubuntu Cross Build SRS: ARMv7

Cross build ST and OpenSSL on Ubuntu20.

Build SRS in docker(Ubuntu20(xenial)):

cd ~/git/srs/trunk docker run --rm -it -v `pwd`:/srs -w /srs ossrs/srs:ubuntu20 bash 

Install toolchain(optional), for example Acqua or RoadRunner board

apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf 

Cross build SRS:

./configure --cross-build --cross-prefix=arm-linux-gnueabihf- make 

Run SRS on ARMv7 docker:

cd ~/git/srs/trunk && docker run --rm -it -v `pwd`:/srs -w /srs \ -p 1935:1935 -p 1985:1985 -p 8080:8080 armv7/armhf-ubuntu \ ./objs/srs -c conf/console.conf 

Publish stream:

ffmpeg -re -i doc/source.flv -c copy -f flv rtmp://127.0.0.1:1935/live/livestream 

Play stream:http://localhost:8080/live/livestream.flv

Ubuntu Cross Build SRS: hisiv500(arm)

TBD.

Use Other Cross build tools

SRS configure options for cross build:

./configure -h Presets: --cross-build Enable cross-build, please set bellow Toolchain also. Default: off Cross Build options: @see https://ossrs.io/lts/en-us/docs/v6/doc/arm#ubuntu-cross-build-srs --cpu=<CPU> Toolchain: Select the minimum required CPU. For example: --cpu=24kc --arch=<ARCH> Toolchain: Select architecture. For example: --arch=aarch64 --host=<BUILD> Toolchain: Build programs to run on HOST. For example: --host=aarch64-linux-gnu --cross-prefix=<PREFIX> Toolchain: Use PREFIX for tools. For example: --cross-prefix=aarch64-linux-gnu- Toolchain options: --static=on|off Whether add '-static' to link options. Default: off --cc=<CC> Toolchain: Use c compiler CC. Default: gcc --cxx=<CXX> Toolchain: Use c++ compiler CXX. Default: g++ --ar=<AR> Toolchain: Use archive tool AR. Default: g++ --ld=<LD> Toolchain: Use linker tool LD. Default: g++ --randlib=<RANDLIB> Toolchain: Use randlib tool RANDLIB. Default: g++ --extra-flags=<EFLAGS> Set EFLAGS as CFLAGS and CXXFLAGS. Also passed to ST as EXTRA_CFLAGS. 

Winlin 2014.11