web获取视频图片第一帧

web获取视频图片第一帧,第1张

获取视频的第一帧一般可以通过两种方式实现: 1使用ffmpeg程序。ffmpeg是一款功能强大的多媒体处理工具,可以用来快速抓取视频的第一帧。使用它的语法如“ffmpeg -i <input_file> -ss 00:00:01 -f image2 -vframes 1 <output_file>”。 2使用HTML5的video元素。HTML5 video不仅可以用来播放视频,而且可以获取视频的第一帧。可使用videocurrentSrc,使用此属性即可获取视频的第一帧地址。

最近需要做实时录屏并把视频推流到RTSP服务器,具体流程是抓取屏幕内容(bitmap),并把bitmap转化为YUV,接着把YUV编码成H264,再把H264码流推到RTSP服务器;把采集到的PCM编码为AAC,再把AAC推流至RTSP服务器。

看了雷神的一篇文章: 最简单的基于FFmpeg的推流器(以推送RTMP为例) ,他是把本地的视频文件推流至RTMP服务器,并不符合我的要求。
接着我找到另一篇文章: ffmpeg实现H264压缩并且推流至RTSP ,这篇文章只有图像编码,并没有音频编码,并且推流之后并没有播放成功。
我综合上面两位大佬的思路,和查找一些资料实现了这个功能。

RTSP服务器使用的是 HappyTime 的免费试用版本。

我抓到的bitmap是BGRA格式的,所以使用的图像格式是 AV_PIX_FMT_BGRA cropImage 是含有rgba图像的数组

调用:

由于我是实时抓取的屏幕, frame_yuv->pts 设为当前的时间戳,以保证能正常播放。

调用:

调用:
其中pcm_buff是包含pcm数据的数组

使用udp传输时传到1400多帧就断开链接了,原因不明,所以改用使用tcp协议传输

延迟有15秒左右

参考:
>最近忙于新产品技术点突破,针对架构摸索暂时停住。目前需要解决的问题是如何从视频流中截取一张图。

在安防领域有各种视频监控产品,它们遵循的通讯协议也不尽相同,归纳起来主要遵循GB/T 28181、ONVIF、PSIA等协议。

其通信协议如下所示
在CentOS7上安装ffmpeg

脚本正确调用,接下来就通过Java调用远程服务器上脚本实现视频流截图,在此借助 Ganymed SSH-2 for Java ,实现SSH远程执行脚本。

通过SSH远程执行脚本有点简单粗暴,何不将这截图功能做成服务,向外发布,更加灵活方便。故后期工作如下:
准备一台服务器,其主要职责有
1文件存储
2响应终端的抓图请求,并将保存到指定文件夹目录下
3响应终端的合图请求,以上两者做成服务的形式,终端通过分布式调用服务,完成 *** 作并返回结果状态
4接收终端上传的
硬件需求:
1因服务器上安装ffmpeg工具,其需要对视频流进行解码,并按照png格式组织编码,对计算性能要求高,所以CPU性能要好
2作为文件存储服务器,存储容量要大
3接受多终端设备连接,网口带宽要大

因为要接收反馈结果,cmd命令可以这样写

当ffmpeg执行正确时,会输出succeeded,当ffmpeg不能正确执行时,会输出failed

新建目录文件夹,将截图文件放入指定文件夹中


如何利用VLC或FFMPEG将>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13466480.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-12
下一篇 2023-08-12

发表评论

登录后才能评论

评论列表(0条)

保存