ffmpeg截图(关键帧截图)-程序员宅基地

技术标签: 音视频  ffmpeg  

1.rtsp流截图

ffmpeg --stimeout 1000000 -rtsp_transport tcp -i rtsp://xxx -vf select='eq(pict_type,PICT_TYPE_I)' -vsync vfr -ss 00:00:00.000 -vframes 1 -s 640x480 -y output.jpg -hide_banner

        参数解释

        ● -stimeout 1000000:设置socket超时时间为1000000微秒(us),即1秒(s)。

        ● -rtsp_transport tcp:指定RTSP传输协议为TCP。(降低截图花屏概率)

        ● -i rtsp://xxx:输入RTSP流的URL地址。

        ● -vf select='eq(pict_type,PICT_TYPE_I)':使用视频滤镜选择关键帧(I帧)。

        ● -vsync vfr:以可变帧率同步视频流。

        ● -ss 00:00:00.000:从视频开始处开始处理。

        ● -vframes 1:只输出一帧图像。

        ● -s 640x480:设置输出图像的分辨率为640x480。

        ● -y output.jpg:输出文件名为output.jpg,如果已存在同名文件则覆盖。

        ● -hide_banner:隐藏FFmpeg的版本信息和版权信息。

2.h264或h265文件截图

#如果h265文件下面test.h264可以替换对应h265文件例如test.h265
ffmpeg -i test.h264 -vf select='eq(n,0)' -vframes 1 -s 640x480 -y output.jpg -hide_banner

        参数解释

        ● -i test.h264: 指定输入文件为 test.h264。这个文件可能是一个H.264编码的视频文件。

        ● -vf select='eq(n,0)': 使用视频滤镜(video filter)来选择帧。select 滤镜的 eq(n,0) 表达式表示只选择序号(n)为0的帧,也就是视频的第一帧。

        ● -vframes 1: 限制输出的帧数为1,结合 select 滤镜,这通常用于提取视频的第一帧作为静态图像。

        ● -s 640x480: 设置输出图像的大小为 640x480 像素。

        ● -y output.jpg: 指定输出文件名为 output.jpg。如果该文件已存在,-y 选项会覆盖它,而不是询问用户是否要覆盖。

        ● -hide_banner: 隐藏FFmpeg的启动横幅和版权信息,这样在运行FFmpeg时不会显示这些信息。

        总结来说,这个命令的作用是从一个H.264编码的视频文件 test.h264 中提取第一帧,将其大小调整为 640x480 像素,并保存为JPEG格式的图片 output.jpg。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/INNER_PEACE_DS/article/details/138068858

智能推荐

Labview队列使用方法----一文读懂队列底层原理及用法-程序员宅基地

文章浏览阅读2.3k次,点赞35次,收藏41次。题主非常详细的介绍了队列的原理及使用方法,帮助读者在原理上深刻理解队列的底层逻辑,并介绍了队列使用时的注意事项。后续将更新更多相关文章记得点赞加关注,谢谢~_labview队列

教你用Python爬取哔哩哔哩全站视频信息_b站访问权限不足爬虫-程序员宅基地

文章浏览阅读1.8k次。哔哩哔哩全站视频信息爬虫(可能会漏爬)B 站感觉最近几年发展得太快了,不由得想知道有多少视频,翻阅了一大半网络找了很多爬虫感觉都不是特别的复合自己的胃口(挑食~),于是自己写一个(才学习爬虫没多久写得垃圾代码大佬别喷我啊….)很多人学习python,不知道从何学起。很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。很多已经做案例的人,却不知道如何去学习更加高深的知识。那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤QQ群_b站访问权限不足爬虫

(新版)SJTU-OJ-1003. 在麦当劳配数据-程序员宅基地

文章浏览阅读431次,点赞4次,收藏2次。题目描述注意:本题可以使用的头文件仅限于cstdioiostreamcstring梦回高三,小艾想起了几个月前背诵高考古诗文篇目的时光……已经是晚上了。第二天有小测,可是小艾还有篇古诗文没有背。这篇古诗文都有一个对应的瞌睡值,也就是说,选择背诵篇目会让小艾的瞌睡程度增加​。小艾目前的瞌睡程度已经是,而当小艾的瞌睡程度时,小艾会直接睡到明早,那可就没有更多的时间背了!注意,因为背了一半的文章也是没背出来的文章,所以恰好让小艾瞌睡程度的那篇也视作没背的。好在小测考到每个篇目的概率是一..._在麦当劳配数据

ubuntu16安装colmap的问题及解决方案_cudasetupargument 未定义的引用-程序员宅基地

文章浏览阅读2.3k次,点赞14次,收藏28次。最近想入门一下三维重建,看了一些三维重建的论文,还是想从SFM入手。先了解一下SFM里面经典的colmap(论文:[Structure-from-Motion Revisited](https://demuc.de/papers/schoenberger2016sfm.pdf)),看论文难以深入理解,所以打算看看源码,也是为了完成一个小小礼物。_cudasetupargument 未定义的引用

windows使用libvlc进行网络串流遇到的一些问题及解决方法_libvlc网络-程序员宅基地

文章浏览阅读857次。windows使用libvlc进行网络串流遇到的一些问题及解决方法_libvlc网络

ffmpeg--libswscale(图像缩放、颜色空间和像素格式转换操作)-程序员宅基地

文章浏览阅读1k次。主要函数:(1) sws_getContext():使用参数初始化SwsContext结构体。 可以用另一个接口函数sws_getCachedContext()取代。(2) sws_scale():转换一帧图像。(3) sws_freeContext():释放SwsContext结构体。初始化方式2种:①sws_getContext②sws_al..._libswscale

随便推点

CyclicBarrier和CountDownLatch的区别_countdownlatch是一次性的,cyclicbarrier可以重用。-程序员宅基地

文章浏览阅读90次。CountDownLatch减计数,CyclicBarrier加计数。 CountDownLatch是一次性的,CyclicBarrier可以重用。 CountDownLatch强调一个线程或者多个线程等待其他线程执行完毕后执行、CyclicBarrier强调的是多个线程相互等待执行完毕..._countdownlatch是一次性的,cyclicbarrier可以重用。

coco2017数据集百度网盘链接_coco百度网盘-程序员宅基地

文章浏览阅读8.1k次,点赞28次,收藏22次。coco2017数据集百度网盘链接链接:https://pan.baidu.com/s/1NTdU1-h2b5r2Hwc9DiwPig提取码:fwou_coco百度网盘

IDEA配置tomcat时出现的问题及解决(HTTP状态404-未找到)_运行ideahttp状态 404 - 未找到-程序员宅基地

文章浏览阅读2.1w次,点赞8次,收藏75次。IDEA配置tomcat出现的问题及解决问题1:没有新建环境变量解决:在系统环境变量中添加变量CATALINA_BASE和CATALINA_BASE,两个变量的值都是tomcat的安装路径(如下图所示)问题2:tomcat设置depolyment有误解决:添加的Artifact是“项目名:war_exploded”而不是“项目名:war”。特别注意的是:Application context中要改成“/”(如下图所示)一开始的样子:成功后:..._运行ideahttp状态 404 - 未找到

J2EE快速开发平台-程序员宅基地

文章浏览阅读48次。2019独角兽企业重金招聘Python工程师标准>>> ..._j2ee开放平台

Docker快速搭建Jaeger开发环境(Docker 部署Jaeger all-in-one)_docker 部署jaeger 部署-程序员宅基地

文章浏览阅读6.4k次。通过Docker 快速搭建Jaeger 本地测试、开发联调环境。_docker 部署jaeger 部署

Kotlin中的@Metadata-程序员宅基地

文章浏览阅读8.3k次,点赞2次,收藏7次。本文简单介绍了下注解Metadata各个字段的含义及其与反射的关系。Kotlin 允许我们对各种 Kotlin 的语法特性进行访问,不过,这里应该有一个问题没有搞清楚:既然 Java 反射对于 Kotlin 的很多特性都无法访问和识别,换句话说,Java 虚拟机也是无法知道他们的,那么 Kotlin 的反射是如何做到这一点的呢?这实际上主要是得益于kotlin.Metadata这个..._@metadata

推荐文章

热门文章

相关标签