rtsp 格式学习

问题:RTSP/1.0 405 Method Not Allowed

主要是在进行OPTIONS指令包封装的时候,通过wireshark抓包进行编写,

查看大致内容为Request: OPTIONS rtsp:://192.168.1.88 RTSP/1.0\r\n

Method: OPTIONS

URL: rtsp:://192.168.1.88

以为信息的开头是Request,实际上这是解析的语句

错误:

request_stream << "REQUEST: " <<"OPTIONS " << "rtsp://192.168.0.114 " << "RTSP/1.0\r\n";

request_stream << "CSeq: " << "2\r\n";

request_stream << "User-Agent: " << "LibVLC/2.1.5 (Live555 Streaming Media v2014.0)\r\n\r\n";

正确:

问题:RTSP/1.0 404 Stream Not Found

主要是在进行DESCRIBE的时候没有填写获取的视频流信息

request_stream << "DESCRIBE " << "rtsp://192.168.0.114/smoke.264 " << "RTSP/1.0\r\n";//right

request_stream << "DESCRIBE " << "rtsp://192.168.0.114 " << "RTSP/1.0\r\n";//error

测试代码

#include <iostream>

#include <fstream>

#include <string>

#include <sstream>

#include <boost/asio.hpp>

#include "socket.h"

using namespace std;

using namespace boost::asio;

const char pszRtspServerIP[32] = "192.168.0.114";

short sRtspServerPort = 8554;

void WriteFile(char* buf);

{

ofstream ofs;

ofs.open("rtspoption.txt");

ofs << buf << endl;

ofs.close();

}

int HandleOptionCommand(ip::tcp::socket &sock)

{

boost::system::error_code ec;

boost::asio::streambuf request;

std::ostream request_stream(&request);

request_stream << "OPTIONS " << "rtsp://192.168.0.114 " << "RTSP/1.0\r\n";

request_stream << "CSeq: " << "2\r\n";

request_stream << "User-Agent: " << "LibVLC/2.1.5 (Live555 Streaming Media v2014.0)\r\n\r\n";

boost::asio::write(sock, request);

char buf[1024] = { 0 };

size_t len = sock.read_some(buffer(buf), ec);

return 0;

}

int HanleDescribeCommand(ip::tcp::socket &sock)

{

boost::system::error_code ec;

boost::asio::streambuf request;

std::ostream request_stream(&request);

request_stream << "DESCRIBE " << "rtsp://192.168.0.114/smoke.264 " << "RTSP/1.0\r\n";

request_stream << "CSeq: " << "3\r\n";

request_stream << "Accept: " << "application/sdp\r\n";

request_stream << "User-Agent: " << "LibVLC/2.1.5 (Live555 Streaming Media v2014.0)\r\n\r\n";

boost::asio::write(sock, request);

char buf[1024] = { 0 };

size_t len = sock.read_some(buffer(buf), ec);

//a=control:track1

return 0;

}

int HandleSetupCommand(ip::tcp::socket &sock)

{

boost::system::error_code ec;

boost::asio::streambuf request;

std::ostream request_stream(&request);

request_stream << "SETUP " << "rtsp://192.168.0.114/smoke.264 " << "RTSP/1.0\r\n";

request_stream << "CSeq: " << "3\r\n";

request_stream << "Transport: " << "RTP/AVP/TCP;unicast;interleaved=0-1\r\n";

request_stream << "User-Agent: " << "LibVLC/2.1.5 (Live555 Streaming Media v2014.0)\r\n\r\n";

boost::asio::write(sock, request);

char buf[1024] = { 0 };

size_t len = sock.read_some(buffer(buf), ec);

return 0;

}

int main(int argc, char* argv[])

{

io_service iosev;

ip::tcp::socket socket(iosev);

ip::tcp::endpoint ep(ip::address_v4::from_string(pszRtspServerIP), sRtspServerPort);

boost::system::error_code ec;

socket.connect(ep, ec);

if (ec) return -1;

HandleOptionCommand(socket);

HanleDescribeCommand(socket);

HandleSetupCommand(socket);

return 0;

}

参考

http://www.cnblogs.com/lidabo/p/3701068.html

时间: 2024-10-24 22:18:24

rtsp 格式学习的相关文章

RTSP协议学习

目录 RTSP协议学习笔记... 1 第一部分:RTSP协议... 3 一.       RTSP协议概述... 3 二.       RTSP协议与HTTP协议区别... 3 三.       RTSP重要术语... 4 1.       集合控制(Aggregatecontrol ):. 4 2.       实体(Entity):... 4 3.       容器文件(Containerfile):... 4 4.       RTSP会话(RTSP session ):... 4 四. 

关于ios对rtsp格式的流媒体支持的一些官方说明

ios明确不支持rtsp格式的流媒体,基于rtsp/rtp对通用性和防炎墙以及需要开新端口等额外影响稳定性和通用性的原因. 而对http流的视频支持是最好的.虽然有第三方的方式配合ffmpeg库,实现了rtsp的流内容播放,但效果很一般. 如果架构的条件不是那么苛刻,不如直接选择http流提供给app去播放呈现. 具体官方说明: Frequently Asked Questions What kinds of encoders are supported? The protocol specif

RTSP协议学习笔记

一.        RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色.尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据.媒体数据的传送可通过RTP/RTCP等协议来完成. 一次基本的RTSP操作过程是:首先,客户端连接到流服务器并发送一个RTS

【转】RTSP协议学习笔记

第一部分:RTSP协议 一. RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似. RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演"网络远程控制"的角色.尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据.媒体数据的传送可通过RTP/RTCP等协议来完成. 一次基本的RTSP操作过程是: 1> 客户端连

海康大华RTSP格式

海康实时流:rtsp://admin:[email protected]:554/h264/ch4/main/av_stream海康回放流(模拟通道):rtsp://admin:[email protected]:554/Streaming/tracks/101?starttime=20120802t063812z&endtime=20120802t064816z海康回放流(IP通道):    rtsp://admin:[email protected]:554/Streaming/tracks

海康RTSP格式

海康RTSP取流URL格式 一.预览取流 设备预览取流的RTSP URL有新老版本,2012年之前的设备(比如V2.0版本的Netra设 备)支持老的取流格式,之后的设备新老取流格式都支持. RTSP.jpg 1.老版本 URL规定: rtsp://username:[email protected]<ipaddress>/<videotype>/ch<number>/<streamtype> 注:VLC可以支持解析URL里的用户名密码,实际发给设备的RTS

海康、大华IPC的rtsp格式

海康: rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username: 用户名.例如admin.password: 密码.例如12345.ip: 为设备IP.例如 192.0.0.64.port: 端口号默认为554,若为默认可不填写.codec:有h264.MPEG-4.mpeg4这几种.channel: 通道号,起始为1.例如通道1,则为ch1.subtype: 码流类型,主

Linux XZ压缩格式学习

XZ的介绍   今天升级Python的时候,下载的Python-2.7.8.tar.xz安装包为xz格式,好吧,我又孤陋寡闻了,居然第一次遇见xz格式的压缩文件.搜索了一下资料,下面是xz的一些介绍: xz是一个使用 LZMA压缩算法的无损数据压缩文件格式.和gzip与bzip2一样,同样支持多文件压缩,但是约定不能将多于一个的目标文件压缩进同一个档案文件.相反,xz通常作为一种归档文件自身的压缩格式,例如使用tar或cpioUnix程序创建的归档.xz 在GNU coreutils(版本 7.

JSON格式学习练习

JSON 语法规则 JSON 语法是 JavaScript 对象表示法语法的子集. 数据在名称:值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数据的书写格式是:名称/值对. 名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值: "firstName" : "John""lastname":"Edson" 这很容易理解,等价于这条 JavaScript 语句: firstNa