一、前言很多人在用ffmpeg做视频解码的时候,都会遇到一个问题,如何暂停,如果打开的是本地视频文件,暂停你只需要停止解码即可,但是视频你会发现根本没用,一旦你停止了解码,下次重新解码的时候,居然还是以前的图片,他是从你最后暂停开始的地方重新解码的,这就懵逼了,为啥呢?我个人的理解是视频这玩意,一旦你打开了,他就源源不断涌过来,你不处理,他就越来越多,你必须要读取他,从缓冲区拿走这些
前面基本介绍了整个ffmepg的编解码相关的内容,本文介绍ffmpeg在流媒体上的应用,主要是流媒体的发送和接收。通常流媒体应用协议有有rtmp、rtsp,以及其他的流媒体协议如http、udp、rtp等。直接使用ffmpeg.exe命令行工具介绍见文章FFmpeg发送流媒体的命令(UDP,RTP,RTMP)。本文简单介绍流媒体接收的功能(),将一个流媒体的裸保存为文件,并比较不同流媒体协议
转载 2023-07-11 14:46:58
243阅读
## 实现 Docker Ffmpeg RTSP ### 简介 在本文中,我将向你介绍如何使用 Docker 和 Ffmpeg 实现 RTSP RTSP (Real Time Streaming Protocol) 是一种用于实时传输音视频数据的网络传输协议,而 Ffmpeg 是一个功能强大的开源多媒体处理工具。 ### 整体流程 下面是实现 Docker Ffmpeg RTS
原创 2023-08-17 18:17:25
834阅读
一:windows下搭建rtsp二:ubuntu+RTSP前提是ffmpeg已经准备好。rtsp服务器下载rtsp服务器下载https://github.com/aler9/rtsp-simple-server/releases windows下搭建rtsp选择windows版本打开exe,rtsp服务器就被启动了另外打开cmd进行推,支持ts,mp4等 输入:ffmpeg -re -s
转载 2023-07-31 17:31:17
559阅读
主要实现功能主要想实现出的demo样式为,一台设备抓屏并且将抓到的屏幕传输到另一台设备上。主要实现的环境如下:windows抓屏推虚拟机上搭建rtsp流媒体服务器(centos7)windows实现关于代码中的 const char* url = “rtsp://192.168.83.129:8554/zyx”;192.168.83.129是我的虚拟机ip地址后面的/zyx可以随便写,但是要
转载 8月前
106阅读
项目使用mingw环境g++5.3,C++调用ffmpeg接收rtsp,再通过C#显示。结构上是C#调用C++的so文件,读取得到的视频帧(RGB888格式),通过图片控件显示。一开始是使用opencv打开视频源,本地文件和rtsp的源使用一样的接口,方便使用。但是通过opencv打开rtsp源的时候,发现720p2Mbit的视频能够正常打开,但1080p的视频打开后出马赛克,卡顿比较多。而同样
转载 5月前
97阅读
最近的项目中有这样一个功能需求,就是通过海康的摄像头录制一段视频,其实,海康官方提供的提供的SDK中有关于视频录制的接口,但是SDK都是x86和64的,没有支持arm的版本。为了实现这个录制视频功能,考虑了这样一个实现方案就是利用ffmpeg将摄像头的rtsp视频存储为mp4文件。这里就用到一个工具ffmpeg。这篇文章主要分为几个部分吧:1.介绍一下什么时ffmpeg。2.再windows,u
前言本篇博客总结下在jni中使用ffmpeg播放RTSP视频的使用实例依赖库编译自行编译参考这篇博客:https://www.jianshu.com/p/f2fa2243ad17demo里也会提供编译好的so库项目构架从上图中可以看到cpp文件夹内存放的ffmpeg头文件、jni的native代码和CMakeLists文件jniLibs文件夹中存放的是armv7构架编译的ffmpeg动态库文件动
转载 9月前
893阅读
# 使用Java调用FFmpegRTSP ![ffmpeg]( ## 引言 FFmpeg是一款开源的跨平台多媒体解决方案,具有强大的音视频处理能力。它支持多种音视频格式的编解码、转码、流媒体处理等功能。RTSP(Real Time Streaming Protocol)是一种用于实时传输音视频数据的协议,常用于视频监控系统、视频会议系统等场景。本文将介绍如何使用Java调用FFmpeg
原创 8月前
611阅读
最近公司有个视频的项目,需要调用FFMPEG的API来实现部分功能,这么多语言用下来,还是C#最舒服,所以就还是希望用C#来写,但C#不能直接调用ffmpeg的静态库,动态库又得采用pinvoke方式,ffmpeg那么多API,还涉及类型转换,要完全实现工作量真不小,开源项目SharpFFmpeg也很久没更新了,版本太老,正要自己实现的时候发现了ffmpeg.autogen这个项目,几乎是全部支持
前言:最近需要把rtsp的​​视频​​保存为MP4文件(就是录制直播)。刚开始用的javacv的FFmpegFrameGrabber和FFmpegFrameRecorder,但是声音和视频无法调整,声音和视频一直对不上而且录制的视频也有问题每次录10秒保存的视频却有18秒。
转载 2023-07-06 09:43:12
584阅读
一、概述设备---rtsp协议(发i帧为主是重要数据,p帧为辅有多种)/其它协议---合成H264----播放工具解码播放(webrtc、rtmp、flv等)       设备---APP(p2p打通设备发的是封装好的音频格式格式)注:播放器需要播放时网络上的视频时,首先经过解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几
转载 2023-08-03 16:46:23
388阅读
rtsp-client.go这个模块主要实现了客户端的功能。也就是在网页上点击“分发”按钮后,easydarwin会向用户填写的源地址,然后再转发出去,在向源地址的时候,easydarwin相当于是一个rtsp客户端。所以这里使用rtsp-client.go。EasyDarwin中有两个模块分别是rtsp-server和rtsp-client,rtsp-server分析见:rtsp
1、GB sip和rtsp实际上,sip协议和rtsp协议大同小异,并没有什么本质上得不同,那为什么我们不使用rtsp 而转而使用GB28181国标得sip协议?原因是:使用得方向不同,我们使用rtsp是作为客户端,这时摄像机是服务端,而使用国标sip,摄像机是客户端,我们得服务器是服务端,方向不同,所以更好得方式是使用接收推,当然,世事无绝对,由于某些场合得需求,是使用rtsp比较合适
原因:由于上次简单分析了一下RTP推,并创建了一个简单demo用于RTP推,为了检测RTP推故在此简单实现一个播放器用于播放RTP.概述:通过url创建解码器,但是由于没有使用sdp作为信息传递,故解码器信息需要在接收到sps和pps后,才会被真实填充,通过获取的音视频的pts进行音视频通过,重点为pts的时间戳转换。下面进行伪代码分析:可以看出流程为常规流程,通过打开url获取对应的AV
转载 2023-08-11 12:33:32
400阅读
项目使用mingw环境g++5.3,C++调用ffmpeg接收rtsp,再通过C#显示。结构上是C#调用C++的so文件,读取得到的视频帧(RGB888格式),通过图片控件显示。一开始是使用opencv打开视频源,本地文件和rtsp的源使用一样的接口,方便使用。但是通过opencv打开rtsp源的时候,发现720p2Mbit的视频能够正常打开,但1080p的视频打开后出马赛克,卡顿比较多。而同样
转载 2023-07-11 16:28:40
394阅读
ffmpeg实现rtsp转rtmp/http-flv一、安装FFmpeg1、解压并放置在某个盘符的根目录下2、配置环境变量(1)找到bin目录所在文件夹(2)配置环境变量(3)检查是否安装完成二、安装Nginx1、解压压缩包并放置在某盘符下2、修改nginx.conf文件3、启动Nginx三、测试1、直播CMD测试(如本地环境无直播,直接看4,回放流)(1)低画质、低延迟a.输出rtmp地址
转载 8月前
263阅读
ffmpegFFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward,是一套可以用来记录、转换数字音频、视频,并能将其转化为的开源计算机程序。平时我们下载的电影的文件的后缀(avi,mkv,rmvb等)就是所谓的封装方式,解封装就是将这些封装格式转为压缩的视频数据(h264)和压缩音频数据(aac),解码就是把压缩的视频数据(h264)和压缩音频数据(aac),
1)ffmpeg如何判断一帧数据是正确的?ffmpeg有没有错误处理的模式,能使花屏的帧(h264格式的)不显示出来?2) H264网络传输过程中丢包造成马赛克问题? 原因:1. 接收网络数据包后没有调整包的顺序,譬如说接受包的顺序是1,3,4,2,如果没有调整顺序的话,发送给解码器的顺序也是1,3,4,2,这样肯定会出现马赛克 ; 2. 接收网络数据包后没有没有合并数据包,众所周知,一
FFmpeg学习之七(视音频缓存)缓存队列实现源码下载1.原理2.实现细节2.1 结构体定义2.2 类定义2.3 初始化队列2.4 入队2.5 出队2.6 重置空闲队列数据3.完整代码4.调用缓存队列实例循环缓存队列实现原理实现细节完整代码 缓存队列实现1.原理初始化固定数量的结点装入空闲队列,当相机回调产生数据后,从空闲队列头部取出一个结点将产生的每一帧图像buffer装入,然后入队到工作队
  • 1
  • 2
  • 3
  • 4
  • 5