小编Ond*_*rej的帖子

如何使用 gstreamer / 关闭流从视频流中提取单帧

我需要从网络摄像头的视频流中取出一帧并将其写入文件。在 ffmpeg 中我可以这样做:

ffmpeg -i rtsp://10.6.101.40:554/video.3gp -t 1 img.png
Run Code Online (Sandbox Code Playgroud)

我的 GStreamer 命令:

gst-launch-1.0  rtspsrc location="rtsp://10.6.101.40:554/video.3gp" is_live=true ! decodebin ! jpegenc ! filesink location=img.jpg
Run Code Online (Sandbox Code Playgroud)

问题是,gstreamer进程一直运行并且没有结束。如何在文件写入后仅拍摄一帧并强制流关闭?是否可以从命令行执行此操作,或者我应该在 c/python 等中进行编码...

多谢。

shell command-line rtsp gstreamer

5
推荐指数
1
解决办法
6139
查看次数

在define-syntax体中,datum-> syntax和syntax#'有什么区别?

测试代码:

(define-syntax (test-d stx)
  #'(begin 
      (define (callme a)
        (writeln a))))

(define-syntax (test-e stx)
  (datum->syntax stx '(begin 
                         (define (callme2 a)
                           (writeln a)))))


> (test-d)
> (callme 1)
. . callme: undefined;
 cannot reference an identifier before its definition
> (test-e)
> (callme2 1)
1
Run Code Online (Sandbox Code Playgroud)

我不明白test-d和test-e的区别.他们看起来一样平等.仍然,没有定义callme.

甚至宏步也说它是一样的.

Expansion finished
(module anonymous-module racket
  (#%module-begin
   (define-syntax (test-d stx)
     #'(begin (define (callme a) (writeln a))))
   (define-syntax (test-e stx)
     (datum->syntax
      stx
      '(begin (define (callme2 a) (writeln a)))))
   (begin (define (callme a) (writeln a)))
   (begin (define (callme2 …
Run Code Online (Sandbox Code Playgroud)

macros hygiene racket

3
推荐指数
1
解决办法
166
查看次数

标签 统计

command-line ×1

gstreamer ×1

hygiene ×1

macros ×1

racket ×1

rtsp ×1

shell ×1