FFmpeg | 给视频加文字和图片水印

ffmpeg从视频中截取图像帧

ffmpeg -i inputfile.avi -r 1 -f image2 image-%05d.jpeg
ffmpeg -i inputfile.avi -r 1 -s 4cif -f image2 image-%05d.jpeg
ffmpeg -i inputfile.avi -r 1 -t 4 -f image2 image-%05d.jpeg
ffmpeg -i inputfile.avi -r 1 -ss 01:30:14 -f image2 image-%05d.jpeg  
ffmpeg -i inputfile.avi -r 1 -ss 01:30:14 -vframes 120 4cif -f image2 image-%05d.jpeg  

-r 指定抽取的帧率,即从视频中每秒钟抽取图片的数量。1代表每秒抽取一帧。
-f 指定保存图片使用的格式,可忽略。
image-%05d.jpeg,指定文件的输出名字。
4cif 代表帧的尺寸为705x576.其他可用尺寸如下。
-t 代表持续时间,单位为秒。
-ss 指定起始时间
-vframes 指定抽取的帧数

……

阅读全文

FFmpeg | 录制摄像头和桌面数据windows

概述

FFmpeg Windows 设备操作 Windows 采集设备的主要方式是 dshow vfwcap gdigrab 其中

  • dshow 可以用来抓 取摄像头、采集卡、麦克风等,- vfwcap 主要用来采集摄像头类设备,- gdigrab 则是抓取 Windows 窗口程序

FFmpeg 使用 dshow 采集音视频设备

使用 dshow 枚举设备

ffmpeg -f dshow -list_devices true -i dymmy

输出

[dshow @ 000002622302e340] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000002622302e340]  "Altair USB2.0 Camera"
[dshow @ 000002622302e340]     Alternative name "@device_pnp_\\?\usb#vid_0ac8&pid_3450&mi_00#6&3b01315a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 000002622302e340] DirectShow audio devices

``
使用 dshow 展示摄像头, 摄像头的参数为 video=“摄像头名称”

……

阅读全文

FFmpeg | 录制摄像头和桌面数据mac

设备枚举

查看设备列表

$ ffmpeg -hide_banner -devices

Devices:
D. = Demuxing supported
.E = Muxing supported
 --
D avfoundation AVFoundation input device
D lavfi  Libavfilter virtual input device
 E sdl,sdl2 SDL2 output device

可以看到输入设备有:avfoundation,lavfi
输出设备有:sdl
``
设备采集举例:

$  ffmpeg -f avfoundation -list_devices true -i " "

看到了 如下设备

……

阅读全文

K8S | Prometheus+Grafana监控

概述

作为应用与Kubernetes的监控体系,Prometheus具备诸多的优势,如:

  • Kubernetes默认支持,非常适合容器和微服务- 无依赖,安装方便,上手容易- 社区活跃,它不仅仅是个工具,而是生态- 已有很多插件或者exporter,可以适应多种应用场景的数据收集需要- Grafana默认支持,提供良好的可视化- 高效,单一Prometheus可以处理百万级的监控指标,每秒处理数十万的数据点 在部署之前,先来了解一下Prometheus各个组件的作用吧!
  • MertricServer:是k8s集群资源使用情况的聚合器,收集数据给K8s集群内使用,如:kubectl,hpa,scheduler- PrometheusOperator:是一个系统检测和警报工具箱,用来存储监控数据;- NodeExporter:用于各node的关键度量指标状态数据;- kubeStateMetrics:收集k8s集群内资源对象数据,指定告警规则;- Prometheus:采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输;- Grafana:是可视化数据统计和监控平台。 web管理部署一个就可以。如果安装了其他web管理可以删除
    https://github.com/prometheus/prometheus

下载

下载prometheus所需文件:

……

阅读全文

Owt-server | owt-client-javascript

概述

天气燥热,不易出门。遂研究一下owt-server,从owt-client-javascript的流程开始吧。

获取一个会议室

owt-client-javascript的时候有一个初始化房间的过程

///owt-client-javascript/src/samples/conference/samplertcservice.js
(function initSampleRoom () {
    
    icsREST.API.getRooms(pageOption, function(rooms){
        ...
        // 获取房间信息,如果有房间,直接跳出,如果没有房间则创建一个房间
        if (sampleRoom !== undefined) {
                break;
        }
    }
    // 创建房间的方法
    var tryCreate = function(room, callback) {...}

    if (!sampleRoom) {
        room = {
        name: 'sampleRoom'
      };
        //创建房间
      tryCreate(room, function(Id) {
        sampleRoom = Id;
        console.log('sampleRoom Id:', sampleRoom);
      });
    }
})

获取token

从owt-client-javascript的rest-sample.js开始发送获取token请求。

……

阅读全文

K8S | Ingress的基本使用

缘由

看了statefulset基础教程的基础教程,并且把环境搭建起来后。pod内部是可以连通了。但是我不知道怎么去从外部访问。在网上搜索一番,通过Ingress可以作为集群的入口。遂记录之。
结合Statefulset的示例进行配置。这是未配置Ingress之前的Statefulset示例:

……

阅读全文

K8S | Statefluset的持久存储PVC

缘由

在看statefluset基础教程的时候遇到pod状态为pending

kubectl describe pod web-0

日志内容是

 pod has unbound immediate PersistentVolumeClaims

于是就对PV和PVC进行研究。
有给出完整的 web.yaml查看最下面的完整示例。但是我建议先把PV和PVC的概念弄懂了,还有学会查看pod的描述kubectl describe pod podname或者日志kubectl logs -f podname,自然知晓怎么处理pod的状态为pending的问题了。

……

阅读全文

Linux | nsf服务的搭建和使用

搭建nsf服务

sudo apt install nfs-kernel-server

默认情况下,在Ubuntu 18.04上,NFS版本2是禁用的。版本3和版本4已启用。您可以通过运行以下cat命令来验证:

sudo cat /proc/fs/nfsd/versions

写入 exports

cat  /etc/exports
sudo echo /nfs/prometheus/data/ 192.168.84.75/24(rw,no_root_squash,no_all_squash,sync) >>  /etc/exports
sudo echo /nfs/prometheus/data/ 192.168.84.75/24(rw,no_root_squash,no_all_squash,sync) >>  /etc/exports
可以设定的参数主要有以下这些:

rw:可读写的权限;
ro:只读的权限;
no_root_squash:登入到NFS主机的用户如果是root,该用户即拥有root权限;
root_squash:登入NFS主机的用户如果是root,该用户权限将被限定为匿名使用者nobody;
all_squash:不管登陆NFS主机的用户是何权限都会被重新设定为匿名使用者nobody。
anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。
anongid:同anonuid,但是变成group ID就是了!
sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
insecure:允许从这台机器过来的非授权访问。

验证配置的/nfs/prometheus/data/是否正确

……

阅读全文

K8S | StatefulSet基本原理

背景

用户通过 Deployment、ReplicationController 可以方便地在 kubernetes 中部署一套高可用、可扩展的分布式无状态服务。这类应用不在本地存储数据,通过简单的负载均衡策略可实现请求分发。随着 k8s 的普及和云原生架构的兴起,越来越多的人希望把数据库这类有状态服务也通过 k8s 进行编排。但因为有状态服务的复杂性,这一过程并不容易。本文将以最流行的开源数据库 MySQL 为例,介绍如何在 k8s 上部署运维有状态服务。本文所作的调研基于k8s 1.18

……

阅读全文