分类 编程 中的文章

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 " "

看到了 如下设备

……

阅读全文

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请求。

……

阅读全文

Licod | 安装和配置

拉取docker镜像并运行

licode官方提供了配置好的docker镜像,使用以下命令拉下来跑就行。

docker run --name licode -p  3000:3000 -p $MIN_PORT-$MAX_PORT:30000-30050/udp -p 3001:3001  -p 8080:8080 -e "MIN_PORT=30000" -e "MAX_PORT=30050" -e "PUBLIC_IP=your_ip_address" lynckia/licode

注意命令里的PUBLIC_IP要改为服务器的公网IP。

配置好之后,在地址栏输入ip:3001回车,chrome就会弹出是否允许摄像头麦克风那个窗口,点击确定,就可以看到你的视频了。

……

阅读全文