流媒体
文章平均质量分 77
牧羊女说
有马甲线的女程序猿、攻城狮、加班狗~
展开
-
Ubuntu安装X265+FFMPEG
Ubuntu20安装X265+FFMPEG全过程。原创 2023-03-16 18:26:28 · 1892 阅读 · 0 评论 -
X264参数之zerolatency的分析
分析x264中设置zerolatency后影响到的各参数意义。原创 2017-08-09 17:02:11 · 6836 阅读 · 0 评论 -
编译带x264的FFMPEG
业务需要,需要在Linux系统下编译带x264编码的ffmpeg工程,略踩小坑,过程记录如下。首先下载源码,ffmpeg: http://www.ffmpeg.org/download.htmlx264:http://download.videolan.org/x264/snapshots/yasm:http://yasm.tortall.net/Download.html1. 编译yasmyas...原创 2018-05-26 17:52:14 · 5903 阅读 · 8 评论 -
FFMPEG如何设置编码器私有参数
FFMPEG最常调用的外部编码库就是libx264和libx265了。我们知道在FFMPEG内部,可以通过结构体AVCodecContext设置一些通用的编码参数,结构体定义见下方代码段。typedef struct AVCodecContext { /** * information on struct for av_log * - set by avcodec...原创 2018-07-26 14:17:57 · 5114 阅读 · 0 评论 -
A率PCM编码
对A率PCM编码的一点笔记。原创 2017-09-21 19:40:12 · 12650 阅读 · 1 评论 -
HEVC初探 H.265 vs H.264
H.265相遇对以往的编码框架H.264来讲,并没有多少革命性的改变,它仍然采用混合编码结构,包括帧内预测、帧间预测、变换、量化、熵编码以及环路滤波等。但HEVC几乎在每个模块都引入了新的编码技术,以求达到更好的压缩质量和更大的压缩比。HEVC的这些新技术包括:基于四叉树的灵活块分割结构、多种不同角度的帧内预测模式、自适应运动矢量预测AMVP、运动信息融合技术Merge、可变尺寸的离散余弦变化、模式依赖的离散正弦变化、性能更好的CABAC熵编码、以及样点自适应补偿滤波SAO等等。原创 2017-07-28 16:03:19 · 1849 阅读 · 0 评论 -
一份基于FFMPEG的实时流录制接口
封了一个实时流录制接口,不做转码,直接收取实时流的数据包进行转存,可指定时长分段录制。实际应用接口需要并行录制多路视频流,并且可以通过启停信号来启动和停止录制。本篇不涉及多路实时流以及启停功能,只分享录制单路流的核心部分。头文件:#ifndef __VIDEO_REMUXER_H__#define __VIDEO_REMUXER_H__#include <stdio.h>#include <string.h>#include <iostream>.原创 2020-09-30 18:20:38 · 556 阅读 · 0 评论 -
Nginx + Nginx-http-flv-module + FFMPEG实现直播和点播
上一篇讲了如何在Linux系统上安装Nginx:安装Nginx + nginx-http-flv-module。本篇记录一下如何用Nginx + nginx-http-flv-module实现直播和点播功能。要实现直播和点播,首先需要正确配置Nginx,进入Nginx配置文件路径:/usr/local/nginx/conf (如果安装自定义路径的话,请进入自己的实际安装路径),可以看到有以下这些文件:我们需要编辑的是nginx.conf。1. nginx.conf的配置我目前支持http原创 2020-09-09 17:35:04 · 2665 阅读 · 2 评论 -
在Ubuntu上安装Nginx with nginx-http-flv-module
有个项目现场视频流直播和点播回放的需要,具体是,将项目现场多路视频流通过转发和录制,实现在不同网络上的实时播放、存储以及历史视频的点播。因为对Nginx比较熟悉,它是一款高性能Web以及反向代理服务,其优越特性使其成为很多视频直播和点播网站的首选框架,所以仍然选择Nginx作为这次的流媒体服务器。由于主流浏览器逐渐不再支持flash的播放,从前的rtmp直播也日渐式微,因此,为了兼容最新版本的浏览器,决定使用http直播协议。这就需要安装一个第三方模块:nginx-http-flv-module该模原创 2020-09-08 18:12:28 · 2306 阅读 · 2 评论 -
利用FFMPEG实现YUV裸数据的编码和封装
有个工业相机编码推流的需求,于是又把之前写的一份FFMPEG编码YUV裸数据的接口翻出来,去掉了分模块的接口封装,恢复成如下的纯过程代码,测试了一下,功能是OK的。满足输入YUV裸数据,按照需要的分辨率、帧率、比特率输出指定的编码封装文件需求。简单起见,代码里直接用了H264的编码和mpegts的封装,也可以改成其他的编码和封装格式。#include <stdlib.h>#include <stdio.h>#include <stdint.h>#include原创 2020-08-29 16:41:05 · 1121 阅读 · 20 评论 -
在CentOS系统上安装OpenCV-3
前几天在一台CentOS系统上安装带解码功能的OpenCV,过程略曲折,特此记录安装过程中遇到的一些问题和解决方法,以备后续查阅。一. 安装必要的依赖库因为需要使用OpenCV的解码功能,需要安装FFMPEG,FFMPEG安装过程见我之前的一篇博文:安装带X264的ffmpeg但是跟之前有些不一样的地方,就是需要打开libdc1394,因此在FFMPEG配置中需要加入--enab...原创 2019-04-26 16:45:09 · 1038 阅读 · 0 评论 -
FFMPEG文件转封装
前段时间开发了一个基于FFMPEG的文件录制功能,具体来讲,就是把在线码流转封装成本地文件。当然,实际应用过程中,需要考虑指定的封装格式与输入文件或码流的编码格式是否兼容,录制固定大小或时长的文件时对于文件size或时间戳的处理,等等。这里先将这些细节省略,只讲一下大体流程。媒体转封装的过程可参考如下框图:左侧为输入文件(或码流),右侧为输出文件。推流的流程大抵也是如此,但要加上网络初始化函数,并...原创 2018-05-07 11:21:29 · 1754 阅读 · 1 评论 -
网络流媒体协议之——HLS概述
最近有空,准备将常用流媒体协议整理成一系列博客文章。前面已经完成了一篇MPEG-DASH概述。本篇来整理一下HTTP Live Streaming,也就是我们常说的HLS。HLS是苹果公司提出的基于HTTP的流媒体网络传输协议。类似于MPEG-DASH,但是HLS更加简洁,它的基本原理也是服务端把文件或媒体流按照不同的码率切分成一个个小片段进行传输,客户端在播放码流时,可以根据自身的带宽及原创 2018-01-15 16:10:38 · 7652 阅读 · 0 评论 -
网络流媒体协议之——MPEG-DASH协议简述
最近又把MPEG-DASH协议大概看了一下,本篇算是一篇学习笔记,主要参考下面这篇英文文档:https://bitmovin.com/dynamic-adaptive-streaming-http-mpeg-dash/DASH(Dynamic Adaptive Streaming over HTTP)是在2011年底由MPEG和ISO共同制定的标准,通过HTTP共同影音档案原创 2018-01-09 15:55:38 · 10929 阅读 · 2 评论 -
网络流媒体协议之——UDP协议概述
以往系列文章请参考:网络流媒体协议之——MPEG-DASH协议简述网络流媒体协议之——HLS概述本篇是关于最简单的UDP协议的概述。网络上的媒体传输一般可认为有两种方式,基于TCP的传输和基于UDP的传输,根据应用场景的不同,所选择的传输方式也不同。常用的应用层流媒体协议有RTP/RTCP/RTSP(可基于TCP或UDP)、RTMP和HTTP(一般基于TCP方式)。原创 2018-01-16 18:35:05 · 2585 阅读 · 0 评论 -
网络流媒体协议之——RTMP协议(Part II)
在上一篇网络流媒体协议之——RTMP协议(Part I)中,介绍了RMP协议的基本message结构与chunk格式,本篇我们来更深入地来了解一下RTMP中的消息交互。分成三个部分来介绍,分别是Handshake、控制消息与交互、命令消息与交互。1. HandshakeRTMP 连接的建立首先通过握手(handshake)开始。Handshake消息不同于协议的其他消息,并非由可变大小原创 2018-02-06 20:41:03 · 816 阅读 · 0 评论 -
在Linux系统中安装nginx
最近要在Linux系统中实现推流和解码,需要安装nginx,研究了一天,终于安装成功了,记录一下。因为不通外网,所以我是直接下载源码,然后上传到服务器上,再配置并安装的。步骤如下:1. 安装OpenSSLOpenSSL是什么东东?下面是来自百度百科的一个定义:OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的...原创 2018-03-01 15:08:39 · 362 阅读 · 0 评论 -
文件传输协议——FTP概述
本篇主要参考FTP协议的维基百科: File Transfer ProtocolFTP(FileTransfer Protocol)是在客户端和服务器之间传输文件的标准网络协议。FTP协议建立在C-S模型之上,在客户端和服务器之间使用单独的控制和数据连接。FTP用户可通过明文登陆协议来认证,通常是以用户名和密码形式,不过在服务器配置允许的情况下,也可以实现匿名连接。为了保护用户名和密码,以及对内容...翻译 2018-03-09 17:53:48 · 3913 阅读 · 0 评论 -
网络流媒体协议之——HTTP初探
终于写到HTTP协议了,内容实在太多,摘了写最最基础的内容来写一下,后面工作还会用到,用到的部分再深入写吧。HTTP(Hyper Text Transfer Protocol),即超文本传输协议,于1990年问世,最早的版本是HTTP/0.9。最早作为标准正式公布的HTTP版本是HTTP/1.0,公布于1996年5月,相应的协议为RFC1945。1997年公布的HTTP/1.1是目前主流的HTTP...原创 2018-02-24 17:27:16 · 1257 阅读 · 3 评论 -
浅谈数字摘要
最近在开发GB/T-28181视频监控联网系统,其中要求对信令、数据做数据完整性保护,以保证信令安全,防止系统数据被恶意篡改。数字摘要信令认证的交互流程如下:业务需求加好奇心,让我们一起来揭开数字摘要的面纱,探一探究竟。数字摘要其实就是一种单向加密算法,是一种用来保证信息完整性的技术。具体就是通过Hash函数,将任意长度的消息(明文),“摘要”成固定长度(如128 bits)的短消息(即密文)。对...原创 2018-04-10 17:26:10 · 16623 阅读 · 0 评论 -
网络流媒体协议之——RTP协议概述
网络流媒体协议系列:网络流媒体协议之——MPEG-DASH协议简述网络流媒体协议之——HLS概述网络流媒体协议之——UDP协议概述今天来整理一下RTP。RTP(Real-time Transport Protocol,实时传输协议)是用于Internet上针对多媒体数据流的一种传输协议,由IETF提出,对应的标准文档是RFC3550。RTP协议和RTCP(Real-原创 2018-01-19 22:41:32 · 1507 阅读 · 0 评论