参考资料
国内教育机构与各大云服务商提供的镜像加速服务 - 推荐海交大镜像站,网速还行的情况下,拉取 mysql:8.0 镜像只用了 31s,大约 600MB 左右,不行的话再试试其他的。
"registry-mirrors": [
"https://docker.mirrors.sjtug.sjtu.edu.cn"
]
一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频,功能超级强大。
直接用 Homebrew 装,遇到问题解决问题,肯定是能装下来的。
brew install ffmpeg
将本地视频推送到 SRS 服务
# 需要更改本地视频地址以及 rtmp 服务地址
ffmpeg -readrate 1 -stream_loop -1 -i /Users/feng/Downloads/1.mp4 -vcodec copy -acodec copy -f flv 'rtmp://localhost/feng/fddm.flv'
播放 flv 视频
ffplay http://localhost:8080/feng/fddm.flv
设置分辨率压缩视频
ffmpeg -i [需要压缩的文件名] -vf scale=-1:1280 -r 20 -crf 23 [压缩后的文件名]
# 比如
ffmpeg -i source.mp4 -vf scale=-1:1280 -r 20 -crf 23 compress.mp4
设置压缩级别压缩图片
ffmpeg -i 1.png -compression_level 100 2.png
docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5
- 8080 是 Web 端口,可以直接访问查看。
$(ifconfig en0 inet | grep 'inet ' | awk '{print $2}')
: 这个命令可以获取本地网络 IP 地址,en0
一般是网络连接(WIFI),en6
一般是网线连接,在下面的CANDIDATE
就先写死了,这个参数后面连接 WebRTC 时有用,需要改成你自己的 IP 地址。
- 本质上是 Docker Host 文件系统里面的目录或文件,不是外部磁盘,容器可以直接读写 Volume 中的数据,即使使用它的容器被销毁,Volume 中数据也会被保存。
./objs/srs -c conf/rtc2rtmp.conf
: 这是在 Docker 容器内容执行的命令,对应目录位置是/usr/local/srs
,所以这才是真正的选择配置文件启动 SRS 服务。
CANDIDATE="192.168.1.3"
docker run -d \
--name billd-live-class-srs \
--env CANDIDATE=$CANDIDATE \
-p 8080:8080 -p 1935:1935 -p 1985:1985 -p 8000:8000/udp \
-v srs_conf:/usr/local/srs/conf \
-v srs_objs:/usr/local/srs/objs \
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 \
./objs/srs -c conf/rtc2rtmp.conf
[!todo] 烦,一直有问题,暂时还是用之前的老方法,先启用一个临时服务,把需要的文件目录拷贝到本地目录,这里只需要
conf
和objs
,后面有时间了再研究看看,究竟是哪一步哪个东西导致不能正常挂载的。
- 要 保证 LOCAL_SRS_PATH 存在,替换成你自己的目录位置即可。
- 正常情况下,此命令在拷贝完成会自动停止并删除掉这个临时容器,出现异常时需要手动删除此容器服务。
LOCAL_SRS_PATH=/Users/feng/codebase/study-pro/billd-z-class/srs
docker run -d --rm --name temp-container registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 \
&& docker cp temp-container:/usr/local/srs/objs $LOCAL_SRS_PATH/objs \
&& docker cp temp-container:/usr/local/srs/conf $LOCAL_SRS_PATH/conf \
&& docker stop temp-container
有了启动配置文件,再执行下面的命令应该就没问题了。
LOCAL_SRS_PATH=/Users/feng/codebase/study-pro/billd-z-class/srs
CANDIDATE="192.168.1.3"
docker run -d \
--name billd-live-class-srs \
--env CANDIDATE=$CANDIDATE \
-p 8080:8080 -p 1935:1935 -p 1985:1985 -p 8000:8000/udp \
-v $LOCAL_SRS_PATH/conf:/usr/local/srs/conf \
-v $LOCAL_SRS_PATH/objs:/usr/local/srs/objs \
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 \
./objs/srs -c conf/rtc2rtmp.conf
Mac App Store Navicat Premium 16.1.0 及后续版本激活 - 先在 App Store 下载 Navicat 但别打开,下载执行 Navicat Crack.dmg,等成功激活之后再打开从 App Store 下载的 Navicat。
docker pull mysql:8.0
我们需要从容器内映射两个东西到本地磁盘:
- 启动配置文件
my.cnf
,容器内默认按照此路径顺序寻找启动:/etc/my.cnf
、/etc/mysql/my.cnf
、/usr/etc/my.cnf
、~/.my.cnf
,一般这个文件都在/etc/my.cnf
,因为我们后期可能需要修改配置启动,所以映射出来,方便更新和保存配置。 - 数据目录
/var/lib/mysql
,你的数据库信息都在这里面,后面就算容器删掉了也可以用这个来恢复。
2023-12-07 上次疑问解决了,就是挂载不出来,本地必须要有 my.cnf
这个文件,参考文章:Docker Compose 安装 MySql
GitHub
把这个文件放到本地对应的位置,下面的部分就可以跳过了,跳到启动的部分。
这是之前的老方法,不过目的都是一样的。
还是不知道为什么不能直接 -v
把 my.cnf
从容器内挂载出来,所以还是先用临时容器拷一份出来吧 🤡。
- 保证本地 存在 $mysqlPath/conf 这个目录,否则会拷贝失败或异常。
- 我在这里踩了个小坑,不能用
path
命名设置临时目录变量啊!!!这 TM 是系统变量,软件和系统配置启动文件都会追加在这个变量上,我这么设置临时变量相当于直接覆盖掉了,意味着连 docker 命令都没了,还好只是临时变量,把原来的内容设置回去或者重开一个终端就恢复啦。 - 所以设置临时变量前可以先用
echo $xxx
来检查一下这个变量是否存在。
mysqlPath=/Users/feng/codebase/study-pro/billd-z-class/mysql
docker run -d --rm --name temp mysql:8.0 \
&& docker cp temp:/etc/my.cnf $mysqlPath/conf \
&& docker stop temp
如果出现启动成功后,测试连接失败的情况可以试试添加 -e MYSQL_ROOT_HOST=%
我上次是加了这个才行的,这次没有也可以了,所以有点奇怪。
LOCAL_MYSQL_PATH=/Users/feng/codebase/study-pro/billd-z-class/mysql
docker run -d \
-p 3306:3306 \
--name billd-live-mysql \
-e MYSQL_ROOT_PASSWORD=mysql123. \
-v $LOCAL_MYSQL_PATH/conf/my.cnf:/etc/my.cnf \
-v $LOCAL_MYSQL_PATH/data:/var/lib/mysql \
mysql:8.0