我想点击按钮时从cctv相机流式传输。我已经非常努力地尝试了但是还没能解决它。
代码构建成功,但只显示一个黑屏 - 没有来自相机的流。
代码:
(IBAction)StreamFromCamera:(id)sender {
NSURL *url=[NSURL URLWithString:@"rtsp://192.168.1.100/user=admin&password=123&channel=6&stream=0.sdp?"];
_player=[[MPMoviePlayerController alloc]initWithContentURL:url];
_player.view.frame=CGRectMake(0, 20, self.view.frame.size.width,300);
[self.view addSubview:_player.view];
[_player play];
}
答案 0 :(得分:0)
IOS不支持开箱即用的Rtsp。您必须使用或编写库才能接收要解码和播放的流和视频工具箱。
答案 1 :(得分:0)
我已经使用FFmpeg 2.8通过RTSP协议接收H.264数据,效果很好。让我简要介绍一下处理步骤:
关于FFmpeg的简单设置代码喜欢这个:
AVFormatContext *fmtCtx = avformat_alloc_context();
avformat_open_input(&fmtCtx, server, NULL, &dic);
avformat_find_stream_info(fmtCtx, NULL);
av_dump_format(fmtCtx, 0, NULL, 0);
// find out stream index, sample code:
AVCodecContext *videoCodecCtx = NULL;
int videoStreamIndex = -1;
for (int i = 0 ; i < fmtCtx->nb_streams; i++) {
if (AVMEDIA_TYPE_VIDEO == fmtCtx->streams[i]->codec->codec_type) {
videoCodecCtx = fmtCtx->streams[i]->codec;
videoStreamIndex = i;
break;
}
}
AVPacket packet, *pkt = &packet;
// loop av_read_frame and grap AVPacket to Video Toolbox pipeline,
// data structure transfers like this:
// AVPacket.data -> CMBlockBuffer -> CMSamplerBuffer -> VTDecompressionDecodeFrame
// get your CVPixelBuffer from Video Toolbox Decode callback function.