ffmpeg从rtsp抓流存flv[c# NReco.VideoConverter flv]

海康摄像头,不想再用他的sdk,也是坑。所以直接取rtsp流。

原本就是 ffmpeg.exe -i "rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" -c copy -f flv x.flv 就完了。

使用NReco.VideoConverter:

        private void buttonStart_Click(object sender, EventArgs e)
        {
            var conv = new NReco.VideoConverter.FFMpegConverter();
            //抓图
            //conv.GetVideoThumbnail("rtsp://admin:[email protected]:554/MPEG-4/ch1/main/av_stream", "c:\\a.jpg");

            ConvertSettings cs = new ConvertSettings() { VideoCodec = "copy" };
            //cs.CustomInputArgs = "-y -q 6 -s 800x600 -r 15"; //设置质量、分辨率、帧率
            fs = new FileStream(@"d:\x1.flv", FileMode.OpenOrCreate);
            //注意第二个参数,为输入格式,之前传了几个格式反而有问题,设置为null就正常了。
            task = conv.ConvertLiveMedia("rtsp://admin:[email protected]:554/h264/ch1/main/av_stream", null, fs, Format.flv, cs);
            task.Start();

        }


        private void buttonStop_Click(object sender, EventArgs e)
        {
            try
            {
                //不知为什么无法正常关闭,传入true来强行kill进程,非正常退出会有异常
                task.Stop(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine("error:{0}", ex.Message.ToString());
            }
            
            fs.Close();
        }


你可能感兴趣的:(C#,ffmpeg,flv,RTSP)