您当前的位置: 首页 >  http

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

转mjpeg协议到httpflv

qianbo_insist 发布时间:2021-07-13 19:48:35 ,浏览量:0

知识点 mjpeg

mjpeg是动态jpeg,Motion Joint Photographic Experts Group)是一种视频压缩格式,其中每一帧图像都分别使用JPEG编码,不使用帧间编码,压缩率通常在20:1-50:1范围内。比不上h264,h265,但是有一个非常好的地方,就是可以直接在http里面显示.

httpflv

httpflv 其实最终是要变成fmp4格式来使用浏览器来展示的,这一点一定要清楚,如果不清楚fmp4,一定要搞清楚这种格式。

接收mjpeg

准备一个http客户端,接收mjpeg服务器的码流,实际上,他是一张张的jpg图片在http通道里面传输过来。以下是使用asio制作的一个客户端,链接http server之后,每次都去获取mjpeg帧的边界,叫 Content-Type:.*boundary=,还有一个关键就是获取每一帧的content-length,这个都是使用http协议解析来获取。

void capture_start(s_param *param)
{
	//开始视频采集
	if (param != NULL)
	{
		asio::io_context io_service;
		tcp::resolver resolver(io_service);
		tcp::resolver::query query(param->host, param->port);
		tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
		tcp::resolver::iterator end;
		tcp::socket socket(io_service);
		//socket.io_control(asio::ip::tcp::socket::non_blocking(true));
		std::error_code error = asio::error::host_not_found;
		while (error && endpoint_iterator != end) {
			socket.close();
			//int timeout = 3000;
			//int nRet = setsockopt(socket.native_handle(), SOL_SOCKET, SO_CONNECT_TIME, (const char*)&timeout, sizeof(timeout));
			socket.connect(*endpoint_iterator++, error);
		}
		if (error) {
			cout             
关注
打赏
1663161521
查看更多评论
0.0407s