[笔记]Qt5+FFMpeg+Opencv 实现实时美颜直播推流《一》基础知识以及直播服务器配置

简介: [笔记]Qt5+FFMpeg+Opencv 实现实时美颜直播推流《一》基础知识以及直播服务器配置

前言

一、基础知识

1.1 直播推流流程分析

1.1.1 直播推流流程分析

推流协议:rtmp

直播服务器CDN:

  • nginx-rtmp模块
  • crtmp-server

客户端播放协议:

  • rtmp
  • http-flv adobe的
  • hls(苹果的延迟10s左右)

准备:

vlc

ffplay

基于flash的插件

1.1.2 推流过程

1.1.2 直播rtmp协议分析

RTMP

  • (Real Time Messaging Protocol,实时消息传送协议)
  • RTMP是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。

RTSP(Real Time Streaming Protocol) 实时流传输协议,是TCP/IP协议体系中的一个应用层协议

RTP,即real-time transport protocol(实时传输协议),为实时传输交互的音频和视频提供了端到端传输服务。其中包括载荷的类型确认,序列编码,时间戳和传输监控功能。一般应用都是基于UDP协议,来使用RTP的多路技术以及验和服务。

RTCP,即实时传输控制协议(Real-time ControlProtocol,RTCP)

SDP全称是Session Description Protocol,翻译过来就是描述会话的协议。主要用于两个会话实体之间的媒体协商。什么叫会话呢,比如一次网络电话、一次电话会议、一次视频聊天,这些都可以称之为一次会话。

SIP(Session Initiation Protocol),是基于IP的一个应用层控制协议。由于SIP是基于纯文本的信令协议,可以管理不同接入网络上的会话等。会话可以是终端设备之间任何类型的通信,如视频会话、既时信息处理或协作会话。该协议不会定义或限制可使用的业务,传输、服务质量、计费、安全性等问题都由基本核心网络和其它协议处理。

RTMP优缺点
  • 优点
    主流CDN支持,市面上绝大多数的直播产品采用。一协议简单易实现
  • 缺点
  1. 基于TCP协议开销大
  2. Adobe私有协议 不维护了
RTMP协议类型
  1. 工作在ILPL上口J文A.可宝越方火墙;
  2. RTMPT封装在HTTP请求之中,可穿越防火墙;
握手

推流

二、流媒体服务器

2.1 直播服务器

  • 七牛、腾讯、网易
  • red5 ( java)和FMS商用
  • crtmpserver (开源)
  • Nginx+RTMP插件(开源)

ubuntu 搭建crtmp流媒体服务器

  1. 虚拟机创建
  2. 安装OpenSSH
shiver@ubuntu:~$ sudo apt-get install openssh-server
The following packages have unmet dependencies:
 openssh-server : Depends: openssh-client (= 1:7.6p1-4ubuntu0.5)
                  Depends: openssh-sftp-server but it is not going to be installed
                  Recommends: ssh-import-id but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
shiver@ubuntu:~$ sudo apt-get install openssh-client 
shiver@ubuntu:~$ sudo apt-get install openssh-server

先卸载client版本 在安装 会有奇效,我是ubuntu18

  1. SSH连接本地虚拟机

[LINUX]使用SSH通过主机访问本地VMware虚拟机

  1. crtmpserver编译

windows/ubuntu编译crtmpserver

参考 crtmpserver系列(二):搭建简易流媒体直播系统

1.2 下载ffmpeg工具推流并使用功能vlc拉流播放测试

1.3 nginx-rtmp源码下载、编译运行(ubuntu)

crtmp参考1.2

windows搭建流媒体服务器

Windows10下nginx的rtmp服务器搭建

直接使用Docker搭建好的CDN服务器

docker安装nginx+rtmp模块搭建服务器实现ffmpeg推流+ffplay播放

Docker简易搭建个人直播流rtmp服务器总结


相关文章
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
1810 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
编解码 语音技术 内存技术
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
《FFmpeg开发实战:从零基础到短视频上线》一书中的“5.1.2 把音频流保存为PCM文件”章节介绍了将媒体文件中的音频流转换为原始PCM音频的方法。示例代码直接保存解码后的PCM数据,保留了原始音频的采样频率、声道数量和采样位数。但在实际应用中,有时需要特定规格的PCM音频。例如,某些语音识别引擎仅接受16位PCM数据,而标准MP3音频通常采用32位采样,因此需将32位MP3音频转换为16位PCM音频。
535 0
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
584 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
1156 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
789 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
缓存 监控 计算机视觉
视频监控笔记(三):opencv结合ffmpeg获取rtsp摄像头相关信息
本文介绍了如何使用OpenCV结合FFmpeg获取RTSP摄像头信息,包括网络架构、视频监控系统组成、以及如何读取和显示网络摄像头视频流。
641 1
|
网络协议 应用服务中间件 nginx
FFmpeg错误笔记(一):nginx-rtmp-module推流出现 Server error: Already publishing
这篇文章讨论了在使用nginx-rtmp-module进行RTMP推流时遇到的“Server error: Already publishing”错误,分析了错误原因,并提供了详细的解决办法,包括修改nginx配置文件和终止异常的TCP连接。
757 0
FFmpeg错误笔记(一):nginx-rtmp-module推流出现 Server error: Already publishing
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
4309 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
343 4

推荐镜像

更多
  • qt