流媒体技术世界——分享技术,增值服务
Flussonic Media Server提供的Http接口
这篇文章中,我们将介绍Flussonic Media Server提供的HTTP接口。

Flussonic Media Server对外提供了Http接口,你可以用它向Flussonic 发起请求,包括获得一些你需要的信息,或者对Flussonic进行设置上的修改。

为了安全起见,Flussonic为这些Http接口提供了安全验证机制。

针对从Flussonic查询一些信息的接口,它将使用配置文件中的view_auth user password;指令来完成对请求的验证;

针对修改Flussonic上的配置信息的接口,它将配置文件中的edit_auth user password;指令来完成对请求的验证;

认证的方式是Http Basic 认证(这是一种明文方式,后续版本会增加digest认证方式)

下面,我们就开始一一介绍这些Http接口:

一、查询Flussonic Media Server上的总体性信息


1. URL格式:/flussonic/api/server
2. 参数:无
3. return: 返回参数是Json形式,如下:
{
    "version": "4.6.1", // Flussonic server version
    "hostname": "streamer.example.com", // hostname
    "uptime": 43373, // Current Flussonic uptime in seconds
    "total_clients": 1592, // Total clients number
    "total_streams": 100, // Total streams number
    "online_streams": 95, // Total active streams number
    "input_kbit": 1234, // Current inbound speed
    "output_kbit": 123456 // Current outbound speed
}
	

二、查询Flussonic Media Server上的媒体流信息


1. URL格式:/flussonic/api/media
2. 参数:无
3. return: 返回参数是Json形式,如下:
[ //list of streams
  {
    "entry": "stream",
    "value": {
      "name": "euro", //stream name
      "urls": [ //list of sources
        {
          "value": "tshttp://192.168.1.2:6502", //source URL
          "options": [ //source switching options
            [
              "priority",
              "1"
            ],
            [
              "source_timeout",
              "30"
            ]
          ]
        }
      ],
      "stats": {
        "alive": true, //true if there are recent frames in the stream
        "bitrate": 3690, //biteate
        "bufferings": 0,
        "client_count": 0, //number of clients (viewers) of this stream
        "dash": true, //DASH enabled
        "dvr_enabled": false, //archive recording disabled
        "hds": true, //HDS enabled
        "hls": true, //HLS enabled
        "input_error_rate": 0, //number of errors registered per second
        "last_access_at": 1493279230436,
        "media_info": { //stream content info
          "height": 576, //image height
          "streams": [
            {
              "bitrate": 191, //biteate
              "codec": "mp2a", //codec
              "content": "audio", //content type:audio
              "lang": "eng", //language
              "track_id": "a1" //track number
            },
            {
              "bitrate": 3256, //bitrate
              "codec": "mp2v", //codec
              "content": "video", //content type: video
              "size": "1024x576", //image size
              "track_id": "v1" //track number
            }
          ],
          "width": 1024 //image width
        },
        "out_bandwidth": 4002, //out bandwidth
        "push_stats": { //stream copy statistisc, bytes
          "tshttp://container4:8080/static1/mpegts": 2000918592
        },
        "remote": false, //the stream is not repeated from another Flussonic
        "retry_count": 0, //number of automatic retries
        "running": true, //stream is being broadcased, does not necessarily mean there are frames in the stream
        "start_running_at": 1493279194382,
        "ts_delay": 113, //milliseconds since the most recent frame in the stream 
        "url": "tshttp://192.168.1.2:6502" //URL of current source
      },
      "options": { //stream configuration
        "static": false, 
        "retry_limit": 10,
        "clients_timeout": 60,
        "source_timeout": 60,
        "pushes": [ 
          [
            "tshttp://container4:8080/static1/mpegts"
          ]
        ],
        "publish_enabled": false,
        "add_audio_only": false,
        "dash_off": false,
        "dvr_protected": false,
        "hds_off": false,
        "hls_off": false,
        "m4s_off": false,
        "mpegts_off": false,
        "pulse_off": false,
        "rtmp_off": false,
        "rtsp_off": false,
        "webrtc_off": false
      }
    }
  },
  ...
]
	

三、查询Flussonic Media Server上的某一个媒体流的信息


1. URL格式:/flussonic/api/media_info/STREAM_NAME
2. 参数:STREAM_NAME,代表一个流的名字
3. return: 返回参数是Json形式,如下:
{
    "width":1024,   //image width
    "height":576,   //image height
    "streams":[   //list of elements of this stream
        {
            "content":"video",   //content type is video
            "codec":"h264",   //codec is h264
            "track_id":1   //track number. elements are sorted on this field
        },
        {
            "content":"audio",   //content type is audio
            "codec":"aac",   //codec is AAC
            "lang":"ukr",   //language is Ukrainian
            "track_id":2   //track number
        },
        {
            "content":"audio",   //content type is audio
            "codec":"aac",   //codec is AAC
            "lang":"rus",   //language is Russian
            "track_id":3   //track number
        }
    ]
}	
	

四、查询Flussonic Media Server上的某一个转码之前的直播输入流的信息


如果Flussonic Media Server对一个直播输入流做了转码,而我们想知道原始的输入流信息(被转码之前的),可以使用下面的接口

1. URL格式:/flussonic/api/input_media_info/STREAM_NAME
2. 参数:STREAM_NAME,代表一个流的名字
3. return: 返回参数是Json形式,如下:
{
    "height": 240,
    "streams": [
        {
            "codec": "h264",
            "content": "video",
            "fps": 25,
            "height": 240,
            "length_size": 4,
            "level": "2.1",
            "pixel_height": 240,
            "pixel_width": 320,
            "profile": "Baseline",
            "sar_height": 1,
            "sar_width": 1,
            "size": "320x240",
            "track_id": "v1",
            "width": 320
        },
        {
            "bitrate": 25,
            "codec": "aac",
            "content": "audio",
            "lang": "eng",
            "track_id": "a1"
        }
    ],
    "width": 320
}
	

如果这个直播流没有被转码,那么它不适用这个接口,你在调用这个接口时,回得到如下响应:
{
    "error": "no_transcoder"
}
	

五、查询Flussonic Media Server上的一个直播流的当前状态(传输质量)


如果要查询一个直播流的传输(输入)质量可以使用下面的接口:

1. URL格式:/flussonic/api/stream_health/STREAM_NAME
2. 参数:STREAM_NAME,代表一个流的名字
3. return:
HTTP 200 表示输入流状态正常,收到的最后一个帧的时间举例现在不到1秒(也就说不到1秒请还能正常收到数据)
HTTP 424 表示输入流还存在,但是已经有一段时间没有收到数据了。


六、查询Flussonic Media Server上的用户Session列表


注:这里的Session指的是用户访问Flussonic Meida Server上的流服务产生的Session

1. URL格式:/flussonic/api/sessions
2. 参数:无
3. return: 返回参数是Json形式,如下:
{
    "sessions":[
        {
            "id":"3100c9414a8666450a47246520a921076f4738e5",
            //session identifier (it is NOT unique!)
            "session_id":
            "3100c9414a8666450a47246520a921076f4738e5-1396588629135",
            //unique session identifier
            "ip":"127.0.0.1",    //client IP
            "name":"vod/ir.mp4",    //internal identifier with a prefix
            "created_at":1396588629135,    //session start time
            "duration":5109,    //session duration
            "type":"hds",    //stream type
            "bytes_sent":828010,    //the number of transmitted bytes
            "country":"NONE",    //GeoIP location of a current user (viewer)
        }
    ]

    
如果你要得到某一个媒体流的用户Session列表,可以在URL中加入流的名字作为查询参数,如下所示:
/flussonic/api/sessions?name=vod/ir.mp4 // 这是VOD点播的例子
或
/flussonic/api/sessions?name=euro //这是直播流的例子,加上euro是流的名字
	
这时候得到的Json响应,如下所示:
{
    "name":"euro",    //stream name
    "sessions":[    //list of sessions
        {
            "id":"e927bf4dca1ea90622318d4b4a0a60ab650bc6d9",
            //session identifier (it is NOT unique!)
            "session_id":
            "e927bf4dca1ea90622318d4b4a0a60ab650bc6d9-1396867792624",
            //unique session identifier
            "ip":"127.0.0.1",    //client IP
            "name":"euro",    //stream name
            "created_at":1396867792624,    //session start time
            "duration":30614,    //session duration
            "type":"hls",    //type of this stream
            "bytes_sent":5712330,    //the number of transmitted bytes
            "country":"NONE"    //GeoIP location of a current user (viewer)
        }
    ]
}
	

七、关闭用户Session


注:这里的Session指的是用户访问Flussonic Meida Server上的流服务产生的Session
你可以在这个接口中用Http post请求,把一个或多个用户Session关闭掉。

1. URL格式:/flussonic/api/close_sessions
2. 参数:一个或多个sesssion的ID,用\n隔开。作为Post请求的数据。
3. return: 如果调用成功,则返回的Http状态码是200

八、删除一个直播流


你可以利用这个接口删除已有已有的直播流
你可以在这个接口中用Http post请求,把一个直播流删除掉。

1. URL格式:/flussonic/api/config/stream_delete
2. 参数:一个直播流的名字
3. return: 如果调用成功,返回的Json串为:{"success":true},Http状态码是200

九、创建或修改一个直播流


你可以在这个接口中用Http post请求,创建或修改一个直播流。即:如果这个流不存在,则创建,如果这个流已经存在,就修改它。

1. URL格式:/flussonic/api/config/stream_create
2. 参数:就是一条文本记录,它和你在flussonic.conf文件中的配置一个直播流是完全一样的。
3. return: 如果调用成功,返回的Json串为:{"success":true}
下面是一个curl命令的例子:
curl ... --data-binary 'stream mystream { url hls://myvideo.com/mystream; dvr /storage 1d 1G; }'
    

十、重新加载Flussonic Media Server的配置文件


你可以利用这个接口重新加载Flussonic Media Server中的配置文件。

1. URL格式:/flussonic/api/reload
2. 参数:无
3. return: 如果调用成功,返回的Json串为:{"success":true}
下面是一个curl命令的例子:
curl -u admin:pass0 http://flussonic:8080/flussonic/api/reload
    

十一、重新启动一个直播流


你可以利用这个接口重新启动一个直播流。

1. URL格式:/flussonic/api/stream_restart/STREAM_NAME
2. 参数:STREAM_NAME 直播流的名字
3. return: 如果调用成功,返回的Json串为:{"success":true}

十二、将一个直播流的源切换到另一个源


你可以利用这个接口将一个直播流的源切换到另一个源。但是,要注意,这些源首先必须是在这个直播流中已经配置过的。因为这个接口只是在已有的多个源之间做切换,而不会更改配置。

1. URL格式:/flussonic/api/stream_switch_source/STREAM_NAME?url=SOURCE_URL
2. 参数:STREAM_NAME 代表直播流的名字,SOURCE_URL代表源流的URL
3. return: 如果调用成功,返回的Json串为:{"success":true}

十三、对一个直播流启动录制(DVR)


你可以利用这个接口对一个直播流启动录制(DVR),相当于配置文件中的dvr_enable参数

1. URL格式:/flussonic/api/dvr_enable/STREAM_NAME
2. 参数:STREAM_NAME 代表直播流的名字
3. return: 如果调用成功,返回的Json串为:{"success":true}

十四、对一个直播流禁用录制(DVR)


你可以利用这个接口对一个直播流禁用录制(DVR),相当于配置文件中的dvr_disable参数

1. URL格式:/flussonic/api/dvr_disable/STREAM_NAME
2. 参数:STREAM_NAME 代表直播流的名字
3. return: 如果调用成功,返回的Json串为:{"success":true}
匿名用户
评论

我们的地址


北京市朝阳区管庄西里建基商务楼423室


邮编:100024

关于我们


北京联方信科信息技术有限责任公司


官网:www.ttstream.com

联系我们


王经理:phone


柳经理:phone

京ICP备14033868号-2