- 使用srs_librtmp实现RTMP推流
qiu旭
Linux笔记RTMP推流srs_librtmplinux
1、背景由于项目有需求在一个现有的产品上增加RTMP推流的功能,目前只推视频流。2、方案选择由于是在现有的产品上新增功能,那么为了减少总的成本,故选择只动应用软件的来实现需求。现有的产品中的第三方库比较有限,连个ffmpeg都没,所以要选择可以直接集成代码进来的第三方库,最后选中了srs_librtmp。虽然它已经停止维护了,但是主要功能没问题,使用简单,且可以直接集成代码。3、实现代码step1
- 使用librtmp推h264、aac实时流
CodeOfCC
音视频windowsc++开发语言
文章目录前言一、推视频流1.sps、pps2.视频帧二、推音频流1.音频帧三、完整推流1.实时流总结前言librtmp可以用于推rtmp流,有时候我们需要将采集的摄像头或桌面的视频数据以及麦克风的音频数据推流出去,这时候就需要使用librtmp的推流功能了,其推流流程比较简单,只是一些细节需要注意即可。一、推视频流1.sps、pps在推送idr前需要发送一个sps、pps数据包,代码如下:////
- 11-流媒体-LibRtmp推H264流
C_IS_ALL
音视频
本节内容主要描述如何将一个h264文件通过RTMP推到流媒体服务器上工程目录如下$tree.|--Makefile|--inc||--librtmp_send264.h|`--sps_decode.h|--input.h264|--obj||--librtmp_send264.o|`--test.o|--src||--librtmp_send264.cpp|`--test.cpp|--third_
- 集成RTMP推流源码
路过独木桥!!
音视频
一、RTMPDump源码地址和Git地址(RTMPDump版本是2.4)RTMPDump源码地址:http://rtmpdump.mplayerhq.hu/Git地址gitclonegit://git.ffmpeg.org/rtmpdump二、将已经下载好的rtmpdump中的librtmp源码添加到工程中去三、在CMakeLists.txt文件中加入rtmp源码编译cmake_minimum_r
- Android RTMP录频直播四(rtmpdump集成)
刘付文
1.rtmpdump库,下载源码rtmpdump库github下载地址librtmp.png2.将librtmp文件夹下的源码集成到Android下载rtmpdump源码,将librtmp文件夹拷贝到androidcpp目录下。删除掉没用的文件,只保留.c.h文件。在librtmp目录下,创建并编写CMakeLists.txt。在外层CMakeLists.txt配置rtmp。如下图所示:rtmp_
- 基于librtmp 发送 flv 的示例
anber1121
本文记录一个基于libRTMP的发布流媒体的程序。该程序可以将本地FLV文件发布到RTMP流媒体服务器。是最简单的基于libRTMP的流媒体发布示例。RTMP流程图使用librtmp发布RTMP流的可以使用两种API:RTMP_SendPacket()和RTMP_Write()。使用RTMP_SendPacket()发布流的时候的函数执行流程图如下图所示。使用RTMP_Write()发布流的时候的
- SOM-rk3399开发板usb摄像头推流记录
慕一Chambers
推流人工智能
SOM-rk3399开发板usb摄像头推流记录参考文献:rk3399nanopineo4usb摄像头推流记录官方推流方法gstreamer操作系统:SOM-rk3399-friendly-core查看usb摄像头信息指令sudov4l2-ctl--list-formats-ext-d/dev/video81推流工具选择ffmpegGstreamerlibrtmp目前还不知道底层原理,后面学习再更新
- librtmp编译环境搭建
PuiKei
Librtmp目前依赖的库有zlib-1.2.8和polarssl-1.2.0-gpl1.编译zlib-1.2.8,官网:http://zlib.net2.下载librtmp源码trmpdump-2.3.tgz下载链接:http://rtmpdump.mplayerhq.hu/download/3.编译librtmp的依赖库zlib和openSSL本文主要想说明如何搭建环境编译librtmp,zl
- T31开发笔记:librtmp拉流测试
殷忆枫
君正T31笔记linux运维
若该文为原创文章,转载请注明原文出处。T31使用librtmp拉流并保存成FLV文件或H264和AAC文件。librtmp编译在前面有教程,自行编译。实现的目的是想要获取获取rtmp的AAC流并播放,实时双向对讲功能。一、硬件和开发环境1、硬件:T31X+SC52352、开发环境:ubuntu16.04-64bit3、编译器:mips-gcc540-glibc222-32bit-r3.3.0.ta
- LibRtmp编译并导入Android Studio
w小强
title:LibRTMP_Demodate:2017-06-1315:40:15tags:学习categories:android[TOC]LibRtmp编译并导入AndroidStudio简介做了好久的推流项目,但是没有接触过底层知识,所以只是相当于SDK的使用者。在工作不忙的时候,突然间想学一学LibRtmp。不求能完全学会,只希望能自己编译出一个可以推流的库。编译环境LibRtmp编译Ub
- srs-librtmp移植到树莓派
NameisBoy
#树莓派视频监控嵌入式硬件linux物联网
srs-librtmp移植到树莓派SRS(SimpleRtmpServer)是一个国人编写的开源的RTMP/HLS流媒体服务器,非常强大。Gitee上的介绍:v2_CN_Home-Wiki-Gitee.comSRS提供的librtmpsrs提供的客户端srs-librtmp的定位和librtmp(rtmpdump)不一样,主要是:librtmp的代码确实很烂,毋庸置疑,典型的代码堆积。librtm
- Mac:FFmpeg+rtmp NDK编译
吃了西红柿
本文主要是演示如何在FFmpeg结合第三方开源库,一起编译FFmpeg,以rtmp为例子准备:FFmpeg4.2.2源码+rtmpdump-2.3源码步骤:注意第三方库也必须用NDK环境进行编译否则使用时会出现找不到方法等问题1、编译ffmpeg所依赖的第三方库,本文为rtmp按如下内容修改rtmpdump-2.3/librtmp中的Makefile中对应位置内容(注意rtmpdump-2.3中也
- librtmp-Android
Caiaolun
原文地址:https://juejin.cn/post/6844904000542736392RTMPDump用来处理RTMP流媒体的开源工具包。能够单独使用RTMP通信,也可以集成到FFmpeg中通过FFmpeg接口来使用RTMPDump。下载地址:http://rtmpdump.mplayerhq.hu/介绍两种方式引入RTMPDump的方式,一种使用NDK提供的交叉编译工具来进行编译成静态库
- librtmp源码分析之核心实现解读
大匡先生
librtmp是我们平常工作中进行推拉流开发的重要工具,官方提供的版本是基于C/C++技术栈的,但是有不少的其它高级语言技术栈也都提供了相应的包装或移植版本。RTMP协议非常复杂,网上又鲜有较为完整的文档,再加上它的一些设计理念比较奇特(奇特的事件会剌激我们的反向思维,让我们对现有认知产生否定),以至于我们完全理解它需要耗费非常多的时间和脑力。从RTMP的实现版本也侧面验证了这点,现有的主流实现仍
- CMake-api详解
六_六
版本号cmake_minimum_required(VERSION3.4.1)加载其他的cmake文件add_subdirectory(src/main/cpp/librtmp)set(my_lib_path${CMAKE_SOURCE_DIR}/src/main/cpp/lib)导入编译好的静态库add_library(avutilSTATICIMPORTED)设置导入的路径set_target
- Ubuntu20.04.5 编译安装ffmpeg4.4.3.支持rtmp
赤瞳神人
笔记linux运维ffmpeg
环境ubuntu20.04.5amd64包ffmpeg4.4.3源码1、安装rtmp依赖安装openssl、zlib、librtmp.否则后面会报错误:librtmpnotfoundusingpkg-configsudoapt-getinstalllibssl-devsudoapt-getinstallzlib1g-devsudoaptinstalllibrtmp-dev2、安装ffmpeg依赖环
- javaCV入门指南:序章
weixin_33851604
ffmpeg人工智能java
前言从2016年开始写《javacv开发详解》系列,到而今的《javacv入门指南》,这中间虽然仅间隔两年,却改变了很多东西。以前从不觉得java可以做流媒体、音视频编解码这些,直到现在,顶多说java做流媒体是非主流--!。业界广泛应用的librtmp、live555、ffmpeg也都是c/c++的库,刚开始也确实尝试过使用jni方式调ffmpeg,发现做起来吃力不讨好,后来在github发现了
- rtmp协议分析(Message 消息,Chunk分块)
“好记性不如”烂博客
rtmprtmp流媒体音视频
RTMP详细分析(三次握手)librtmp分析(发送数据包处理)librtmp分析(接收数据包处理)目录1、Message(消息)2、Chunking(Message分块)2.1、BasicHeader(基本的头信息)2.1.1、BasicHeader为1个字节时2.1.2、BasicHeader为2个字节时2.1.3、BasicHeader为3个字节时2.2、MessageHeader(消息的头
- 自己动手实现一个简单的RTMP服务
大匡先生
在前面的文章中,我向大家分享了RTMP协议的交互过程,以及librtmp源代码的核心实现,今天我继续向大家讲解如何自己动手实现一个简单的rtmp服务。出于时间和精力以及水平的关系,可能本文代码的篇幅占比很大(代码中有实现逻辑的注解),而且内容组织并不好,敬请谅解。编写rtmp服务需要哪些知识:对RTMP协议有深入理解。对网络编程有较丰富的经验。对数据结构有较强的组织能力。熟悉多线程开发。第4条不是
- 使用librtmp库进行推流与拉流
大匡先生
目前比较主流的直播技术有RTMP、HLS,其中RTMP主要基于TCP协议,HLS主要基于HTTP协议,二者在实施成本、延迟性等方面有较大差异。本文主要讲解RTMP的推流与拉流技术的应用。理论知识:原则上说,开发RTMP的推拉流应用,除具备基本的语言及工具链外,还需要掌握以下知识:a)RTMP协议原理b)基本的音视频编解码知识c)FLV等流媒体封装格式技巧RTMP协议原理:与大多的协议格式一样,RT
- librtmp源码分析之AMF格式
大匡先生
AMF是Adobe公司开发的一种高效的消息序列化和反序列化协议,它包括两种数据类型格式:AMF0和AMF3。其中AMF0是基本的消息格式,但是后来Adobe对AMF0进行了优化,开发了扩展的AMF3,即AMF3并不是AMF0的完全替代,使用AMF3需要在外面套一层AMF0做为容器。我们可以在librtmp的源码中找到AMF的一个实现版本,但是我不清楚什么原因,居然有些函数如AMFProp_SetN
- libRTMP 推流FLV文件
pengxiaochao
效果图如下:861656723893_.pic.jpg首先就是介绍一下项目中用到的工具推流工具和FLV文件分析工具;这里必须吐槽一下好用的流媒体分析工具都是windos端上的,MACOS上能用的工具少之又少,希望自己有一天也有实力造出来一些好用的工具提供给大家;image.png预览推流的工具RailgunCast;FLV流解析工具QHFlvParserMan进制在线转换工具https://too
- mac编译openssl和libremp
FullerZhang
第一部分:openssl脚本以及资源:https://github.com/x2on/OpenSSL-for-iPhone;https://www.openssl.org/source/;1、更改脚本支持的架构,此处只支持arm64;2、终端输入:./build-libssl.sh第二部分:librtmp资源:http://rtmpdump.mplayerhq.hu;gitclone:gitclo
- rtmp 看一篇就够了
mfdalf
目录1Rtmp定义2Rtmp基础3协议组成4Rtmp消息流程5实例分析:项目使用librtmp接口6主要Rtmp函数源码分析7QA正文相关系列文章:H264解析:H264解析_fdsafwagdagadg6576的专栏-CSDN博客_rtp帧格式Flv格式分析参见:https://www.jianshu.com/p/27d506edd4e4ngnix-rtmp:NgnixRtmp_fdsafwag
- 音视频学习流程
未来的路就在那
音视频学习必看博客:https://blog.csdn.net/leixiaohua1020/基础篇一、建立整体印象,了解知识轮廓1.直播和ffmpeg是什么联系,或者说ffmpeg担任什么指责2.直播和rtmp的关系,什么是rtmp,ffmpeg和rtmp是什么关系,rtmp和librtmp是什么关系3.大家常说的h264是什么东西,是干嘛用的,在直播中担任什么指责4.什么是推流,什么的拉流,他
- 客户端使用librtmp推流实践
worthyzhang
播推流一般都采用RTMP协议,它是一种基于TCP的应用层协议。librtmp是RTMP协议的一个实现库,它封装了协议细节,方便我们调用。本文主要介绍如何利用librtmp库实现音视频推流,不涉及RTMP协议的细节解析。建立连接首先我们需要引入rtmp.h头文件,开始建立连接://为RTMP对象分配内存_rtmp=RTMP_Alloc();//初始化_rtmpRTMP_Init(_rtmp);//设
- RTMP网络连接分析
狼爽过羊
RTMP_Connectlibrtmp用RTMP_Connect这个方法建立网络连接,网络连接代表了服务端应用程序和客户端之间基本的连通关系。在RTMP_ParseURL方法中,可以通过传入的url解出来host、port、application用解出来的host和port建立socket,然后做一些rtmp握手之类的工作。intRTMP_Connect(RTMP*r,RTMPPacket*cp)
- librtmp usage
SniperPan
个人翻译,转载请注明出处,谢谢!rtmpdump是开发用于RTMP流的工具箱,支持所有RTMP格式,具体包含如下:RTMPRTMPE=RTMP+ENC,已加密的RTMPRTMPS=RTMP+SSL,通过SSL传输层传输RTMPRTMPT=RTMP+HTTP,在HTTP协议中传输RTMPRTMPTE=RTMP+HTTP+ENC,在HTTP协议中传输已加密RTMPRTMPTS=RTMP+HTTP+SS
- rtmp H264多Slice封装学习笔记
vonchenchen1
Webrtc音视频ffmpeg音视频直播webrtc
1.背景在使用src_librtmp转推H264数据时,拉流端观看出现了花屏问题。经过排查发现客户端X264编码时如果设置了分片,转推为rtmp就会导致花屏,关闭分片相关设置视频正常。在转推H264前将数据写入本地,播放正常,播放转推后的rtmp花屏,ffplay会报错。这里推断是rtmp封装问题导致了花屏,下面首先需要对于这种一帧H264视频中包含多个Slice的情况,应当如何封装。2.与ffm
- ffmpeg如何从url获取视频帧数据
大飞_2048
前言:ffmpeg基本理解整体可划分为协议层、容器层、编码层与原始数据层四个层次:协议层:提供网络协议收发功能,可以接收或推送含封装格式的媒体流。协议层由libavformat库及第三方库(如librtmp)提供支持。容器层:处理各种封装格式。容器层由libavformat库提供支持。编码层:处理音视频编码及解码。编码层由各种丰富的编解码器(libavcodec库及第三方编解码库(如libx264
- java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
- 《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
- 电驴链接在线视频播放源码
dubinwei
源码电驴播放器视频ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
- Javascript中函数的toString()方法
周凡杨
JavaScriptjstoStringfunctionobject
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
- struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
- Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
- SpringMVC的各种参数绑定方式
Harry642
springMVC绑定表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
- Java 获取Oracle ROWID
aijuans
javaoracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
- java获取方法的参数名
antlove
javajdkparametermethodreflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
- JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java正则表达式替换提取查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
- Java中equals()与hashCode()方法详解
bijian1013
javasetequals()hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
- 精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle数据库plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
- 【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
- kafka获得最新partition offset
blackproof
kafkapartitionoffset最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
- centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
- java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
- nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
- [JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
- 如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
- 应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
- 在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
- 使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
- 使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
- SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
- 《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
- AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
- 架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
- 如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
- C语言算法之水仙花数
qiufeihu
c算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
- JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include