如何利用ffmpeg库实现对实时rtsp流每一秒截一张图

我想实现这个功能,利用ffmpeg库,对实时rtsp流每一秒截一张图.我自己写了段代码

        while(av_read_frame(pAVFormatContext,&pAVPacket) >= 0){
                    if(pAVPacket.stream_index == videoStreamIndex){
                                avcodec_decode_video2(pAVCodecContext,pAVFrame,&m_i_frameFinished,&pAVPacket);

                                    if(m_i_frameFinished){
                                                    sws_scale(pSwsContext,(const uint8_t* const *)pAVFrame->data,pAVFrame->linesize,0,videoHeight,pAVPicture.data,pAVPicture.linesize);
                                                    saveJpeg(&pAVPicture,videoWidth,videoHeight,++index);
                                }
                        sleep(1);
                    }
            av_free_packet(&pAVPacket);
        }

但是我发现这样写,每25张图,都是同一秒的内容.
有没有哪位大神知道应该怎么做?

2

2个回答

sleep(1);应该是sleep(1000);吧

0

1秒25帧, 肯定是一张图了。 。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ffmpeg 【从视频流中抓取图片】
从视频流中抓取图片。
ffmpeg实现每秒截一张图
每秒一张图 ./ffmpeg -ss 00:00 -i xxx.mp4 -f image2 -r 1 -t 02:45 %3d.jpg 每5秒一张图 ./ffmpeg -ss 00:00 -i xxx.mp4 -f image2 -r 0.2 -t 02:45 %3d.jpg 获取视频时长 [root@localhost bin]# ./ffmpeg -i xxx.mp4 2&...
FFMPEG截图 RTMP直播流
ffmpeg -probesize 1 -i "rtmp://{ip}/live/1 live=1" -y -t 0.001 -ss 1 -f image2 -r 1 c:/rtm.jpeg  -probesize 1:设置探测尺寸-i “rtmp://  live=1”    :后接地址-y                              :覆盖输出文件,即如果1.***文件已经存在的...
用live555接收实时摄像头的RTSP流,视频编码为H264,如何用FFMPEG解码?
我通过live555打开本地的SDP文件,然后通过这个文件为我的IP Camera建立个传输会话,已经成功,DummySink中的 afterGettingFrame这回调函数能不间断的调用,我直接把表示每帧fReceiveBuffer和frameSize传入了FFMPEG的解码器,但是 avcodec_decode_video2总是调用失败。我查看了一些帧的fReceiveBuffer,里面没有...
javacpp-FFmpeg系列补充:FFmpeg拉流截图实现在线演示demo(视频截图并返回base64图像,支持jpg/png/gif/bmp等多种格式)
javacpp-ffmpeg系列: javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片 javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据 javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转) 补充: ...
FFmpeg+Qt实现摄像头(rtsp)实时显示
最近,由于项目需要实时显示摄像头的图像,就学习了FFmpeg的相关知识。其实,在之前利用VLC-QT库已经实现了摄像头的实时显示,但延迟时间太长(1.5秒),因此就转而学习了FFmpeg,最终的延迟时间为0.6s,如果哪位大神有减小延迟的方法,还望不吝赐教。现将自己的实现思路展示出来,以供需要的人参考。这里主要将项目的主干部分videoplayer.cpp文件列出。所有源代码可以去http://gi
FFMPEG实现RTSP中H264数据流解码 并且实时播放
主要过程和ffmpeg实现视频播放的过程差不多 可以参考:https://blog.csdn.net/yunge812/article/details/79342089 主要改动原始文件的读取 播放器是播放本地文件 而我们这里需要读取的是RTSP中H264数据流 char filepath[1024] = "rtsp://184.72.239.149/vod/mp4://Bi...
FFMPEG实现RTSP中数据流解码 并且实时播放
FFMPEG实现RTSP中H264数据流解码 并且实时播放 具体解释参考https://blog.csdn.net/yunge812/article/details/79709307
基于ffmpeg解码播放rtsp视频流的Delphi源码
利用ffmpeg的动态库以及ffmpeg的Delphi头文件,写了一个播放视频文件或rtsp视频流的播放器,播放效果还可以,但目前没有解码音频。
ffmpeg实现H264压缩并且推流至RTSP
一、整体思路     1 利用ffmpeg读取出视频的一帧图像   存储在pFrame中     2 利用ffmpeg进行格式转换    sws_scale     3 利用ffmpeg编码存在pFrame中的图像   H264压缩     4 利用ffmpeg的 av_interleaved_write_frame( )  写入到rtsp端     5 辅助部分:解码、编码初始化,QT...
使用FFmpeg如何转发一个RTSP视频流
版权声明:转载请说明出处:http://www.cnblogs.com/renhui/p/6930221.html    转发RTSP流,这类需求一般出现于转发一些摄像头采集视频,并在摄像头上做RTSP Server,然后通过转发的设备将视频内容转发出去。或者是直接拉取网络上的一些RTSP服务器的内容流,然后进行转发。   如果转发设备是Windows,则需要做的事情,就是在Windo...
FFMPEG 截取RTMP直播流图片命令
CentOS 6.5  yum安装FFMPEG步骤 1. 手动添加yum源配置 vi /etc/yum.repos.d/dag.repo   [dag] name=Dag RPM Repository for Red Hat Enterprise Linux baseurl=http://apt.sw.be/redhat/el$release
利用ffmpeg录制rtsp流的方法总结(一)
这里主要结合平时对音视频的学习,将ffmpeg录制rtsp的方法在这里记录下。 首先,一般的录制过程都是按照如下的流程图进行录制,除非某些不存在音频的特殊情况。 这个是总体的录制流程,然而这个流程对于推流来说也适用。因此对于流程中每一步的实现,需要弄明白。 在进入主题之前,有必要对视频的基础知识有一个了解,这是十分有必要的。 这里可以参考雷神的博客https://blog.csdn....
live555接收实时视频流+ffmpeg解
本人视频监控行业的码农一枚,将平时快速学习的内容进行记录和分享,因水平有限,没学过音视频的高深理论和技术,所写内容多侧重开源库的使用,比较肤浅,如果文中有什么不足,希望大家多多指点。          如本文题目所述,文中介绍一下如何用接收rtsp实时流后对实时流进行解码,解码成yuv420。         live555 中的例子testRTSPClient.cpp 提供了一个创建rtsp
Windows远程桌面实现之五(FFMPEG实现桌面屏幕RTSP,RTMP推流及本地保存)
by fanxiushu 2018-07-10 转载或引用请注明原始作者。前面文章分别阐述了,如何抓取电脑屏幕数据,如何采集电脑声音,如何实现在现代浏览器中通过HTML5和WebSocket直接进行远程控制。这章阐述如何把采集到的电脑屏幕和电脑声音,通过一些通用协议,比如RTSP,RTMP把电脑桌面屏幕推送到更广泛的直播服务器上,达到电脑屏幕直播的效果。或者把电脑屏幕保存成本地的MP4或MKV视频...
android使用Ffmpeg JNI实时播放RTSP、RTMP等视频(主码流,子码流均能流畅播放)
前言:最近 公司项目需要在电视上 播放摄像头视频,而且可以随时切换流,延时要求在500ms以内,网上试过了 各种开源库 ,都不能达到要求。于是自己找到公司C++开发人员请教,最后终于完成,在此记录,也给有需求的小伙伴提供方案。 第一步,添加ffmpeg的so库,网上有很多版本,后面我会在demo里面提供,然后这是我的CmakeList文件: # For more informati...
【VLC核心一】播放流程梳理->live555收流+ffmpeg:AVCodec解码
VLC播放音视频的核心流程梳理,从live555收流到ffmpeg解码的整套流程 涉及到vlc核心类 收流相关:MultiFramedRTPSource、RTPSource、FramedSource、live555、es_out 包含live555收rtp包,拼帧,timestamp映射转换pts等 解码相关:decoder、video、clock、video_output、araw、mtime、dec、input、output、filters、directx等。 包含ffmpeg解码,应对音视频卡顿、延时
通过javacv对视频每隔1秒钟截取1张图片
之前每一秒钟截取一张图片,发现有些图片报了“[mpeg4 @ 05938aa0] warning: first frame is no keyframe”这个警告,而且截出的图片都是灰屏,根本没有图片。后来在网上找了很久,终于弄明白了,原来是ffmpeg它有“关键帧”这个说法,所以如果设置的帧的位置不是关键帧的位置的话,就可能截出的图片有问题。后来经过改进,终于搞定了。 public stat
FFmpeg+Qt+RTSP
利用FFmpeg库和Qt实现摄像头rtsp的实时显示
Qt基于ffmpeg的rtsp视频流接收播放工具
个人原创,仅供交流学习。
FFMPEG4.0.2版本上读取RTSP流,截图保存。
网上ffmpeg开发的代码很多,但是因为版本接口变化很大,都不知道用什么接口。找了很多资料和测试,总算有个可以执行的版本了。直接贴代码,需要的拿去测试吧。 capturertsp.c文件 /* * read from rtsp,and capture images with FFMPEG4.0.2 * Only support video decoder, not support audi...
基于live555实现H264实时流RTSP发送(VS2010)
Windows下利用live555实现H264实时流RTSP发送,VS2010编译版本。
ffmpeg之视频截取图片
基于ffmpeg对视频进行截取图片,操作步骤如下: 1.设置起始时间,可以先查看视频的元数据信息获取时长然后进行操作 2.执行截取命令 具体操作如下: ffmpeg -i c:\video\12_1.mkv -y -f image2 -ss 00:10:00 -vframes 1 -s 640x360 c:\video\test.jpg 命令说明如下: -i 输入 -...
基于FFmpeg的摄像头直播(推流)
原文地址: http://blog.csdn.net/wh8_2011/article/details/73506154 本文实现: 读取PC摄像头视频数据并以RTMP协议发送为直播流. 示例包含 1. FFmpeg的libavdevice的使用 2. 视频编码, 解码, 推流的基本流程 要使用libavdevice的相关函数, 首先需要注册相关组件 avdevice_register_...
ffmpeg命令行获取RTSP流并每秒截取一张解码存储为jpg
​ 由于项目的需求是要从IP摄像头的视频流每隔1秒截取帧数据并解码存为jpg供分析用,第一时间就想到了ffmpeg去实现。 准备工作 ​ ubuntu16.04的系统 ​ 一台IP摄像头 安装FFMEPG sudo apt-get install ffmpeg 每隔1秒截取一张图片并覆盖在同一张图片上 ffmpeg -i "rtsp://admin:123456@192.168.8.148:55...
利用ffmpeg录制rtsp流的方法总结(二)
利用ffmpeg进行MP4格式封装 不论是利用ffmpeg,还是MP4v2进行MP4格式的封装,前面获取流的操作基本相同。 首先是打开RTSP流,这里需要注意的是,在avformat_open_input()函数中设置超时时间,否则没有流时,会发生阻塞。设置代码如下:     AVDictionary* options = NULL;     av_dict_set(&options...
[good]ffmpeg直接获取rtsp监控摄像头流信息实现远程监控
转载地址:http://www.52codes.net/article/277.html 网上大多数的教程都是ffmpeg打开本地视频的教程,没有直接读取摄像头的教程的,有些摄像头都是rtsp的,这边吾爱的技术人员为大家提供了一个解决方案 ffmpeg直接获取摄像监控的rtsp实在远程监控,在线直播的功能 代码如下: 1 2 3 4
ffmpeg处理rtmp直播流(截图、收录)
首先应该感谢http://hi.baidu.com/newdreamllc/item/ee6beb0e2bbbcc8f02ce1ba6(天下文章一大抄),也不知道他是抄过来的还是自己写的,他给了我启发,当然不是抄的启发,而是里面内容确实让我完成了ffmpeg对rtmp直播流截图的处理,之前都有试过用opencv写个程序截图,但是写完发现,在使用载入视频流函数的时间比较长,这个也就容忍了,竟然在输入
ffmpeg 采集摄像机流(rtsp)后推流(rtmp)
VS2013,代码齐全,rtsp采集网络摄像机以后向流媒体服务器推流,vlc拉流。
使用ffmpeg将rtsp流转换成rtmp流
当视频流不能在浏览器直接进行播放时,可以使用ffmpeg进行转码,由于我这里的业务原因,不能在本地保存文件,因此我将rtsp流转换成了rtmp流。 工具: 1.ffmpeg     转换码流的主角,官方地址:http://ffmpeg.org/ 2.带有转rtmp模块的nginx容器nginx-rtmp-win32-master      下载地址:https://github.com/...
ffmpeg将RTSP传输的h264原始码流保存到文件中
利用ffmpeg将RTSP传输的h264原始码流保存到文件中,即保存的文件为原始h264码流,rtsp地址是测试地址,需要自己修改。很简单的一个测试程序。vs2010环境打开
ffmpeg 【rtsp实时流通过rtmp推送到服务端】
rtsp实时流通过rtmp推送到服务端
java 对rtmp视频流进行截图 ffmpeg
windows 下载安装ffmpeg插件,配置环境变量 ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks -vframes 1 -y -f image2 -t 1 -s 600x480 /usr/a.jpg -i “rtmp..........    ”    :后接自己的地址 -y                 
使用live555接受RTSP视频流并通过ffmpeg解码显示
这里直接使用官方的例子接收的视频流,并通过ffmpeg解码显示,如果直接把接受到的数据包,推给ffmpeg解码不成功,需要的接收到的数据进行处理再解码解码显示,具体做法如下: memset(decBuffer, 0, DUMMY_SINK_RECEIVE_BUFFER_SIZE); int nTotalLen = 0; unsigned char start_code[4] = { 0x00,...
EasyPlayer Android基于ffmpeg实现播放(RTSP/RTMP/HTTP/HLS)同步录像功能
之前有博客专门介绍了EasyPlayer的本地录像的功能,简单来说,EasyPlayer是一款RTSP播放器,它将RTSP流里的音视频媒体帧解析出来,并用安卓系统提供的MediaMuxer类进行录像.那EasyPlayerPro可以这样实现吗?答案是不太现实,因为Pro支持绝大多数的流媒体协议,并不单单是RTSP协议,包括hTTP\RTSP\RTMP\HLS\FILE等格式都支持.要将这些数据分别解
windows下 使用 ffmpeg 解码显示编码为H264的RTSP流
参考的文章:  100行代码实现最简单的基于FFMPEG+SDL的视频播放器    显示使用的是 SDL ,windows下用 GDI+ 显示数据里的图片,以下为代码 , typedef struct tagVideoData { tagVideoData() { bRunning = TRUE; hDC = NULL; } CString strRTSP;
MFC实现ffmpeg流媒体数据推送与接收(2.推流)
MFC实现ffmpeg流媒体数据推送与接收(2.推流)
Windows下利用live555实现H264实时流RTSP发送
文如其名,最近在做的项目要求利用RTSP协议转发处理完的H264视频数据给上一层客户端,环境是Windows的VS2013,于是就各种百度谷歌找代码。结果在得到利用live555去做比较简单的结论的同时也悲情地发现,网上别人贴出来的代码基本都是Linux上面的。在修改了两份来适用于Windows无效后,又一次陷入了百度谷歌的无尽搜索中。Anyway,最后终于解决了,所以贴出代码跟大家分享下,希望能
使用ffmpeg+nginx进行rtsp视频流至rtmp视频流的转换
说明: 操作系统:window server 2008 R2   步骤: 1、安装ffmpeg: 通过官网http://www.ffmpeg.org/download.html或其他途径下载ffmpeg,解压到程序安装位置即可 2、安装nginx 需要下载旧版nginx并安装nginx-rtmp-module(我使用的是从网上下载的nginx-rtmp集成版,版本号:nginx:1....
海康IPC+ffmpeg+nginx+ckplayer实现网页实时预览监控视频
第一次接触摄像头  捣腾了好几天  现在记录下搭建过程 以免忘掉 实现思路和其他大神的基本一致 :1.通过IPC的rtsp协议获取rtsp流  2.使用ffmpeg转成rtmp协议  3.通过nginx发布rtmp流  4.使用ckplayer播放 一、准备: 1.海康IPC 2.交换机 3.笔记本充当服务器 4.ffmpeg   下载地址:https://ffmpeg.ze
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 一张图看懂如何学习大数据 对java库的学习