当前位置: 首页 > news >正文

做公司网站优劣势无线网的网址是多少

做公司网站优劣势,无线网的网址是多少,wordpress官网主题,长沙自助模板建站目录 1. 三方工具 2. 视频存储的实现 2.1 分段存储 - 比如每15分钟 2.2 对齐到15分钟整边界 2.3 循环存储的实现 video_space_daemon.sh 3.封装 3.1 主执行程序#xff0c;修订版 3.2 创建服务 3.3 service关联的执行脚本文件 4.额外的工作 附录A: ffmpeg视频存储…目录 1. 三方工具 2. 视频存储的实现  2.1 分段存储 - 比如每15分钟 2.2 对齐到15分钟整边界 2.3 循环存储的实现 video_space_daemon.sh 3.封装 3.1 主执行程序修订版 3.2 创建服务  3.3 service关联的执行脚本文件 4.额外的工作 附录A: ffmpeg视频存储运行时错误处理  1.运行ffmpeg存储视频时 1.1 处理 附录B 服务创建加载以及运行时异常处理  1.service无法enable 1.1 处理 1. 三方工具 建议使用ffmpeg这个工具多平台可用命令行和API都有提供非常便捷。下载的位置 Download FFmpeg 我工作在debian环境下载对应的源码后编译 ./configure make make install 2. 视频存储的实现  2.1 分段存储 - 比如每15分钟 下面的脚本里 MIN_PER_FILE控制的是每个视频文件的最大尺寸 #usage: video_recorder video_file_path min_per_file rtsp_path RTSP_URL_WITH_PASSWORDrtsp://admin:xxxx192.168.0.6:554/Streaming/Channels/101?transportmodeunicastamp;profileProfile_1 MIN_PER_FILE03 VIDEO_FILE_PATH/tmp/video/ #include postfix mkdir -p $VIDEO_FILE_PATH ffmpeg -rtsp_transport tcp -i $RTSP_URL_WITH_PASSWORD -c:v libx265 -preset fast -crf 28 -t 00:$MIN_PER_FILE:00 $VIDEO_FILE_PATH$(date %Y%m%d%H%M%S).mp4 这个命令执行时因为环境的原因可能会提示错误我这边的一个纠错参见附录A,正确调用后 Output #0, mp4, to /tmp/video/20240807094508.mp4:   Metadata:     title           : Media Presentation     encoder         : Lavf61.1.100   Stream #0:0: Video: hevc (hev1 / 0x31766568), yuvj420p(pc, bt709, progressive), 1920x1080, q2-31, 10 fps, 10240 tbn       Metadata:         encoder         : Lavc61.3.100 libx265       Side data:         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A frame 1555 fps 10 q31.9 size   12288KiB time00:02:35.30 bitrate 648.2kbits/s speed   1x  估算最终的视频文件尺寸单通道.h265大概每15分钟45~50MBytes. 2.2 对齐到15分钟整边界 虽然命令行已经提供了分段存储比如15分钟一个文件的功能但是它没有对齐到15分钟整边界可以看到这个逻辑。注意那个重启视频录制进程的工作使用systemctl的语法来实现的这个在第3节封装部分会引入。 #!/bin/bash# 获取传递的参数数量 num_args$#if [ $num_args -ne 1 ]; thenecho usage: $0 chIdxbase1exit 1 elseCHIDX_BASE1$(printf %02d $1) fi# 变量 SERVICE_NAMEguide_video_storage_ch$CHIDX_BASE1# 获取当前时间的秒数 now$(date %s)# 获取当前分钟数和秒数 minute$(date %M) second$(date %S) minute$(echo $minute | sed s/^0*//) # 移除前导0 second$(echo $second | sed s/^0*//) # 移除前导0# 计算最近 15 分钟整边界 remainder$((minute % 15)) if (( remainder 0 second 0 )); thentarget_time$nowecho $target_time elseif (( remainder 0 )); then# 当前时间在整边界时刻但秒数不为0target_time$((now (60 - second)))echo $target_timeelse# 计算下一个整边界的时间next_minute$(( (minute (15 - remainder)) % 60 ))next_hour$(date %H)if ((minute (15 - remainder) 60)); thennext_hour$(echo $next_hour | sed s/^0*//) # 移除前导0next_hour$(( (next_hour 1) % 24 ))fi# 计算目标时间target_time$(date -d $next_hour:$next_minute:00 %s)echo $target_timefi fi# 计算需要等待的秒数 seconds_to_wait$((target_time - now))# 输出等待时间 echo 等待 $seconds_to_wait 秒 sleep $seconds_to_wait#重启脚本 sudo systemctl restart $SERVICE_NAME 2.3 循环存储的实现 video_space_daemon.sh 为了防止出现磁盘快速磨损使用了回差的概念。 #!/bin/bashVIDEO_FILE_PATH/tmp/video/ #include postfix mkdir -p $VIDEO_FILE_PATHCH_CNTS5 DIRECTORY$VIDEO_FILE_PATH MAX_SIZE_MB$((50*$CH_CNTS)) CTRL_SIZE_MB$(awk BEGIN {print $MAX_SIZE_MB * 0.8}) TEMP_FILE/tmp/file_sizes.txt# 计算目录中所有文件的总大小 total_size$(du -sm $DIRECTORY | cut -f1)# 如果总大小超过最大允许值 if [ $total_size -gt $MAX_SIZE_MB ]; then# 列出文件大小和路径按时间排序最旧的文件在前find $DIRECTORY -type f -printf %T %s %p\n | sort | awk {print $2, $3} $TEMP_FILE# 删除最旧的文件直到总大小低于 90MBwhile [ $total_size -gt $CTRL_SIZE_MB ]; dooldest_file$(head -n 1 $TEMP_FILE | awk {print $2})file_size$(head -n 1 $TEMP_FILE | awk {print $1})# 删除文件rm $oldest_file# 更新总大小total_size$((total_size - file_size / 1024 / 1024))# 重新列出文件tail -n 2 $TEMP_FILE $TEMP_FILE.tmp mv $TEMP_FILE.tmp $TEMP_FILEdone# 删除临时文件rm $TEMP_FILE fi3.封装 因为视频源可能会出问题所以需要有看护程序最终使用Service来处理进程的遇错自动重启。然后用一个看护程序来对齐到15分钟整边界。这里有全部的代码 3.1 主执行程序修订版 #!/bin/bash #usage: gpVideoRecorder video_file_path min_per_file rtsp_path chIdxbase1# 函数确保目录路径以斜杠结尾 ensure_trailing_slash() {local dir$1if [[ $dir ! */ ]]; thenecho ${dir}/elseecho $dirfi }# 获取传递的参数数量 num_args$#if [ $num_args -eq 0 ]; thenVIDEO_FILE_PATH/tmp/video/ #include postfixMIN_PER_FILE03RTSP_URL_WITH_PASSWORDrtsp://admin:xxxxx192.168.0.6:554/Streaming/Channels/101?transportmodeunicastamp;profileProfile_1CH_STRch$(printf %02d 0)_ elif [ $num_args -ne 4 ]; thenecho usage: $0 video_file_path min_per_file rtsp_path chIdxbase1 elseVIDEO_FILE_PATH$1MIN_PER_FILE$2RTSP_URL_WITH_PASSWORD$3CH_STRch$(printf %02d $4)_ fi# 确保目录存在 mkdir -p $VIDEO_FILE_PATH # 确保目录路径以斜杠结尾 VIDEO_FILE_PATH$(ensure_trailing_slash $VIDEO_FILE_PATH)/echo $VIDEO_FILE_PATH$CH_STR$(date %Y%m%d%H%M%S).mp4 ffmpeg -rtsp_transport tcp -i $RTSP_URL_WITH_PASSWORD -c:v libx265 -preset fast -crf 28 -t 00:$MIN_PER_FILE:00 $VIDEO_FILE_PATH$CH_STR$(date %Y%m%d%H%M%S).mp4 3.2 创建服务  #!/bin/bash# 获取传递的参数数量 num_args$#if [ $num_args -ne 1 ]; thenecho usage: $0 chIdxbase1exit 1 else# 使用 printf 将数字格式化为两位数CHIDX_BASE1$(printf %02d $1) fi# 变量 PROGRAM_DIR/etc/program SERVICE_NAMEguide_video_storage_ch$CHIDX_BASE1 SERVICE_FILE/etc/systemd/system/${SERVICE_NAME}.service #service_name lookslike guide_video_storage_ch01# 1. 创建目录 if [ ! -d $PROGRAM_DIR ]; thenecho 创建目录 $PROGRAM_DIRsudo mkdir -p $PROGRAM_DIR fi# 2. 创建服务文件 echo 创建服务文件 $SERVICE_FILE cat EOL | sudo tee $SERVICE_FILE [Unit] Descriptionvideo streamer local storage service[Service] ExecStartsudo -E /home/app/common/start_video_recording.sh $CHIDX_BASE1 Restartalways RestartSec5 Userroot[Install] WantedBymulti-user.target EOL# 3. 重新加载 systemd 配置 echo 重新加载 systemd 配置 sudo systemctl daemon-reload# 4. 启动服务 echo 启动服务 ${SERVICE_NAME} sudo systemctl start ${SERVICE_NAME}# 5. 设置服务开机启动 echo 设置服务开机启动 sudo systemctl enable ${SERVICE_NAME}echo 服务 ${SERVICE_NAME} 创建并启动完成。 3.3 service关联的执行脚本文件 因为service不支持同时启动多个命令所以要有这个.sh注意那个背景进程的消灭。理论上不这样做也可以。毕竟视频文件截断的动作是从video_split_daemon.sh发出的。 #这里会对齐至整边界 sudo /home/app/common/video_split_daemon.sh 5 # 获取 p1 的进程 ID SPLIT_PID$!#space_dameon只执行一次无需关心 sudo /home/app/common/video_space_daemon.sh #这里的文件记录长度可以略长(注意rtsp的用户名密码的规则) sudo /home/app/common/gpVideoRecorder /tmp/video 30 rtsp://admin:a1234567192.168.0.6:554/Streaming/Channels/101?transportmodeunicastamp;profileProfile_1 5# 在脚本退出时终止后台进程 p1 trap kill $SPLIT_PID EXIT注意最终的那个调用需要是个阻塞命令。 3.4 整个环境运行时的截屏 上面刚经历过一次重启时间是从xx:45开始的对齐到45分整边界视频文件列表   切换前列表切换后 能看到循环存储已经生效。 所有的可执行文件列表 4.额外的工作 在实际使用时至少还有如下工作要做 json配置文件解析和开机bootmqtt远程命令执行接口状态信息redis缓存 这个环节不再赘述。 附录A: ffmpeg视频存储运行时错误处理  1.运行ffmpeg存储视频时 Unrecognized option preset. Error splitting the argument list: Option not found 1.1 处理 检查是x265编码器可能没有装./configure --enable-libx265 --enable-libx264 --disable-x86asm --enable-gpl --pkg-configpkg-config --static 提示ERROR: x264 not found using pkg-configsudo apt install pkg-configsudo apt install libx264-devsudo apt install libx265-dev./configure --enable-libx265 --enable-libx264 --disable-x86asm --enable-gplmakemake install   附录B 服务创建加载以及运行时异常处理  1.service无法enable Failed to enable unit: Unit file /etc/systemd/system/guide_video_storage_ch05.service is masked. 1.1 处理 在更新.service前一定记得要先disable。如果出现mask: sudo systemctl unmask guide_video_storage_ch05 sudo systemctl stop guide_video_storage_ch05 sudo systemctl disable guide_video_storage_ch05
http://www.w-s-a.com/news/811595/

相关文章:

  • 工业和信息化部网站备案系统查询市场调研表模板
  • 网站流量转化线下推广活动有哪些
  • 030159网站建设与维护宝安网站公司
  • 个人网站备案网站内容做gif表情包网站
  • 湖南省建设厅城乡建设网站怎么建立一个网站网址
  • 图书馆网站建设的规章制度免费个人主页注册
  • 表格网站源码wordpress更换网站域名
  • 芜湖做网站多少钱做公司的网站的需求有哪些
  • 玉溪网站建设制作凌风wordpress百度云
  • 专业建网站价格门户网站建设 请示
  • 安徽省省博物馆网站建设佛山公司网站设计
  • 温州专业营销网站公司网络建设规划
  • 做模型常说的d站是什么网站wordpress 繁體
  • 给网站做h5缓存机制获取小程序api
  • 网站开发文档东莞市建设网站首页
  • 公共空间设计网站企业门户网站建设教程
  • 网站建设公司 深圳镇江建设质量监督站网站
  • 网站底部版权怎么做软广告经典案例
  • 网站收录突然全部没有了东莞网站建设公司电话
  • 境外企业网站推广免费ppt元素
  • 2018网站建设行业广东网站seo
  • 网站后台加密云服务器2008做网站
  • dw制作一个环保网站模板下载吉安网站建设收费
  • 深圳珠宝网站设计北京高端网站建设优势
  • 合肥企业制作网站wordpress创建网站
  • 织梦网站开发兼职wordpress 中间截取缩略图
  • 南通制作网站旅游搭建网站
  • 专业做商铺的网站个人网页html模板完整代码
  • 什么网站做美食最好最专业关键词推广是什么意思
  • 自助建设网站软件网站导航网站可以做吗