整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端使用html5、ffmpeg实现录屏摄像等功能

前端使用html5、ffmpeg实现录屏摄像等功能

景介绍

** 涉及技术:vue、electron、ffmpeg、node **
关于录屏和摄像对比了两种方法

  • 使用HTML5的api实现
    摄像:mediaDevices(获取设备)+ getUserMedia(获取流) + MediaRecorder(存储)
    录屏:getDisplayMedia(获取流) + MediaRecorder(存储)
  • ffmpeg + node:FFmpeg是一套非常强大的音视频处理的开源工具,不多介绍,而Electron基于node和chromium,它允许使用node的API以及几乎所有的node模块,这意味这着我们可以调用cmd命令来操作ffmpeg实现录屏和摄像录制,当然ffmpeg功能绝不止这点

HTML5实现

mediaDevices

  • 用于收集系统上可用的多媒体输入和输出设备的信息
  • 该方法调用成功返回设备列表,并传入带有devceID的MediaStreamConstraints对象可以指定设备获取流媒体来源
navigator.mediaDevices.enumerateDevices().then(devicelist=> {
    // audiooutput 扬声器
    // audioinput  麦克风
    // audiooutput 摄像
    console.log(devicelist)
  }).catch(err=> console.log(err))

getUserMedia

  • 用户提供访问硬件设备媒体(摄像头、视频、音频、地理位置等)的接口,基于该接口,开发者可以在不依赖任何浏览器插件的条件下访问硬件媒体设备。
  • 该方法返回视频流,将获取到的流赋给video标签可实现边录边看
navigator.mediaDevices.getUserMedia(MediaStreamConstraints).then(stream=> {
    videoElement.srcObject=stream; // 
  }, error=> console.log(error));

getDisplayMedia

  • 将用户的显示或其部分用作媒体流的来源,它允许以视频流的形式获取用户的显示器或其一部分
  • 录屏主要依靠该方法,和getUserMedia一样返回一个promise对象,调用成功返回流,将这个流赋给video 元素实现边录边看
  • ** 需要注意的是** 如果你做的是网页端在谷歌上使用这个元素,需要在chrome://flags/开启Experimental Web Platform features功能

而Electron基于node + chromium构建,在electron需要引入desktopCapturer模块,并在基于该模块使用这个方法

navigator.mediaDevices.getDisplayMedia({ video: true })
  .then(stream=> {
    videoElement.srcObject=stream;
  }, error=> console.log(error));

相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】

音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

MediaRecorder

  • 记录和捕获媒体,也就是视频和音频
  • getDisplayMedia 和 getUserMedia 获取到的流都需要使用MediaRecorder存储起来,并且可以保存成文件
let herf
this.recorder=new MediaRecorder(stream);
this.recorder.ondataavailable=e=> { 
  herf=e.data;
  download.href=URL.createObjectURL(herf);
};
this.recorder.start();

第二种使用ffmpeg

官网安装包下载 ffmpeg.zeranoe.com/builds/

一些基本参数

-formats 输出所有可用格式
-f fmt 指定格式(音频或视频格式)
-i filename 指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头
-y 覆盖已有文件
-t duration 记录时长为t
-fs limit_size 设置文件大小上限
-itsoffset time_off 设置时间偏移(s),该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss* [.xxx]的格式也支持 音 频
-ab bitrate 设置音频码率
-ar freq 设置音频采样率
-ac channels 设置通道 缺省为1 视 频
-b bitrate 设置比特率,缺省200kb/s
-r fps 设置帧频 缺省25
-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:

录屏相关命令

列出可用的设备包括音频和摄像等等
ffmpeg -list_devices true -f dshow -i dummy

录屏,你也可以加入关于视频的一些基本参数来获得你想要的文件
ffmpeg -f gdigrab -i desktop captrue.mkv -y

node调用

cd进入bin文件夹后执行录屏相关命令

关于停止录制,虽然ffmpeg按 Q 可以停止录制,但是我们通过代码调用是看不到cmd命令行的而且他在录制过程中是一直占用这个进程什么命令也无法输入 所以这个地方我只想到一个办法就是强制停止该进程

参考文章
MDN developer.mozilla.org/zh-CN/docs/… developer.mozilla.org/en-US/docs/… developer.mozilla.org/zh-CN/docs/…
W3C w3c.github.io/mediacaptur…


原文 前端使用html5、ffmpeg实现录屏摄像等功能 - 掘金

工网是由中华全国总工会主管主办、工人日报社领导和管理的大型综合性中央新闻网站。网站设有时政、工会、评论、视频、看点、权益等30多个频道,并有两微一端及各类新媒体平台号。

根据业务发展需要,中工网拟招聘采编部门副总监、记者编辑、编导摄像、JAVA工程师、前端(小程序)工程师、AE动画师,如果你有实力、有梦想、有理想、有追求,期待您加入我们!

一、招聘岗位

采编中心副总监(2名)、网评中心副总监(1名)

【岗位职责】

协助总监完成部门频道内容的日常维护、组织选题策划采写编审发布、栏目发展规划与执行等。

【任职要求】

1.全日制大学本科及以上学历;

2.具有较强的政治素质、较高的新闻价值判断水平及新闻策划和采编能力;

3.工作认真负责,具有较高的职业素养、创新意识与团队精神;

4.五年以上新闻媒体从业经验;两年以上新闻团队管理经验。

音视频中心副总监(1名)

【岗位职责】

协助总监完成部门频道内容的日常维护、组织选题策划制作审核发布、栏目发展规划与执行等。

【任职要求】

1.影视、新闻传播、中文等全日制大学本科及以上学历;

2.具有较强的政治素质、较高的新闻价值判断水平及视频新闻策划和采编能力;

3.具备熟练运用音视频采编工作的各项技能,熟悉新媒体平台;

4.工作认真负责,具有较高的职业素养、创新意识与团队精神;

5.五年以上新闻媒体从业经验;两年以上视频团队管理经验。

记者编辑(2名)、网评编辑(1名)

【岗位职责】

频道内容的日常维护;选题策划、采写、编辑;公众号日常运营。

2.具有良好的政治素质、扎实的文字功底、较好的新闻敏感性;

3.工作踏实、责任心强、有团队合作精神;

4.新闻传播专业毕业及有一定新闻采写、评论理论工作经验者优先。

编导(2名)

【岗位职责】负责视频的全流程制作。

【任职要求】

1.影视、新闻传播、编导、文学等大学本科及以上学历;

2.具有良好的政治素质、扎实的文字功底、较好的新闻敏感性;

3.较强的新闻策划、编导能力与水平;

4.一年以上媒体新闻、电视编导经验及会AE者优先。

摄像(1名)

【岗位职责】视频前期策划、拍摄及剪辑、特效等后期制作。

【任职要求】

1.影视、摄影、广播电视、编导等大学本科及以上学历;

2.具有良好的政治素质和新闻敏感性,较强的创新意识和团队意识;

3.视频拍摄、剪辑、制作技巧娴熟,会航拍者优先;

4.一年以上媒体视频制作经验者优先。

JAVA工程师(1名)

【岗位职责】负责支撑前端展示的数据库设计、服务接口开发等。

【任职要求】

1.计算机及相关专业,具有1-3年基于Java技术的软件开发经验;

2.熟练掌握Spring boot等框架和前后端分离技术;

3.熟练使用常见SQL、non-SQL数据库,如oracle、mongodb、redis,熟悉linux命令,熟悉SQL脚本语言、存储过程编写;

4.熟练使用Tomcat、Maven包管理等第三方工具;

5.具备较强的学习能力、技术研究能力;具备团队合作意识和推动协作达成的能力;

6.熟练掌握前端技术和框架HTML5、CSS、JavaScript、Vue等优先;会使用uniapp和熟练使用相关报表开发工具者优先。

前端(小程序)工程师(1名)

【岗位职责】负责对接各平台(百度、支付宝、微信等)小程序展示界面的开发工作。

【任职要求】

1.2年以上相关工作经验;

2.精通HTML/CSS/Javascript(ES5/ES6)/Typescript;

3.熟练使用vue2/uve3,具备一定的组件抽象能力;

4.熟练使用vue全家桶以及相关基础ui组件,Element-ui等;

5.熟练使用uniapp开发微信、支付宝、百度小程序;

6.熟练使用echart.js等报表组件;

7.具备较强的学习能力、技术研究能力;良好的沟通和表达能力,具备团队合作意识和推动协作达成的能力。

AE动画师(1名)

【岗位职责】负责动画制作,对接各栏目的动画元素要求。

【任职要求】

1.2年以上工作经验,具备良好的审美及设计功底;

2.熟练运用AE、PR等剪辑制作软件及至少1种3D软件;

3.有较强的手绘功底,能独立制作MG动画,对作品的主题创意、动画等方面有较好的把握;

4.有一定的原创及造型能力,掌握人物运动规律;

5.熟知动画行业各种门类、风格、技术手段以及技术环节,善于把握作品的内容及风格,并对项目进行严格的质量控制;

6.提供近期作品;

二、我们的优势

1.平台足够大,空间足够广;只要想做事,束缚无限低;

2.有的是老师可以交流和请教,只要你虚心;

3.重大活动尽情参与,只要你想;

4.别的地方给的我们肯定给,别的地方不一定有的我们也会有。

三、联系我们

投递邮箱及截止日期:

有意者请将简历及作品发送至邮箱zhaopinHR@workercn.cn(请注明“应聘岗位名称+姓名)

四、工作地点:

北京市东城区安德路甲61号工人日报社

宁高新区广播电视台(站)招10名工作人员,报名持续至2月28日。

应聘条件包括拥护中国共产党的领导,热爱祖国,遵纪守法。具有开拓进取精神和创新意识,具备良好的职业道德,事业心、责任心强,吃苦耐劳,组织纪律观念强,热爱本职工作。品行端正,身体健康,具备岗位所要求的专业技能。具备一定审美能力和较强的学习能力,有很好的沟通管理和团队合作精神。本科及以上学历。

(一)新闻采编人员(4人)

岗位要求:

1、具有坚定的政治立场,坚持四项基本原则,拥护党的路线方针政策,具有较高的政治素养;

2、新闻及相关专业;

3、具有良好的文字撰写能力,可独立统筹节目素材,拟定节目制作流程;

4、具有扎实的摄像功底,能熟练驾驭镜头语言;

5、能敏锐发掘新闻点,提出选题建议,组织策划活动,制作新闻专题、图表新闻,创作适于微传播的作品;

6、具有后期剪辑能力,熟练掌握剪辑软件Pr、Edius、大洋等,可独立完成节目的剪辑工作;

7、具有新闻采编(文字、图片、视频、动漫等)技能或能利用HTML5进行微信小程序开发及微应用开发和wap站开发者优先;

8、年龄35周岁以下,有相关工作经验者,中共党员优先。

(二)技术播出人员(1人)

岗位要求:

1、广播电视工程、计算机及相关专业;

2、熟练掌握广播电视技术、软件数据库、通信与信息工程等专业知识,有较强的理论基础知识和实际操作能力;

3、具备电视播出节目编排、节目切换、安全播出监控、播出设备日常维护能力;

4、热爱广播电视技术工作,具有刻苦钻研业务、爱岗敬业的职业素养。服从分配,能够适应艰苦的工作环境;

5、年龄40周岁以下,有相关工作经验者优先。

(三)新媒体运营人员(2人)

岗位要求:

1、网络及新媒体相关专业;

2、热爱互联网,熟悉新媒体运营特点,网感敏锐;

3、文案能力强,能独立原创内容和编辑、发布稿件,熟悉网络语境;

4、较好的洞察力和创意能力,善于捕捉热点,完成策划方案撰写;

5、能够熟练使用PS等设计软件,做好内容策划、编辑、发布、维护、管理、互动,提高影响力和关注度,对排版有独立风格、极致追求;

6、策划并执行新媒体互动话题/营销活动,利用微信、微博等平台进行有效推广,带动粉丝数量增长/社群增量/资源的转化;

7、跟踪新媒体运营推广效果,针对数据做复盘分析并及时调整改进;

8、及时追踪本地区热点,打造原创话题/观点分享,为用户策划与提供优质、有高度传播性的内容;

9、具有新闻采编(文字、图片、视频、动漫等)技能或能利用HTML5进行微信小程序开发及微应用开发和wap站开发者优先;

10、年龄35周岁以下,有相关新媒体账号运营经验者优先。

(四)广告运营人员(1人)

岗位要求:

1、广告、市场营销专业;

2、有较强的广告客户开发能力,娴熟的销售技巧,能够承受工作压力,责任心强;

3、积极完成规定和承担的广告指标;

4、建立并维护好客户关系,并跟进客户合同签订履行情况及客户的回款;

5、对客户在宣传过程中出现的问题、须办理的手续,帮助或联系有关部门或单位妥善解决;

6、有较好的文字功底,能独立撰写策划文案,并根据客户需求提供活动宣传策划方案,具备较强的语言表达、沟通能力;

7、有团队协作能力、服从能力,能吃苦耐劳;

8、年龄35周岁以下,有运营策划和市场推广经验,熟悉商贸、旅游、教育、汽车等行业或有相关广告工作经验者,以及熟悉新媒体平台营销者,优先考虑。

(五)网络技术人员(2人)

岗位要求:

1、电子信息、计算机类相关专业;

2、具有坚定的政治立场,坚持四项基本原则,拥护党的路线方针政策,具有较高的政治素养;

3、了解计算机网络、服务器存储、备份容灾、虚拟化及云安全、智能弱电、多媒体视讯等技术基础知识;

4、了解网络安全原理,能对现有系统进行防护和加固,对失、泄密事件能进行有效防御;

5、熟悉主流网络设备与协议、网络舆情系统操作流程;

6、熟练运用操作系统与办公软件,具有较好的技术文档编制能力;

7、具有较强的沟通能力,良好的分析问题和实际动手能力,良好的学习和创新能力;

8、年龄35周岁以下,有相关工作经验者优先;中共党员优先。

济宁高新区 齐鲁晚报·齐鲁壹点