我需要从网络摄像头的视频流中取出一帧并将其写入文件。在 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 等中进行编码...
多谢。
测试代码:
(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)