初始化RTMP推流
程序员文章站
2022-07-14 18:17:58
...
一、RTMP直播推流流程图
二、初始化RTMP流程
void *callBackPush(void *data)
{
RtmpPush *rtmpPush = static_cast<RtmpPush *>(data);
//分配空间
rtmpPush->rtmp = RTMP_Alloc();
//初始化
RTMP_Init(rtmpPush->rtmp);
//设置推流URL
rtmpPush->rtmp->Link.timeout = 10;
//设置可写状态
rtmpPush->rtmp->Link.lFlags |= RTMP_LF_LIVE;
//链接服务器
RTMP_SetupURL(rtmpPush->rtmp, rtmpPush->url);
//链接流
RTMP_EnableWrite(rtmpPush->rtmp);
//如果服务器没有启动,那么会连接不上rtmp 的url
if(!RTMP_Connect(rtmpPush->rtmp, NULL))
{
LOGE("can not connect the url");
goto end;
}
//如果有其他地方给服务器推流,那么再次推流会连接不上服务器的
if(!RTMP_ConnectStream(rtmpPush->rtmp, 0))
{
LOGE("can not connect the stream of service");
goto end;
}
LOGD("链接成功, 开始推流");
//开始推流
// while(true)
// {}
end:
//关闭链接
RTMP_Close(rtmpPush->rtmp);
//释放资源
RTMP_Free(rtmpPush->rtmp);
rtmpPush->rtmp = NULL;
pthread_exit(&rtmpPush->push_thread);
}
总结:
1、需要添加网络权限,如果没有添加网络权限,那么调用RTMP_Connect(rtmpPush->rtmp, NULL)该方法就会返回失败
<uses-permissionandroid:name="android.permission.INTERNET"/>
2、当我们推流过程中有,我们再次推流那就会连接不上服务器的
2020-06-06 13:13:30.538 25770-25770/com.wq.livepusher D/wq892373445: initPush
2020-06-06 13:13:30.658 25770-25933/com.wq.livepusher E/wq892373445: can not connect the url
2020-06-06 13:13:47.910 25770-25770/com.wq.livepusher D/wq892373445: initPush
2020-06-06 13:13:49.846 25770-25957/com.wq.livepusher D/wq892373445: 链接成功, 开始推流
2020-06-06 13:14:00.396 25770-25770/com.wq.livepusher D/wq892373445: initPush
2020-06-06 13:14:10.911 25770-25969/com.wq.livepusher E/wq892373445: can not connect the stream of service
推荐阅读
-
Nginx-rtmp实现直播媒体实时流效果
-
RTX显卡送给主播的免费福利:硬件推流还支持绿幕效果
-
海康&大华&DSS视频拉流-RTSP转RTMP多媒体播放技术
-
iOS 直播-实现后台录音并推流
-
vue项目中播放rtmp视频文件流的方法
-
Android 音视频深入 十六 FFmpeg 推流手机摄像头,实现直播 (附源码下载)
-
Android下RTMP推流h264和aac数据
-
音视频基础(网络传输):视频编码推流
-
EasyRTMP实现内网摄像头RTSP拉流转码RTMP推流到RTMP服务器EasyRTMP-Android视频采集流程是什么?
-
ffmpeg推流实现实时播放监控画面(rtsp to rtmp)