当前位置: 首页 > news >正文

EasyAVFilter代码示例之将摄像机RTSP流转成RTMP推流输出

以下是一套完整的RTSP流转RTMP推流功能的开发源码,就简简单单几行代码,就可以完成原来ffmpeg很复杂的调用流程,而且还可以集成在自己的应用程序中调用,不需要再单独一个ffmpeg的进程来调用,方法很简单:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "EasyAVFilterAPI.h"#ifdef _WIN32
#pragma comment(lib,"EasyAVFilter.lib")
#endifEasy_Handle fRTSPHandle = 0;			
int Easy_APICALL __AVFilterCallBack(void* userPtr, EASY_AV_FILTER_STATE_T status, int progress, int errCode, const char *errMsg)
{//各种状态的回调,例如拉流状态/推流状态/转码状态/媒体信息return 0;
}int main(int argc, char** argv)
{// 创建EasyAVFilter实例Easy_Handle avFilterHandle = NULL;EasyAVFilter_Create(&avFilterHandle);// 信息回调EasyAVFilter_SetCallback(avFilterHandle,__AVFilterCallBack,0);// 将本地视频文件转成格式化的MP4或者HLS提供点播,参考命令:./ffmpeg.exe -re -rtsp_transport tcp -i rtsp://admin:admin12345@112.112.222.212:554/ch1/main/av_stream -vcodec copy -acodec aac -ac 2 -strict -2 -f flv rtmp://172.81.216.155:3519/live/IbMkUXeVR?sign=SxMk8X6VRzEasyAVFilter_AddInput(avFilterHandle, "rtsp://admin:admin12345@112.112.222.212:554/ch1/main/av_stream", 1);EasyAVFilter_AddFilter(avFilterHandle, "-vcodec copy -acodec aac -ac 2 -strict -2");EasyAVFilter_AddFilter(avFilterHandle, "-f flv");EasyAVFilter_SetOutput(avFilterHandle, "rtmp://172.81.216.155:3519/live/IbMkUXeVR?sign=SxMk8X6VRz", 0);//H.265 support// 输出再次验证char filterCommand[256] = { 0 };EasyAVFilter_GetFilters(avFilterHandle, filterCommand);printf("command: %s\n", filterCommand);getchar();EasyAVFilter_Start(avFilterHandle, 1, 8, 10);//注意,文件转码不需要循环读取,第二个参数从1改成0getchar();// 停止流程,回收EasyAVFilter对象EasyAVFilter_Stop(avFilterHandle);EasyAVFilter_Release(&avFilterHandle);return 0;
}

以上完整程序工程可在EasyDarwin官网下载到:www.easydarwin.org

EasyAVFilter

http://www.lryc.cn/news/160621.html

相关文章:

  • 【【C语言康复训练-4】】
  • [DM8] DM-DM DBLINK DPI方式
  • 创建了一个名为nums_list的vector容器,其中存储了一系列的pair<int, int>
  • SpringMVC文件上传、文件下载多文件上传及jrebel的使用与配置
  • Leetcode143. 重排链表
  • Git 回顾小结
  • 响应式布局(3种) + flex计算
  • Pytorch从零开始实战01
  • inappropriate address 127.0.0.1 for the fudge command, line ignored 时间同步的时候报错
  • linux并发服务器 —— 项目实战(九)
  • 生信教程|替代模型选择
  • redis持久化、主从和哨兵架构
  • Python 连接 Oracle 详解
  • 认识模块化
  • 2023年及以后语言、视觉和生成模型的发展和展望
  • OpenLdap +PhpLdapAdmin + Grafana docker-compose部署安装
  • Java | 排序内容大总结
  • Go 语言入门指南:基础语法和常用特性解析
  • 20.添加HTTP模块
  • Qemu 架构 硬件模拟器
  • 通过starrocks jdbc外表查询sqlserver
  • ArcGIS 10.5安装教程!
  • ConstraintLayout约束布局
  • 通过pyinstaller将python项目打包成exe执行文件
  • P1068 [NOIP2009 普及组] 分数线划定
  • 应用在汽车新风系统中消毒杀菌的UVC灯珠
  • TOOLLLM: FACILITATING LARGE LANGUAGE MODELS TO MASTER 16000+ REAL-WORLD APIS
  • 【JavaSpring】spring接口-beanfactory和applicationcontext与事件解耦
  • 《深入理解Java虚拟机》——Java内存区域与内存溢出异常
  • 公众号hanniman往期精选