Пример #1
0
        /// <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));
        }
Пример #2
0
 /// <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);
Пример #3
0
 /// <summary>
 /// Screenshot once
 /// </summary>
 /// <param name="outputFile"></param>
 /// <returns></returns>
 public async Task <bool> ScreenshotAsync(string outputFile) =>
 await FFmpegHelper.ScreenshotAsync(Rtsp, outputFile, timeout : Timeout);