
视频处理
文章平均质量分 62
Hello,C++!
这个作者很懒,什么都没留下…
展开
-
流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析
上面又提到了sip协议,这里顺带说一下,sip协议的全称是会话初始协议(Session Initiation Protocol)是一种信令协议,最早是用于ip电话交互的,也是一种会话协商协议,不过提供更好的灵活性与交互性,简单的交互就是invite,200ok,ack三步交互,最重要的就是sip的offer-answer模型,国内的gb28181标准就引用了sip协议作为其会话协商的标准协议。一般提到rtp总会提到rtcp协议,它们是配套的一套协议,国内交通部也有的只要rtp协议,不要rtcp协议的。转载 2023-02-24 09:58:13 · 1519 阅读 · 0 评论 -
视频流PS打包方式详解
PS流: Program Stream(节目流),简称PS流,将一个或多个分组但有共同的时间基准的基本数据流(PES)合并成一个整体流,由PS包组成,而一个PS包又由若干个PES包组成(到这里,ES经过了两层的封装)。PS包的包头中包含了同步信息与时钟恢复信息。一个PS包最多可包含具有同一时钟基准的16个视频PES包和32个音频PES包。ES流: Elementary Stream(基本码流),是由编码器输出的原始基础码流,它只含有解码器所必需的、并与原始图象或原始音频相接近的信息。转载 2023-02-16 16:00:01 · 1279 阅读 · 0 评论 -
技术解码 | GB28181 协议简介及实践
GB28181 协议指的是国家标准 GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》1,该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。转载 2023-02-16 14:44:06 · 3424 阅读 · 0 评论 -
rtsp-simple-server + srs搭建流媒体服务器
1、下载rtsp-simple-server我下载的是windows版本的。下载完后直接运行exe文件即可启动。2、ubuntu 16.04环境下载、编译、运行SRS3、使用ffmpeg给rtsp-simple-server推流4、使用ffmpeg从rtsp-simple-server拉取rtsp流并转换为rtmp流后推送到srs服务器5、从srs服务器拉流或者用VLC打开RTMP直播流......原创 2022-07-29 17:45:45 · 8271 阅读 · 3 评论 -
DemuxException: type = CodecUnsupported, info = Flv: Unsupported codec in video frame: 2
在浏览器中拉流播放报错DemuxExceptiontype=CodecUnsupported,info=FlvUnsupportedcodecinvideoframe2。推流加上参数-vcodeclibx264,表示强制使用libx264进行编解码。原创 2021-03-31 10:13:22 · 11290 阅读 · 4 评论 -
超详细MP4格式分析
这⾥先给出来的是视频的stts,Numberofentries,这个参数需要注意并不是sample的个数,sample的实际数量需要将每个entry的samplecount进⾏累加才是真正的sample个数。下面的解释就是chunk1-84,都是一一对应1个sample,chunk85,一一对应2个sample,chunk86-88,一一对应一个sample,chunk89,一一对应2个sample,chunk90,一一对应一个sample。,并没有给出每个sample在⽂件中的偏移。...转载 2022-07-23 06:04:58 · 2903 阅读 · 0 评论 -
ffmpeg笔记(三)ffmpeg指令总结
使用[0v][1v][2v][3v]将输入的4个视频流去除,分别进行缩放处理,然后基于nullsrc生成的画布进行视频平铺,命令中自定义upperleft,upperright,lowerleft,lowerright进行不同位置平铺。在FFmpeg中加入图片水印有两种方式,一种是通过movie指定水印文件路径,另外一种方式是通过filter读取输入文件的流并指定为水印。图片logo.png将会打入到input.mp4视频中,显示在x坐标50、y坐标20的位置。修改字体透明度,修改字体颜色。........原创 2022-07-18 14:43:43 · 1385 阅读 · 0 评论 -
ffmpeg笔记(一)音视频基础
YUV的"Y"分量表示亮度(也就是灰阶值)、"UV"分量表示色度。其中“u”偏蓝色调,“v”偏红色调。YUV将亮度Y和UV分开进行表示的好处1、避免互相干扰,单靠Y也可以完整显示一张黑白图片,解决了黑白电视与彩色电视的兼容问题。2、降低色度(UV)的采样率而不会对图像质量影响太大降低了视屏信号传输时对频宽带宽的要求。可以通过对UV的采样频率修改降低带宽,节省网络流量,间接降低了视频延时问题。............原创 2022-07-17 10:36:05 · 1138 阅读 · 1 评论 -
ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译
废话不多说,直接开干。原创 2022-07-17 07:31:25 · 555 阅读 · 0 评论 -
vs2017下gstreamer编译
1、下载https://gitlab.freedesktop.org/gstreamer/gst-build2、安装Git3、安装python374、安装ninja: pip3 install ninja5、安装meson: pip3 install --user meson6、管理员权限打开cmd,进入gst-build的源码目录"D:\gstreamer-build\gst-build-master"7、执行meson -Dauto_features=disabled -Dgstrea原创 2022-02-08 18:15:44 · 1499 阅读 · 0 评论 -
gstreamer将RTSP转jpg图片保存
gst-launch-1.0 rtspsrc location="rtsp://admin:qwer1234QWER@10.0.16.3:554/h264/ch1/sub/av_stream" ! rtph264depay ! h264parse ! openh264dec ! videorate ! jpegenc ! multifilesink location="img_%06.jpg"原创 2021-11-08 15:36:15 · 2037 阅读 · 1 评论 -
appsink的功能
通常方法:gst_app_sink_pull_sample(), gst_app_sink_pull_preroll()gst_app_sink_pull_preroll(),gst_app_sink_pull_preroll()max-buffers 属性 限制buffer size!!! If the application is not pulling samples fast ...转载 2019-12-18 18:05:06 · 2458 阅读 · 0 评论 -
gstreamer部分命令
显示一个视频测试图案使用下面管道来显示一个视频测试图案$ gst-launch videotestsrc ! autovideosink2.jpg其中autovideosink元件自动检测视频输出,videotestsrc元件可利用”pattern”属性生成多种格式的测试视频,如下面为雪花图案测试视频$ gst-launch videotestsrc pattern=snow ! aut...原创 2019-12-18 14:35:33 · 1001 阅读 · 0 评论 -
GstAppSrc简介
1、应用程序可以通过appsrc元件向管道中插入数据。appsrc有别于其他GStreamer元件,它提供额外的API函数。通过链接libgstapp库来使用appsrc,直接调用其方法或者使用appsrc的响应信号。2、在操作appsrc前,caps属性必须被设定为一个固定的caps,以描述被推进appsrc数据的格式。当推送缓存搭到一个未知的caps即caps没有被设置,这时会发生一个异常。...转载 2019-12-18 16:46:04 · 1711 阅读 · 0 评论 -
gstreamer的rtsp转rtmp
VideoPusher.h#pragma once#include <iostream>#include <gst/gst.h>#include <gst/app/gstappsink.h>#include <glib.h>#include <boost/shared_ptr.hpp>#include <mutex>#ifndef INT64_C #define INT64_C(c) (c ## LL) #defi原创 2021-03-27 15:42:34 · 2615 阅读 · 3 评论 -
gstreamer每隔5秒将视频存为jpeg图片
gst-launch-1.0.exe videotestsrc ! video/x-raw, format=I420, width=400, height=400, framerate=1/5 ! identity sync=true ! timeoverlay ! jpegenc ! multifilesink location="img_%06.jpg"原创 2021-11-02 16:07:36 · 1657 阅读 · 0 评论 -
基于Gstreamer的实时视频流的分发
1 OverviewGstreamer是一款功能强大、易扩展、可复用的、跨平台的用流媒体应用程序的框架。该框架大致包含了应用层接口、主核心框架以及扩展插件三个部分。应用层接口主要是给各类应用程序提供接口如:多媒体播放器、流媒体服务器、视频编辑器等;接口的形式多样化,可以是信号、回调函数、函数调用等。主核心框架就是流媒体的实际运行框架,其包含了媒体处理、内部消息处理、数据的网络传输、以及插件系统实现的功能等;主核心框架又包含了一系列的子模块称之为element,每个element完成一项单一的功能转载 2021-10-26 09:36:10 · 3779 阅读 · 2 评论 -
gstreamer向appsrc发送编码数据的代码
经过一番折腾,终于找到可用的办法。下面代码,测试通过:#include <gst/gst.h> static FILE * appSrcFile = NULL;static int read_counter = 0;static char read_buffer[4096]; static void cb_need_data (GstElement *source, g...转载 2019-12-18 17:48:43 · 724 阅读 · 1 评论 -
【gstreamer】最简单的使用Gstreamer播放视频文件的代码
播放mp4文件extern "C"{ #include <gst/gst.h>}gint main(int argc, char *argv[]){ gst_init(&argc, &argv); GstElement * pipeline0 = gst_parse_launch("filesrc location = e:/silent_sheep....转载 2019-12-13 00:40:02 · 1304 阅读 · 0 评论 -
FFmpeg入门系列教程(一)
基础知识1、码流(码率)码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s。一般来说同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内取样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。当然,码流越大,文件体积也越大,其计算公式是文件体积=时间X码率/8。2、采转载 2020-08-03 22:22:51 · 1112 阅读 · 0 评论 -
FFmpeg入门系列教程(二)
FFmpeg 常用数据结构讲解1)AVFormatContext 封装格式上下文结构体,也是同龄全局的结构体,保存了视频文件封装格式相关信息 * iformat: 输入视频的AVInputFormat * nb_steams: 输入视频的AVSteam个数 * steams:输入视频的AVSteam[]数组 * duration: 输入视频的时长(以微秒为单位) * bit_rate: 输入视频的码率2)AVInputFormat 每种封装格式(转载 2020-08-03 22:30:08 · 424 阅读 · 0 评论 -
ffmpeg推流到nginx服务器,并使用vlc播放rtmp视频
1、下载ffmpeg2、下载nginx。windows下ngix下载:https://download.youkuaiyun.com/download/qq_23350817/126805153、开启rtsm服务器/nginx:nginx.exe -c conf/nginx-win-rtmp.conf4、使用ffmpeg将视频文件转化为视频流并推送给rtmp服务器:ffmpeg.exe -re -i test.wfm -f flv rtmp://127.0.0.1:1935/live/1235、打开vlc原创 2020-08-02 16:13:11 · 1288 阅读 · 0 评论 -
ffmpeg库以及运行环境下载地址
https://ffmpeg.zeranoe.com/builds/win64/shared/原创 2020-08-10 10:52:07 · 2399 阅读 · 0 评论 -
Windows 编译 FFMpeg
一、安装 MinGW下载好MinGW以后,安装时勾选以下选项:mingw-devloper-toolkitmingw32-basemingw32-gcc-g++msys-base安装完成以后设置系统高级环境变量"E:\MinGW\bin",然后按住Win+R 打开cmd,输入gcc --version 测试是否成功C:\Users\Schips>gcc --versiongcc (x86_64-posix-seh, Built by strawberryperl.com proje转载 2021-10-07 22:32:00 · 504 阅读 · 0 评论 -
FLV封装原理
FLV(Flash Video)是Adobe公司设计开发的一种流行的流媒体格式,由于其视频文件体积轻巧、封装简单等特点,使其很适合在互联网上进行应用。此外,FLV可以使用Flash Player进行播放,而Flash Player插件已经安装在全世界绝大部分浏览器上,这使得通过网页播放FLV视频十分容易。目前主流的视频网站如优酷网,土豆网,乐视网等网站无一例外地使用了FLV格式。FLV封装格式的文件后缀通常为“.flv”。总体上看,FLV包括文件头(File Header)和文件体(File Body)两转载 2020-08-03 23:13:45 · 431 阅读 · 0 评论 -
I帧、P帧、B帧、IDR 关键帧介绍
视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面转载 2020-07-30 13:25:20 · 4758 阅读 · 0 评论