EasyDarwin HLS配置列表维护工具

EasyDarwin目前版本功能已经基本趋于完善,特别是HLS直播功能非常实用,本人在通过一个幼儿园APP监控项目中成功应用:约100路摄像头HLS直播,通过Nginx转发到手机APP播放器,服务器稳定运行1个月以上未出现任何状况。依据目前的应用情况估计宽带只要支持到位,CPU足够强悍,理论上单台服务器支撑上千路视频直播应该问题不大。

今天要给大家谈的是关于EasyDarwin的HLS配置列表问题,由于目前最新release版本(EasyDarwin-7.0.4-Build16.0108)还暂时不支持HLS配置列表的本地保存,服务器重启后会造成列表丢失,如果有成百上千路RTSP源需要维护,那就蒙了。。。于是我研究了下源码,发现可以通过调用API的方式实现对HLS列表的维护,就用自己比较熟悉的Qt做了个小程序,用Sqlite做为数据库实现了HLS列表的保存功能。

2016-03-01_1808042016-03-01_181111

个人觉得思路挺简单的,但看到群里很多人在问,就提供一下具体思路,大家完全可以用脚本来自己实现,这里仅供参考:

1、EasyDarwin API接口

从文档和源码中可以看到有这样两个HTTP API接口:

http://127.0.0.1:8088/api/addHLSList?n1=hls_name&n2=rtsp_url&n3=0

http://127.0.0.1:8088/api/StopHLS?n1=hls_name

这两个API,基本上就可以实现自己的想法了,通过HTTP GET方式动态添加列表和删除列表,每次重启服务的时候,在小工具中全部启动一下即可(批量调用addHLSList接口)。

2、核心代码

void MainWindow::action_p_triggered()
{
    QSqlQuery sql_query;
    sql_query.prepare("select * from hls where live_status = 1");
    sql_query.exec();
    while(sql_query.next())
    {
        show_log(QString("%1【%2】摄像机开始直播...")
                 .arg(sql_query.value(1).toString())
                 .arg(sql_query.value(2).toString()));
        QString hls_name = format_name(sql_query.value(3).toString());
        QString reqStr = QString("%1/api/addHLSList?n1=%2&n2=%3&n3=%4")
                     .arg(DARWIN_SERVER)
                     .arg(hls_name)
                     .arg(sql_query.value(4).toString())
                     .arg(0);
        qDebug() << reqStr;         network_request->setUrl(QUrl(reqStr));
        network_manager->get(*network_request);



    }
}

void MainWindow::action_c_triggered()
{
    QSqlQuery sql_query;
    sql_query.prepare("select * from hls where live_status = 1");
    sql_query.exec();
    while(sql_query.next())
    {
        show_log(QString("%1【%2】摄像机停止直播...")
                 .arg(sql_query.value(1).toString())
                 .arg(sql_query.value(2).toString()));
        QString hls_name = format_name(sql_query.value(3).toString());
        QString reqStr = QString("%1/api/StopHLS?n1=%2")
                     .arg(DARWIN_SERVER)
                     .arg(hls_name);
        qDebug() << reqStr;         network_request->setUrl(QUrl(reqStr));
        network_manager->get(*network_request);
    }
}

3、源码下载

HLSTools

转载请注明:梧桐树下 » EasyDarwin HLS配置列表维护工具

与本文相关文章

发表我的评论

取消评论
表情 插代码

Hi,您需要填写昵称和邮箱!

  • 必填项
  • 必填项