是否有命令行命令可以在一行中为 gstreamer 管道测试 appsrc 和 appsink?

Posted

技术标签:

【中文标题】是否有命令行命令可以在一行中为 gstreamer 管道测试 appsrc 和 appsink?【英文标题】:Is there command line command to test appsrc and appsink in a single line for gstreamer pipeline? 【发布时间】:2021-07-14 07:21:19 【问题描述】:

我要编码的内容

    从 h264 编码的 mp4 文件中获取缓冲区 将缓冲区传递给应用程序接收器 然后分别在另一个管道中,appsrc 将读取缓冲区 缓冲区将是 h264parse,然后使用 GstRTSPServer 通过 rtp 发送出去

希望为 CLI 管道模拟此情况,以确保视频上限正常工作:

我的尝试如下: gst-launch-1.0 文件rc location=video.mp4 !应用程序名称 = mysink !应用程序名称 = mysrc !视频/x-h264 宽度=720 高度=480 帧率=30/1 ! h264parse 配置间隔=1 ! rtph264pay 名称=pay0 pt=96 ! udpsink 主机=192.168.x.x 端口=1234

但这并没有真正起作用,我不太确定这就是 appsrc 和 appsink 的使用方式

谁能给我解惑

编辑: 我要播放的文件具有以下属性

一般 全名:video3.mp4 格式:AVC 格式/信息:高级视频编解码器 文件大小:45.4 MiB

Video
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L2.2
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Format settings, GOP                     : M=1, N=30
Width                                    : 720 pixels
Height                                   : 480 pixels
Display aspect ratio                     : 3:2
Frame rate                               : 30.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive

谢谢

【问题讨论】:

【参考方案1】:

您将无法使用 appsinkappsrc 执行此操作,因为它们明确意味着应用程序使用它们来处理输入/输出缓冲区。

话虽如此,如果您真正想要测试两侧的盖子,只需将它们连接在一起即可。他们都宣传“任何”上限,这意味着他们不会真正影响上限谈判。

gst-launch-1.0 filesrc location=video.mp4 ! \
    "video/x-h264, width=720, height=480, framerate=30/1" ! \
    h264parse config-interval=1 ! \
    rtph264pay name=pay0 pt=96 ! \
    udpsink host=192.168.x.x port=1234

你也会得到一个错误,因为 MP4 与 H264 不同:前者是一种容器格式,而后者是一种视频编解码器。在您的情况下,MP4 文件可能包含 H.264 视频:在这种情况下,它应该通过在 filesrc 之后放置一个 qtdemux 元素来工作。

【讨论】:

以上是关于是否有命令行命令可以在一行中为 gstreamer 管道测试 appsrc 和 appsink?的主要内容,如果未能解决你的问题,请参考以下文章

Python中的Gstreamer立即退出,但在命令行上很好

是否可以在 discord.py 中为不同的前缀使用不同的命令?

在 pipenv 项目中为 python 文件创建命令行别名

将一行/多行从 vi 编辑器复制到命令行

对cmd中的每一行变量运行命令

如何在erl中为单个标志设置多个命令行参数