福优学苑@音视频+流媒体
福优学苑; 专注FFmpeg、音视频、流媒体
展开
-
FFmpeg入门详解之129:SRS源码分析之run_directly_or_daemon() 函数
先分析 run_directly_or_daemon() 函数,这个函数的代码比较简单,就不画流程图,直接截图代码。2,SRS的守护进程没用 setsid() 跟 umask(022) ,也就是当前进程没有脱离 从父进程继承 的 SessionID、进程组ID和打开的终端。如果茫无目的地看源码,把日志处理,配置加载,等等源码都看一遍,虽然能看完,但是印象会不太深刻。因为没有目标跟需求驱动。首先找到 SRS 的 RTMP 业务的入口,因为 SRS 是多个功能混合的,他支持 RTMP,SRT,webrtc。原创 2023-03-10 08:27:18 · 401 阅读 · 0 评论 -
FFmpeg入门详解之128:SRS源码分析之Main函数流程
1,srs_thread_initialize() 里面有非常多的初始化操作,日志操作,配置文件,等等,请看《SRS4.0源码分析-srs_thread_initialize》。分别在 srs_main_ingest_hls.cpp ,srs_main_mp4_parser.cpp,srs_main_server.cpp 3 个文件里面。,srs 只支持小端序机器,大端序机器不支持。4,run_directly_or_daemon() ,此函数开始运行 SRS,可能在前台运行,也可能以守护进程运行。原创 2023-03-10 08:10:34 · 302 阅读 · 0 评论 -
FFmpeg入门详解之127:GB28181平台安装部署过程 - 可接入海康、大华、华为、科达、宇视等等设备和平台
本文章向大家介绍GB28181平台安装部署过程 - 可接入海康、大华、华为、科达、宇视等等设备和平台,主要包括GB28181平台安装部署过程 - 可接入海康、大华、华为、科达、宇视等等设备和平台使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。所在位置:LiveSMS-windows-***.zip, LiveSMS-linux-***.tar.gz。所在位置:LiveCMS-windows-***.zip, LiveCMS-linux-***.tar.gz。原创 2023-02-21 13:53:07 · 1127 阅读 · 0 评论 -
FFmpeg入门详解之126:视频监控安防平台-国标28181平台(支持国标28181转RTSP/RTMP/HLS/WEBRTC直播)
17、支持设备的云台PTZ控制,控制类型:上"up",下"down",左"left",右"right",左上"leftup",左下"leftdown",右上"rightup",右下"rightdown",镜头近"zoomin",镜头远"zoomout", 焦距远"focusfar",焦距近"focusnear", 设置预置位"setpos",调预置位"callpos"8、支持国标GB28181 历史视频下载 (支持UDP、TCP主动(tcpactive)、TCP被动(tcppassive))原创 2023-02-21 13:49:15 · 636 阅读 · 0 评论 -
FFmpeg入门详解之125:onvif与GB/T-28181的小白入门
参考课程:FFmpeg播放器原理与实战。原创 2022-11-07 14:02:34 · 2039 阅读 · 0 评论 -
FFmpeg入门详解之124:Qt5 FFmpeg单路网络摄像头采集预览
RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。原创 2022-11-07 13:51:19 · 1461 阅读 · 0 评论 -
FFmpeg入门详解之123:代码封装:摄像头h264/5编码并存储
源码工程:S26_Test3H264/5编码案例实战源码参考:extern "C"{};}ret) {}}}{}}//除了以下方法,另外还可以使用avcodec_find_encoder_by_name()来获取AVCodecif (!}if (!原创 2022-11-07 13:49:08 · 1341 阅读 · 0 评论 -
FFmpeg入门详解之122:Qt5 FFmpeg本地摄像头采集预览实战
源码工程:S26_Test2FFmpeg命令行处理摄像头命令执行后输出的结果如下(注:中文的设备会出现乱码的情况)。列表显示设备的名称很重要,输入的时候都是使用“-f dshow -i video="{设备名}"”的方式。获取摄像头数据(保存为本地文件或者发送实时流)编码为H.264,保存为本地文件下面这条命令,实现了从摄像头读取数据并编码为H.264,最后保存成mycamera.mkv。原创 2022-11-07 13:46:17 · 2551 阅读 · 0 评论 -
FFmpeg入门详解之121:颜色空间转换RGB和YUV的原理与实战
三种颜色空间模型:RGB、YUV、HSV一、概述颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间。但被描述的颜色对象本身是客观的,不同颜色空间只是从不同的角度去衡量同一个对象。颜色空间按照基本机构可以分为两大类:基色颜色空间和色、亮分离颜色空间。前者典型的是RGB,后者包括YUV和HSV等等。原创 2022-11-02 14:19:36 · 3360 阅读 · 0 评论 -
FFmpeg入门详解之120:SDL2.0的编程回顾总结并操练
参考课程:“FFmpeg4.3--系列8--SDL2.0小白入门”SDL2.0知识框架体系。原创 2022-11-02 14:07:30 · 543 阅读 · 0 评论 -
FFmpeg入门详解之119:FFmpeg的SDK编程回顾总结并操练
参考课程:“FFmpeg4.3--系列5--SDK二次开发详解与实战”FFmpeg主要框架FFmpeg骨架:“八大金刚”核心开发库FFmpeg SDK案例实战FFMPEG中结构体很多。最关键的结构体可以分成以下几类:AVPacket: 压缩后的音视频包:h264/265/mpeg4/...,, mp3/ac3/aac/...AVFrame: 未压缩的音视频帧:RGB/YUV, PCMa) 解协议(http,rtsp,rtmp,mms,hls,file,tcp,udp,......)原创 2022-11-02 14:06:15 · 1182 阅读 · 0 评论 -
FFmpeg入门详解之118:FFmpeg4.3 SDL2 Qt5开发环境的搭建
正在上传…重新上传取消。原创 2022-11-02 14:04:03 · 615 阅读 · 0 评论 -
FFmpeg入门详解之117:视频监控的架构和流程
视频监控视频监控是安全防范系统的重要组成部分,英文Cameras and Surveillance。传统的监控系统包括前端摄像机、传输线缆、视频监控平台。摄像机可分为网络数字摄像机和模拟摄像机,可作为前端视频图像信号的采集。它是一种防范能力较强的综合系统。视频监控以其直观、准确、及时和信息内容丰富而广泛应用于许多场合。近年来,随着计算机、网络以及图像处理、传输技术的飞速发展,视频监控技术也有了长足的发展。最新的监控系统可以使用智能手机担当,同时对图像进行自动识别、存储和自动报警。原创 2022-11-02 14:01:27 · 3455 阅读 · 0 评论 -
FFmpeg入门详解之116:rtsp live555摄像头直播
第四步,vlc或ffplay播放。第三步,扩展live555。第一步,读取摄像头数据。第二步,x264编码。原创 2022-11-02 13:54:45 · 1240 阅读 · 0 评论 -
FFmpeg入门详解之115:X264编码
profile 翻译成中文是“配置文件”的意思,可以理解为通过这个参数对 x264 编码的一些基本参数进行了限制。可以取的值包括:baseline这个级别是设置最严格的配置文件,支持 I/p 帧不支持 B 帧,只支持无交错(逐行Progressive、隔行interlaced)和 CAVLC 编码,一般用于低阶和需要额外容错的应用,例如视频通话和会议电视等实时视频通信。main。原创 2022-11-02 13:53:11 · 817 阅读 · 0 评论 -
FFmpeg入门详解之114:DirectShow读取摄像头数据
DirectShow GraphEdit(graphedt.exe)来进行分析:在上图中可以直观的看到播放这个媒体文件的基本模块,七个模块按广度顺序:读文件模块, 解复用模块, 视频解码模块, 音频解码音频, 颜色空间转换模块,视频显示模块,音频播放模块。按照DirectShow的称呼, 一个模块叫做一个filter(过滤器),模块的输入输出口叫做pin(管脚), 有input pin 和output pin两种;原创 2022-11-02 13:51:04 · 1732 阅读 · 0 评论 -
FFmpeg入门详解之113:live555简介
Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。下载。原创 2022-11-02 13:49:43 · 1736 阅读 · 0 评论 -
FFmpeg入门详解之112:RTP/RTCP协议讲解
是用于Internet上针对多媒体数据流的一种传输层协议.RTP 协议和 RTP 控制协议 RTCP 一起使用,而且它是建立在 UDP 协议上的.RTP 不像http和ftp可完整的下载整个影视文件,它是以固定的数据率在网络上发送数据,客户端也是按照这种速度观看影视文件,当影视画面播放过后,就不可以再重复播放,除非重新向服务器端要求数据。RTP是针对Internet上多媒体数据流的一个传输协议, 由IETF(Internet工程任务组)作为RFC1889发布。原创 2022-11-02 13:46:54 · 1754 阅读 · 0 评论 -
FFmpeg入门详解之111:RTSP协议2
方法记号表示资源上执行的方法,它区分大小写。新方法可在将来定义,但不能以$开头。已定义方法如下表所示。RTSP方法RTSP方法方法方向对象要求含义DESCRIBEC->SP,S推荐检查演示或媒体对象的描述,也允许使用接收头指定用户理解的描述格式。DESCRIBE的答复-响应组成媒体RTSP初始阶段S->CP,S可选当从用户发往服务器时,ANNOUNCE将请求URL识别的演示或媒体对象描述发送给服务器;反之,ANNOUNCE实时更新连接描述。原创 2022-10-21 13:47:40 · 1120 阅读 · 0 评论 -
FFmpeg入门详解之110:RTSP协议讲解
TCP/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。正在上传…重新上传取消RTSP是基于文本的协议,采用ISO10646字符集,使用UTF-8编码方案。行以CRLF中断(\r\n:10,13:0x0A,0x0D),包括消息类型、消息头、消息体和消息长。原创 2022-10-21 13:46:17 · 2366 阅读 · 0 评论 -
FFmpeg入门详解之109:m3u8加密--HLS 架构简介及播放加密的HLS
HLS 全称是 HTTP Live Streaming, 是一个由 Apple 公司实现的基于 HTTP 的媒体流传输协议. 他跟 DASH 协议的原理非常类似. 通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件, 然后提供一个配套的媒体列表文件, 提供给客户端, 让客户端顺序地拉取这些媒体文件播放, 来实现看上去是在播放一条流的效果.原创 2022-10-21 13:41:55 · 3058 阅读 · 0 评论 -
FFmpeg入门详解之108:m3u8整理3--关于HLS之m3u8小结
m3u8 文件是m3u文件的扩展。在该rfc中定义了扩展的关键字:其中:定义每个TS的最大的duration。定义当前m3u8文件中第一个文件的序列号,每个ts文件在m3u8文件中都有固定唯一的序列号,该序列号用于在MBR时切换码率进行对齐。#EXT-X-KEY定义加密方式和key文件的url,用于取得16bytes的key文件解码ts文件。//hls 推流过程;视频源 推送流给服务器的时候,用的是http协议的 post方法,post的是ts文件。原创 2022-10-21 13:40:19 · 3726 阅读 · 0 评论 -
FFmpeg入门详解之107:m3u8整理2--HLS、RTMP、HTTP-FLV直播协议
HLS、RTMP、HTTP-FLV直播协议。原创 2022-10-21 13:39:04 · 1396 阅读 · 0 评论 -
FFmpeg入门详解之106:m3u8整理1
HLS指Apple的HLS(Http Live Streaming),本身就是Live(直播)的,不过Vod(点播)也能支持。友好的CDN分发方式:目前CDN对于RTMP也是基本协议,但是HLS分发的基础是HTTP,所以CDN的接入和分发会比RTMP更加完善。跨平台:PC主要的直播方案是RTMP,也有一些库能播放HLS,譬如jwplayer,基于osmf的hls插件也一大堆。,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。ts 切片的实际时长。原创 2022-10-21 13:36:30 · 1179 阅读 · 0 评论 -
FFmpeg入门详解之105:m3u8文件格式详解
m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。当 m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。其格式如下所示:#EXTM3U对于点播来说,客户端只需按顺序下载上述片段资源,依次进行播放即可。而对于直播来说,客户端需要。原创 2022-10-21 13:35:12 · 2796 阅读 · 0 评论 -
FFmpeg入门详解之104:Win10快速安装OpenSSL(不用编译源码)
OpenSSL是web安全通信的基石,没有OpenSSL,可以说我们的信息都是在裸奔。要想了解OpenSSL,有几个前置的概念需要先熟悉一下:SSLSSL的全名叫做secure socket layer(安全套接字层),最开始是由一家叫网景的互联网公司开发出来,主要是防止信息在互联网上传输的时候不被窃听或者篡改,后来网景公司提交SSL给ISOC组织做标准化,改名为TLS。正在上传…重新上传取消有些同学可能会好奇,说好好的数据怎么就被窃听以及修改呢?原创 2022-10-21 13:33:48 · 2027 阅读 · 0 评论 -
FFmpeg入门详解之103:FFmpeg Nginx VLC打造M3U8直播点播
Nginx: web服务器(win10,本地nginx)FFmpeg: m3u8切片(4.3.1)VLC: 点播客户端切片命令行:H.264: avcl(MP4:KLV), annexb(附录B:Nalu)原创 2022-10-21 13:29:49 · 2519 阅读 · 0 评论 -
FFmpeg入门详解之102:HLS直播协议详解
HLS全称为,是苹果公司提出的基于HTTP的流媒体网络传输协议。它的工作原理是把整个媒体流分成一个个小的基于HTTP的媒体分片来下载,每次只下载一些分片。在开始一个流媒体会话时,客户端会下载一个包含媒体分片的索引文件,即extended M3U playlist文件(m3u8),用于寻找可用的媒体分片。HLS中,索引文件可以嵌套,一般只有一级索引和二级索引;媒体流封分片装格式只支持MPEG-2传输流(ts)、WebVTT [WebVTT]文件或Packed Audio文件。原创 2022-10-21 13:28:14 · 1298 阅读 · 0 评论 -
FFmpeg入门详解之101:Windows下用FFmpeg nginx rtmp搭建直播环境,实现推流、拉流
开发环境:windows开发工具:FFmpeg、nginx、nginx-rmtp-module简介:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。nginx-rmtp-module是Nginx服务器的流媒体插件。nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流。原创 2022-10-20 13:55:00 · 893 阅读 · 0 评论 -
FFmpeg入门详解之100:搭建Nginx流媒体服务器
搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流。原创 2022-10-20 13:53:11 · 1036 阅读 · 0 评论 -
FFmpeg入门详解之99:基于nginx的rtmp直播服务器(nginx-rtmp-module实现)
2、到 https://github.com/arut/nginx-rtmp-module 下载rtmp模块(git clone https://github.com/arut/nginx-rtmp-module.git)#配置RTMP状态一览HTTP页面=========================================play /usr/share/nginx/html/vod/flvs/;#配置RTMP状态一览界面结束==========================原创 2022-10-20 13:51:25 · 462 阅读 · 0 评论 -
FFmpeg入门详解之99:基于nginx的rtmp直播服务器(nginx-rtmp-module实现)
2、到 https://github.com/arut/nginx-rtmp-module 下载rtmp模块(git clone https://github.com/arut/nginx-rtmp-module.git)#配置RTMP状态一览HTTP页面=========================================play /usr/share/nginx/html/vod/flvs/;#配置RTMP状态一览界面结束==========================原创 2022-10-20 13:50:27 · 415 阅读 · 0 评论 -
FFmpeg入门详解之98:Nginx基本功能及其原理
A同学在大众创业的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱,可想而知,最后碰一鼻子灰回来了,情急之下,他想到一个办法,找关系开后门,经过一番消息打探,原来A同学的大学老师王老师是马云的同学,于是A同学找到王老师,托王老师帮忙去马云那借500万过来,当然最后事成了。不过马云并不知道这钱是A同学借的,马云是借给王老师的,最后由王老师转交给A同学。这里的王老师在这个过程中扮演了一个非常关键的角色,就是代理,也可以说是正向代理,王老师代替A同学办这件事,这个过原创 2022-10-20 13:49:24 · 305 阅读 · 0 评论 -
FFmpeg入门详解之97:nginx入门
Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻量级代替者,不仅是因为响应静态页面的速度非常快,而且它的模块数量达到Apache的近2/3。对proxy和rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用来做mongrel clusters的前端HTTP响应。原创 2022-10-20 13:46:14 · 324 阅读 · 0 评论 -
FFmpeg入门详解之96:Nginx安装配置
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。系统平台:CentOS release 6.6 (Final) 64位。yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-develPCRE 作用是让 Nginx 支持 Rewr原创 2022-10-20 13:44:50 · 497 阅读 · 0 评论 -
FFmpeg入门详解之95:live555使用整理
live555使用整理live555使用、学习及遇到的问题的整理。原创 2022-10-20 13:41:26 · 849 阅读 · 0 评论 -
FFmpeg入门详解之94:Live555学习之(三)------建立RTSP连接的过程(RTSP服务器端)
Live555学习之(三)------建立RTSP连接的过程(RTSP服务器端)上一篇我们简单分析了testOnDemandRTSPServer.cpp的main函数,主要步骤是创建RTSPServer,创建ServerMediaSession对象,然后等待RTSP客户端的连接。原创 2022-10-18 13:56:54 · 863 阅读 · 0 评论 -
FFmpeg入门详解之93:Live555学习之(二)------- testOnDemandRTSPServer
主循环部分的代码比较简单,那我们就需要仔细看看创建RTSPServer,创建ServerMediaSession以及ServerMediaSubsession这部分的代码,看这部分代码之前,我们需要先对RTSP协议的建立连接过程有个大概的了解,在此我就不再详述,网上有很多讲解这个过程的博文,在此推荐一个:http://www.cnblogs.com/qq78292959/archive/2010/08/12/2077039.html。//标识请求播放该媒体文件时使用的名称。原创 2022-10-18 13:55:19 · 429 阅读 · 0 评论 -
FFmpeg入门详解之92:Live555学习之(一)-------Live555的基本介绍
LIVE555下包含LiveMedia、UsageEnvironment、BasicUsageEnvironment、GroupSock库,MediaServer简单服务器程序以及其他多个测试demo。原创 2022-10-18 13:53:13 · 2797 阅读 · 2 评论 -
FFmpeg入门详解之91:live555流媒体解决方案
MPEG-1或2(包括第III层,即“ MP3”)音频文件(文件名后缀“ .mp3”)甲的Matroska或WebM的文件(文件名为后缀“.MKV”或“.webm”)一个奥格文件(文件名后缀“.OGG”,‘OGV’,或“.opus”)AAC(ADTS格式)音频文件(文件名后缀“ .aac”)MPEG-1或2节目流文件(文件名后缀“ .mpg”)MPEG-4视频基本流文件(文件名后缀“ .m4e”)一个VOB视频+音频文件(文件名后缀为“ .vob”)WAV(PCM)音频文件(文件名后缀“ .wav”)原创 2022-10-18 13:46:14 · 829 阅读 · 0 评论