知识点
mjpeg
mjpeg是动态jpeg,Motion Joint Photographic Experts Group)是一种视频压缩格式,其中每一帧图像都分别使用JPEG编码,不使用帧间编码,压缩率通常在20:1-50:1范围内。比不上h264,h265,但是有一个非常好的地方,就是可以直接在http里面显示.
httpflvhttpflv 其实最终是要变成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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?