11 个解决方案
#1
拖动用PLAY方法实现,相当于再找一个播放点。
快进需要加一个rtsp头scale。Scale头域表示播放或记录速度。值为1表示正常播放速度,0.5表示一半播放速度,2表示2倍播放速度。负值表示反方向播放。请求头中包含的速度如果超出了服务器允许范围,则在反馈头中会给出实际速度。
Scale: -3.5
下面是拖动的例子
PLAY方法告诉服务器按照SETUP方法中的设置开始传送媒体流,在SETUP方法被调用前,不能调用PLAY方法。PLAY请求中带有Range头,用于表示播放的范围。如果不带有Range头则默认从头播到尾。当播放到达Range尾时,会自动停止,就像调用了一个PAUSE命令。
PLAY命令可以连续调用,在服务器端会将多个PLAY命令进行队列管理。在同一时间只能有一个PLAY命令被执行,只有第一个PLAY命令执行完毕,第二个PLAY命令才能被执行。如下例所示,服务器会先播放10-15秒,再播放20-25秒,最后播放30-结尾。PLAY还可以带有time参数,用于在制定时间播放。这样做可以同步多个数据流。
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 835
Session: 12345678
Range: npt=10-15
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 836
Session: 12345678
Range: npt=20-25
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 837
Session: 12345678
Range: npt=30-
C->S: PLAY rtsp://audio.example.com/twister.en RTSP/1.0
CSeq: 833
Session: 12345678
Range: smpte=0:10:20-;time=19970123T153600Z
S->C: RTSP/1.0 200 OK
CSeq: 833
Date: 23 Jan 1997 15:35:06 GMT
Range: smpte=0:10:22-;time=19970123T153600Z
快进需要加一个rtsp头scale。Scale头域表示播放或记录速度。值为1表示正常播放速度,0.5表示一半播放速度,2表示2倍播放速度。负值表示反方向播放。请求头中包含的速度如果超出了服务器允许范围,则在反馈头中会给出实际速度。
Scale: -3.5
下面是拖动的例子
PLAY方法告诉服务器按照SETUP方法中的设置开始传送媒体流,在SETUP方法被调用前,不能调用PLAY方法。PLAY请求中带有Range头,用于表示播放的范围。如果不带有Range头则默认从头播到尾。当播放到达Range尾时,会自动停止,就像调用了一个PAUSE命令。
PLAY命令可以连续调用,在服务器端会将多个PLAY命令进行队列管理。在同一时间只能有一个PLAY命令被执行,只有第一个PLAY命令执行完毕,第二个PLAY命令才能被执行。如下例所示,服务器会先播放10-15秒,再播放20-25秒,最后播放30-结尾。PLAY还可以带有time参数,用于在制定时间播放。这样做可以同步多个数据流。
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 835
Session: 12345678
Range: npt=10-15
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 836
Session: 12345678
Range: npt=20-25
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 837
Session: 12345678
Range: npt=30-
C->S: PLAY rtsp://audio.example.com/twister.en RTSP/1.0
CSeq: 833
Session: 12345678
Range: smpte=0:10:20-;time=19970123T153600Z
S->C: RTSP/1.0 200 OK
CSeq: 833
Date: 23 Jan 1997 15:35:06 GMT
Range: smpte=0:10:22-;time=19970123T153600Z
#2
普京说的好!
#3
我是C++写的服务器和客户端,你的意思是只要修改一下客户端发送给服务端的PLAY命令中某些参数就可以达到快进和拖拽的效果吗?服务端代码不需要修改吗?
#4
服务器支持标准协议,我说的命令都是rtsp标准命令,所以只需要修改客户端就可以了,服务器不需要改。
#5
我在客户端调用发送PLAY命令的接口时:
rtspClient->sendPlayCommand(session, responseHandler,0,-1,2);
从头播放到尾,播放速度是2,但是播放速度并没有变快,我调试了一下服务端代码,发现接收到的包里,scale是2,不过服务端经过一些处理之后scale又变成1了,所以速度没变快。这是为什么?我用的服务端是live555MediaServer,这个服务器是不是没有实现速度控制等功能?我应该在这个服务器上做什么修改?
谢谢 期待回答
#6
需要服务端改代码,改变发送速度
#7
发送速度怎么改变?服务端需要重写那个类呢?纯新手 看了几天也没看出来
#8
你试一下darwin流媒体服务器,这个应该是支持的
#9
我要开发的就是流媒体服务器,使用live555开发自己的流媒体服务器,现在的问题是我的服务器不支持快速播放和拖动。我想请教重写live555的那部分代码可以实现这些功能。谢谢
#10
不知道解决了没有,live555不支持裸流的跳转,需要封装成某种文件才可以,live555主页有说明的
'Trick play' functionality
The server supports RTSP 'trick play' operations for some, but not all, media types:
Pausing: All media types
Seeking: MPEG Transport Streams; DV video; WAV (PCM) audio; MPEG-1 or 2 audio; MPEG-1 or 2 Program Streams (partially working); Matroska or WebM files
Fast forward: MPEG Transport Streams; WAV (PCM) audio; MPEG-1 or 2 audio
Reverse play: MPEG Transport Streams; WAV (PCM) audio
Note that in order to provide 'trick play' operations for a streamed MPEG Transport Stream file, a special 'index file' must created for each such file, using our "MPEG2TransportStreamIndexer" tool.
Trick play support for additional media types will be added in the future.
'Trick play' functionality
The server supports RTSP 'trick play' operations for some, but not all, media types:
Pausing: All media types
Seeking: MPEG Transport Streams; DV video; WAV (PCM) audio; MPEG-1 or 2 audio; MPEG-1 or 2 Program Streams (partially working); Matroska or WebM files
Fast forward: MPEG Transport Streams; WAV (PCM) audio; MPEG-1 or 2 audio
Reverse play: MPEG Transport Streams; WAV (PCM) audio
Note that in order to provide 'trick play' operations for a streamed MPEG Transport Stream file, a special 'index file' must created for each such file, using our "MPEG2TransportStreamIndexer" tool.
Trick play support for additional media types will be added in the future.
#11
不错啊...
#1
拖动用PLAY方法实现,相当于再找一个播放点。
快进需要加一个rtsp头scale。Scale头域表示播放或记录速度。值为1表示正常播放速度,0.5表示一半播放速度,2表示2倍播放速度。负值表示反方向播放。请求头中包含的速度如果超出了服务器允许范围,则在反馈头中会给出实际速度。
Scale: -3.5
下面是拖动的例子
PLAY方法告诉服务器按照SETUP方法中的设置开始传送媒体流,在SETUP方法被调用前,不能调用PLAY方法。PLAY请求中带有Range头,用于表示播放的范围。如果不带有Range头则默认从头播到尾。当播放到达Range尾时,会自动停止,就像调用了一个PAUSE命令。
PLAY命令可以连续调用,在服务器端会将多个PLAY命令进行队列管理。在同一时间只能有一个PLAY命令被执行,只有第一个PLAY命令执行完毕,第二个PLAY命令才能被执行。如下例所示,服务器会先播放10-15秒,再播放20-25秒,最后播放30-结尾。PLAY还可以带有time参数,用于在制定时间播放。这样做可以同步多个数据流。
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 835
Session: 12345678
Range: npt=10-15
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 836
Session: 12345678
Range: npt=20-25
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 837
Session: 12345678
Range: npt=30-
C->S: PLAY rtsp://audio.example.com/twister.en RTSP/1.0
CSeq: 833
Session: 12345678
Range: smpte=0:10:20-;time=19970123T153600Z
S->C: RTSP/1.0 200 OK
CSeq: 833
Date: 23 Jan 1997 15:35:06 GMT
Range: smpte=0:10:22-;time=19970123T153600Z
快进需要加一个rtsp头scale。Scale头域表示播放或记录速度。值为1表示正常播放速度,0.5表示一半播放速度,2表示2倍播放速度。负值表示反方向播放。请求头中包含的速度如果超出了服务器允许范围,则在反馈头中会给出实际速度。
Scale: -3.5
下面是拖动的例子
PLAY方法告诉服务器按照SETUP方法中的设置开始传送媒体流,在SETUP方法被调用前,不能调用PLAY方法。PLAY请求中带有Range头,用于表示播放的范围。如果不带有Range头则默认从头播到尾。当播放到达Range尾时,会自动停止,就像调用了一个PAUSE命令。
PLAY命令可以连续调用,在服务器端会将多个PLAY命令进行队列管理。在同一时间只能有一个PLAY命令被执行,只有第一个PLAY命令执行完毕,第二个PLAY命令才能被执行。如下例所示,服务器会先播放10-15秒,再播放20-25秒,最后播放30-结尾。PLAY还可以带有time参数,用于在制定时间播放。这样做可以同步多个数据流。
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 835
Session: 12345678
Range: npt=10-15
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 836
Session: 12345678
Range: npt=20-25
C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0
CSeq: 837
Session: 12345678
Range: npt=30-
C->S: PLAY rtsp://audio.example.com/twister.en RTSP/1.0
CSeq: 833
Session: 12345678
Range: smpte=0:10:20-;time=19970123T153600Z
S->C: RTSP/1.0 200 OK
CSeq: 833
Date: 23 Jan 1997 15:35:06 GMT
Range: smpte=0:10:22-;time=19970123T153600Z
#2
普京说的好!
#3
我是C++写的服务器和客户端,你的意思是只要修改一下客户端发送给服务端的PLAY命令中某些参数就可以达到快进和拖拽的效果吗?服务端代码不需要修改吗?
#4
服务器支持标准协议,我说的命令都是rtsp标准命令,所以只需要修改客户端就可以了,服务器不需要改。
#5
我在客户端调用发送PLAY命令的接口时:
rtspClient->sendPlayCommand(session, responseHandler,0,-1,2);
从头播放到尾,播放速度是2,但是播放速度并没有变快,我调试了一下服务端代码,发现接收到的包里,scale是2,不过服务端经过一些处理之后scale又变成1了,所以速度没变快。这是为什么?我用的服务端是live555MediaServer,这个服务器是不是没有实现速度控制等功能?我应该在这个服务器上做什么修改?
谢谢 期待回答
#6
需要服务端改代码,改变发送速度
#7
发送速度怎么改变?服务端需要重写那个类呢?纯新手 看了几天也没看出来
#8
你试一下darwin流媒体服务器,这个应该是支持的
#9
我要开发的就是流媒体服务器,使用live555开发自己的流媒体服务器,现在的问题是我的服务器不支持快速播放和拖动。我想请教重写live555的那部分代码可以实现这些功能。谢谢
#10
不知道解决了没有,live555不支持裸流的跳转,需要封装成某种文件才可以,live555主页有说明的
'Trick play' functionality
The server supports RTSP 'trick play' operations for some, but not all, media types:
Pausing: All media types
Seeking: MPEG Transport Streams; DV video; WAV (PCM) audio; MPEG-1 or 2 audio; MPEG-1 or 2 Program Streams (partially working); Matroska or WebM files
Fast forward: MPEG Transport Streams; WAV (PCM) audio; MPEG-1 or 2 audio
Reverse play: MPEG Transport Streams; WAV (PCM) audio
Note that in order to provide 'trick play' operations for a streamed MPEG Transport Stream file, a special 'index file' must created for each such file, using our "MPEG2TransportStreamIndexer" tool.
Trick play support for additional media types will be added in the future.
'Trick play' functionality
The server supports RTSP 'trick play' operations for some, but not all, media types:
Pausing: All media types
Seeking: MPEG Transport Streams; DV video; WAV (PCM) audio; MPEG-1 or 2 audio; MPEG-1 or 2 Program Streams (partially working); Matroska or WebM files
Fast forward: MPEG Transport Streams; WAV (PCM) audio; MPEG-1 or 2 audio
Reverse play: MPEG Transport Streams; WAV (PCM) audio
Note that in order to provide 'trick play' operations for a streamed MPEG Transport Stream file, a special 'index file' must created for each such file, using our "MPEG2TransportStreamIndexer" tool.
Trick play support for additional media types will be added in the future.
#11
不错啊...