Han*_*ang 4 bash video vlc rtsp docker
我正在一个项目中使用 Docker。目标是在VLC中播放视频并通过RTSP协议发送数据流,以便其他机器(用户)可以在他们的机器上实时看到视频。视频、Dockerfile 和 bash 文件位于同一文件夹中。这是我使用的 bash 文件(simulate_video_stream.sh):
# Two facultativ parameters : -f <nameOfTheVideoFile> and -i <URL_Output>
SCRIPTPATH=$( cd $(dirname $0) ; pwd -P );
name=$SCRIPTPATH"/counter.mp4";
sdp="rtsp://:8554/flux";
while getopts "f:i:" OPTNAME
do
case $OPTNAME in
f) name=$OPTARG;;
i) sdp=$OPTARG;;
esac
done
sout="#transcode{vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{sdp="$sdp"}";
vlc -vvv $name --sout $sout
Run Code Online (Sandbox Code Playgroud)
这是 Dockerfile:
FROM ubuntu
RUN apt-get update \
&& apt-get install -y vlc
COPY simulate_video_stream.sh /tmp/
COPY counter.mp4 /tmp/
ENTRYPOINT ["/tmp/simulate_video_stream.sh"]
Run Code Online (Sandbox Code Playgroud)
通过“sudo docker build -t test”构建成功。我希望将它与 bash 文件中定义的两个参数一起使用,例如“docker run test -f namevideo.mp4 -i rtsp://:8554/test” ,但它返回“write pipeline: bad file detector”应该怎么做我愿意?谢谢
首先,您需要提供一个解释器来执行脚本。
其次,你不能vlc以root.
第三,当文件位于主机上时,您不能提供文件作为参数并期望从容器内部vlc打开它。您需要先安装它。
第四,您需要引用$sout变量,否则它将以 开头#,并且 bash 将忽略它作为参数,并且不会将其传递给vlc.
第五,如果您希望流在外部可用,则需要公开端口。
进行以下更改:
Dockerfile:
FROM ubuntu
RUN apt-get update \
&& apt-get install -y vlc
RUN useradd -m vlcuser
COPY simulate_video_stream.sh /tmp/
COPY counter.mp4 /tmp/
ENTRYPOINT ["/tmp/simulate_video_stream.sh"]
Run Code Online (Sandbox Code Playgroud)
脚本simulate_video_stream.sh:
#!/bin/bash
# Two facultativ parameters : -f <nameOfTheVideoFile> and -i <URL_Output>
SCRIPTPATH=$( cd $(dirname $0) ; pwd -P );
name=$SCRIPTPATH"/counter.mp4";
sdp="rtsp://:8554/flux";
while getopts "f:i:" OPTNAME
do
case $OPTNAME in
f) name=$OPTARG;;
i) sdp=$OPTARG;;
esac
done
sout="#transcode{vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{sdp="$sdp"}";
su vlcuser -c "vlc -vvv $name --sout '$sout'"
Run Code Online (Sandbox Code Playgroud)
并将容器运行为:
docker run -v $PWD/namevideo.mp4:/tmp/namevideo.mp4 -p 8554:8554 test -f /tmp/namevideo.mp4 -i rtsp://:8554/test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12523 次 |
| 最近记录: |