
音视频多媒体
文章平均质量分 80
音视频多媒体与监控开发
猿来这样1
编程圈子,谢厂节的博客
展开
-
Clion 使用ffmpeg 学习1 开发环境配置
在视频处理和多媒体应用程序开发中,FFmpeg 是一个强大的开源工具,它提供了处理音频和视频的丰富功能。CLion 是一款受欢迎的跨平台集成开发环境(IDE),它提供了强大的代码编辑和调试工具。通过官方文档 : https://www.ffmpeg.org/documentation.html 可以查看更多FFmpeg的操作方法。选择合适的版本下载。我这里下载的是 ffmpeg-master-latest-win64-gpl-shared。本文章介绍在CLion下配置FFmpeg开发环境的方法。原创 2023-09-02 12:24:51 · 1990 阅读 · 0 评论 -
支持 flv+h265 的ffmpeg编译安装
支持 flv+h265 的ffmpeg编译安装一、操作说明二、编译依赖1. h2642. h2653. 编译ffmpeg三、问题处理1. x264_bit_depth 未定义2. fdk-aac 出现has no member named ‘encoderDelay’一、操作说明ffmpeg 官方分支没有支持flv+h265,国内金山云发了补丁版本,地址:git clone https://github.com/ksvc/FFmpeg.git -b release/3.4 --depth=1二、编原创 2022-05-29 11:41:05 · 1678 阅读 · 0 评论 -
CentOS 7 ffmpeg 支持 nVidia
CentOS 7 安装nVidia、Cuda安装相关环境yum安装驱动run脚本安装安装Cuda编译支持库说明下载路径yasmnasmlibfdk-aaclamelibopuslibogglibvorbislibtheoralibx265x264disable-gpl安装ffnvcodeclibvpx配置ffmpeg, 编译安装下载配置编译安装使用安装相关环境硬件环境:nVidia 206...原创 2019-09-12 13:47:29 · 3040 阅读 · 0 评论 -
音视频开发1. 基本概念及媒体协议
网页播放音视频基础知识一、主要流媒体协议名称推出机构传输层协议客户端目前使用领域劣势RTSP+RTPIETFTCP+UDPVLC, WMPIPTVRTMPAdobe Inc.TCPFlash互联网直播苹果设备不提供原生支持RTMFPAdobe Inc.UDPFlash互联网直播MMSMicrosoft Inc....原创 2019-07-08 13:37:55 · 778 阅读 · 0 评论 -
音视频开发2. FFMPEG+Nginx+RTMP/FLV实现推流服务
ffmpeg 在 Ubuntu18 下使用一、安装一、安装可通过PPA进行安装sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-nextsudo apt-get updatesudo apt-get install ffmpeg查看是否安装成功:ffmpeg -version二、编译sudo apt-get i...原创 2019-06-27 10:04:57 · 1229 阅读 · 0 评论 -
音视频开发3. 低延时的H5直播方案JSMpeg
FFMPEG+JSMPEG实现网页流媒体播放一、配置ffmpeg作用:视频解码下载可执行的ffmpeg,并在系统环境变量PATH里指向ffmpeg可执行文件的目录 。二、安装配置node.js环境安装node.js后,再安装websocket和http-servernpm install -g wsnpm install wsnpm install http-server -g...原创 2019-07-04 12:28:28 · 19768 阅读 · 10 评论 -
音视频开发4. LingkingVision H5Stream 用网页播放RTSP
LingkingVision H5Stream 播放RTSP一、安装H5Stramhttps://linkingvision.com/download/h5stream/下载对应操作系统的版本。二、配置H5Stream1. 注册服务windows下:执行 regservice.bat另外可能需要vs2017运行库,如果需要自行下载安装。linux下:cp h5ss.servi...原创 2019-07-04 13:54:00 · 1240 阅读 · 0 评论 -
音视频开发5. ZLMediaKit库入门使用 编译安装
音视频开发4. ZLMediaKit库入门一、 ZLMediaKit 库简介二、编译三、生成物1. MedisServer2. SDK (c语言)四、测试一、 ZLMediaKit 库简介ZLMediaKit 是一个基于C++11的高性能运营级流媒体服务框架官方写的项目特点:基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4),支持协议互转。使用多路复用/多线程/异步网络I原创 2020-09-04 10:48:31 · 17008 阅读 · 2 评论 -
音视频开发6. 搭建 ffmpeg Linux远程开发环境
音视频开发6 搭建ffmpeg Linux远程开发环境原创 2022-03-01 13:04:00 · 1865 阅读 · 0 评论 -
音视频开发7. ffmpeg 几个重要结构体
ffmpeg 重要结构体原创 2022-03-01 17:05:33 · 1845 阅读 · 0 评论 -
音视频开发8. 使用ffmpeg 将pcm转码aac实践(C++)
@[TOC](音视频开发8. 使用ffmpeg 将pcm转码aac实践(C++))一、 准备环境CentOS 已安装ffmpeg库本地使用vscode,安装 Remote developement 远程开发插件 。二、 项目结构三、 audio.cpp 主要代码1. 引用ffmpeg头#include <stdio.h>#include <iostream>#ifdef __cplusplusextern "C"{#endif#include "l原创 2022-03-02 17:38:33 · 2116 阅读 · 0 评论 -
音视频开发9. 使用ffmpeg 将pcm转码mp3实践(C++)
@[TOC](音视频开发9. 使用ffmpeg 将pcm转码mp3实践(C++))一、准备环境CentOS环境安装 ffmpeg 库,并有必要的库(主要是lame:mp3解码库)ffmpeg库安装可参考之前文档二、一些预备知识1. 音频格式说明如前文所述,pcm是音频裸数据,要转成mp3需要进行重采样、编码步骤。2. 参考命令行ffmpeg -y -ac 1 -ar 16000 -f s16le -i /data/ffmpeg/test/input.pcm -c:a libmp3lam原创 2022-03-03 21:02:43 · 6176 阅读 · 2 评论 -
音视频开发10. 使用ffmpeg 流媒体视频流截图jpg实践
基于C++ ffmpeg对流媒体视频截图成jpg格式保存。原创 2022-03-04 17:08:22 · 1394 阅读 · 1 评论 -
QT 使用ffmpeg 开发库 学习1 简单的播放器
一、下载ffmpeghttps://ffmpeg.zeranoe.com/builds/版本说明:Static:这个版本只包含了ffmpeg.exe、ffplay.exe、ffprobe.exe三个可执行程序,没有头文件和库文件。Shared:这个版本包含了ffmpeg.exe、ffplay.exe、ffprobe.exe三个可执行程序和相关动态库文件。Dev:开发版,这个包含了头文件和库文件。需要下载 Shared和Dev,放在文件夹。static可以不下载。二、新建 QT 项目原创 2020-05-09 10:31:00 · 1683 阅读 · 0 评论 -
QT 使用ffmpeg 学习2 打印配置、协议、解码器、参数枚举
一、Ffmpeg说明协议层:该层处理流媒体协议的数据解析与封装,包括http,rtmp,rtsp,file等容器层:该层处理多媒体容器的解析和封装,包括mp4,flv,mkv等编解码层:该层负责音视频编解码,包括h264,h265,mp3,aac等原始数据层:该层负责原始音视频数据的处理,如视频像素格式转换,缩放,裁剪,过滤,音频重采样,过滤等,处理对象是pcm,yuv,rgb等原始数据。设备层:负责音视频播放及采集ffmpeg 库说明livavformat 作用于协议层和容器层,依赖原创 2020-05-09 15:53:51 · 493 阅读 · 0 评论 -
QT 使用ffmpeg 学习3 转封装
一、概念转封装是指在mp4、flv、avi等文件格式之间的转换。常用见视频封装格式(容器):1. AVI容器 AVI(Audio Video Interleaved)即音视频交错格式.AVI 符合 RIFF(Resource Interchange File Format)文件规范,使用四字符码 FOURCC(four-character code)来表征数据类型。AVI 的文件结构分为头部、主体和索引三部分。 主体中图像数据和声音数据是交互存放的,从尾部的索引可以索引跳到自己想放的位置。AVI原创 2020-05-11 11:14:39 · 674 阅读 · 0 评论 -
QT 使用ffmpeg 学习4播放RTSP
一、Ffmpeg 播放rtsp流程二、实现1. ffmpegutils类ffmpegutils.h#ifndef MYFFMPEG_H#define MYFFMPEG_H#include <QObject>#include <QImage>#define __STDC_CONSTANT_MACORSextern "C"{#include <libavcodec/avcodec.h>#include <libavformat/avform原创 2020-05-12 13:37:58 · 1274 阅读 · 2 评论 -
QT 使用ffmpeg 学习5 ffmpeg API推流Demo
本文使用Ffmpeg API实现推流。一、说明1. ffmpeg中的时间单位AV_TIME_BASEffmpeg中的内部计时单位(时间基),ffmepg中的所有时间都是于它为一个单位,比如AVStream中的duration即以为着这个流的长度为duration个AV_TIME_BASE。AV_TIME_BASE定义为:#define AV_TIME_BASE 10000002. 关于时间戳的几个函数i. av_rescale_rnd函数声明int64_t av_rescale_rnd(原创 2020-05-13 11:13:21 · 3576 阅读 · 0 评论 -
QT 使用ffmpeg 学习6 ffmpeg API保存流到文件demo
一、功能说明打开一个输入流,取帧保存到文件中。一些函数说明:avformat_open_input该函数用于打开多媒体数据并且获得一些相关的信息。它的声明位于libavformat\avformat.h,如下所示:int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);ps:函数调用成功之后处理过的AVFormatConte原创 2020-05-13 13:38:14 · 894 阅读 · 0 评论 -
QT 使用ffmpeg 学习7 ffmpeg 接收RTSP转发RTMP流
一、说明本文代码与 QT 使用ffmpeg 学习5 ffmpeg API推流Demo代码类似。主要是加了pts dts的处理。在使用 QT 使用ffmpeg 学习5 ffmpeg API推流Demo 代码,当接收流是rtsp流的时候,会出现av_interleaved_write_frame 返回 -22的错误。下面代码使用方式2加上了一个fix代码。网上很多讲要求:AVPacket 中 pts 必须大于或等于dts, 否则就返回-22 错误。我查看demofctf 的情况,代码出现-22错误原创 2020-05-18 09:52:11 · 1940 阅读 · 7 评论 -
GB28181学习笔记1 SIP协议简介
一、GB28181 简介1. GB28181全称是:《安全防范视频监控联网系统 信息传输、交换、控制技术要求》目前最新版本是2016版。2. GB28181引用的文件:RFC 2030 简单网络时间协议(SNTP)第四版RFC 2326 RTSP:实时流协议RFC 2976 SIP INFO方法RFC 3261 SIP: 会话初始协议RFC 3263 会话初始协议(SIP):定位SIP服务器RFC 3428 会话初始协议(SIP) 即时消息扩展RFC 3550 实时传输原创 2020-05-21 08:31:34 · 4378 阅读 · 0 评论 -
GB28181学习笔记2 SIP测试工具 Yate安装使用
一、 简介Yate代表“又一个电话引擎”,正如其名称所述,它主要是电话引擎。 虽然目前专注于Internet协议语音(VoIP)和PSTN,但其强大之处在于其易于扩展的能力。 语音,视频,数据和即时消息传递都可以在Yate灵活的路由引擎下统一起来,从而最大程度地提高通信效率并最小化企业的基础架构成本。官网地址:http://yate.ro/二、安装到官网下载:http://yate.null.ro/tarballs/yate6/安装后启动客户端:安装后在安装目录可以启动命令行程序:三、配原创 2020-05-21 09:53:43 · 2184 阅读 · 0 评论 -
GB28181学习笔记3 实现REGISTER设备注册(基于nodejs sip库 SERVER端)
一、注册过程说明这里使用一台海康的摄像头做实际测试。GB28281注册过程有鉴权、不鉴权两种,本文实现的带鉴权的方式,基于GB281812016版。本文原本想用C++库实现,但我这只有QT,配置基于第三方sip包的环境太不熟练,为节省时间暂且用nodejs先代用。不带鉴权:带鉴权:1. 设备设置2. 注册过程1. 设备发送register注册消息2. 服务器返回401 未登陆3. 设备发送登陆认证主要是要计算当中的response值,认证计算过程:下面使用kd函数,表示对原创 2020-05-22 17:08:26 · 3206 阅读 · 0 评论 -
GB28181学习笔记4 实现Server端获取目录功能(NodeJS版)
一、说明GB28181设备在注册到服务端之后,服务端通过发送Catalog命令向设备端发送请求命令指令。范例:M.11设备目录查询消息消息示范例M.11.1 1.1和2.1MESSAGE sip:目的设备编码@目的域名或IP地址端口 SIP/2.0 To: <sip:目的设备编码@目的域名>;tag=852843529 Content-Length: 消息实体的字节长度CSeq: 2 MESSAGE Call-ID: wlss-3a65dfb6-7ee86970ea84c5原创 2020-05-25 16:54:57 · 1237 阅读 · 0 评论 -
GB28181学习笔记5 给前面应用添加restful接口
GB28181学习笔记5 给前面应用添加restful接口一、说明二、项目依赖:三、实现1. http接口代码:2. sip_config.js配置文件3. log4js 设置4. sip_server功能调整一、说明为了让之前的应用功能更完善 , 这里添加一个restful接口。项目结构:二、项目依赖: "dependencies": { "express": "^4.17.1", "fast-xml-parser": "^3.17.2", "log4js": "^原创 2020-06-01 10:35:07 · 719 阅读 · 0 评论 -
GB28181学习笔记6 解析invite命令
GB28181学习笔记6 解析invite命令一、信令流程1. 实时信令流程点播流程:上级平台向下级发送INVITE请求,请求实时视频下级平台回复200OK上级平台回复ACK确认关闭视频,上级向下级平台发送BYE请求,请求关闭视频下级平台回复200OK请求示例:2. 点播流程上级发送INVITE请求invite content内容区说明:Call-ID:唯一标识这次的点播流程,即这次点播的五条信令中的Call-ID都是相同的。s=Play:说明请求的是实时视频。c=原创 2020-06-02 17:02:50 · 9853 阅读 · 0 评论 -
GB28181学习笔记7 媒体流转推rtmp
一、说明本文接上篇,实现功能:接收摄像头的rtp流推送rtp流到rtmp服务器使用vlc播放rtmp视频二、准备工作1. 按前篇完成GB28181 invite解析2. 安装vls播放器、准备ffmpeg工具3. 准备ZLMediaKithttps://github.com/xiongziliang/ZLMediaKit/wiki/ZLMediaKit%E6%8E%A8%E6%B5%81%E6%B5%8B%E8%AF%95三、实现经过前几篇的功能,现在已经有媒体流推送到服务器端口,原创 2020-06-06 23:21:25 · 2232 阅读 · 0 评论 -
安防国标学习笔记8 NodeJS实现GB28181服务端
安防国标学习笔记8 NodeJS实现GB28181服务端一、实现步骤1. 整体架构2. 部署过程克隆项目GB28181_NODE_HTTP到本地部署ZLMediaKit1. 安装docker2. 下载并启动镜像一、实现步骤通过前面的几次学习,一个能接收摄像机注册的GB28181服务端信令服务器功能基本上可以使用了。本文只是对前面的内容进行总结汇总。1. 整体架构NodeJS实现信令服务器ZLMediaKit 用作媒体服务器2. 部署过程克隆项目GB28181_NODE_HTTP到本地通原创 2020-06-07 22:08:11 · 1759 阅读 · 1 评论