/// <summary> /// Record a video file from a specify rtsp address /// </summary> /// <param name="outputFile">output file</param> /// <param name="duration">record duration seconds of audio/video</param> /// <param name="userAgent">User-Agent header</param> /// <param name="transport">set RTSP transport protocols</param> /// <param name="allowedMediaTypes">set media types to accept from the server</param> /// <param name="watermark">watermark for the output video</param> /// <returns>whether record successfully</returns> public async Task <bool> Record2VideoFileAsync( string outputFile, TimeSpan duration, string userAgent = null, Transport transport = Transport.Udp, AllowedMediaTypes allowedMediaTypes = AllowedMediaTypes.All, Watermark watermark = null) { var beforeInput = new Dictionary <string, string>(); if (!string.IsNullOrWhiteSpace(userAgent)) { beforeInput["-user-agent"] = userAgent; } if (transport != Transport.Udp) { beforeInput["-rtsp_transport"] = transport.ToString().ToLower(); } if (allowedMediaTypes != AllowedMediaTypes.All) { beforeInput["-allowed_media_types"] = allowedMediaTypes.ToString().ToLower(); } if (Timeout > 0) { beforeInput["-stimeout"] = $"{Timeout * 1000}"; } var beforeOutput = new Dictionary <string, string> { ["-t"] = duration.ToString() }; return(await FFmpegHelper.WatermarkAsync(Rtsp, outputFile, watermark, beforeInput, beforeOutput)); }
/// <summary> /// Screenshot by a timer /// </summary> /// <param name="outputDirectory"></param> /// <param name="filenamePrefix">filename prefix of screenshot picture</param> /// <param name="interval">how often(seconds) to exec a screenshot.</param> /// <param name="duration">how long time will this run</param> /// <param name="format">screenshot picture format</param> /// <returns></returns> public async Task <bool> ScreenshotAsync(string outputDirectory, string filenamePrefix, int interval, TimeSpan duration, ImageFormat format = ImageFormat.JPG ) => await FFmpegHelper.ScreenshotAsync(Rtsp, outputDirectory, filenamePrefix, interval, duration, Timeout, format);
/// <summary> /// Screenshot once /// </summary> /// <param name="outputFile"></param> /// <returns></returns> public async Task <bool> ScreenshotAsync(string outputFile) => await FFmpegHelper.ScreenshotAsync(Rtsp, outputFile, timeout : Timeout);