gpt4 book ai didi

unix - 将 udp unix 套接字作为输入传递给 ffmpeg

转载 作者:行者123 更新时间:2023-12-04 22:49:26 30 4
gpt4 key购买 nike

我已经知道 ffmpeg 能够从 unix 套接字接收输入:

ffmpeg -i unix://path-to-socket ...

问题是一旦将套接字类型更改为 SOCK_DGRAM而不是 SOCK_STREAM在我的服务器代码中,ffmpeg 无法接收数据并打印错误:
unix://path-to-socket: Protocol wrong type for socket

看着 socket documentation on ffmpeg's site可以应用以下选项:
  • 超时 : 以毫秒为单位的超时。
  • : 在监听模式下创建 Unix 套接字。

  • 这与声明套接字类型无关。

    ls 将 unix 套接字配置为 SOCK_DGRAM甚至可能?

    谢谢,

    乔伊。

    最佳答案

    文档不完整。在 ffmpeg/libavformat/unix.c ,

    static const AVOption unix_options[] = {
    { "listen", "Open socket for listening", OFFSET(listen), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ED },
    { "timeout", "Timeout in ms", OFFSET(timeout), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, ED },
    { "type", "Socket type", OFFSET(type), AV_OPT_TYPE_INT, { .i64 = SOCK_STREAM }, INT_MIN, INT_MAX, ED, "type" },
    { "stream", "Stream (reliable stream-oriented)", 0, AV_OPT_TYPE_CONST, { .i64 = SOCK_STREAM }, INT_MIN, INT_MAX, ED, "type" },
    { "datagram", "Datagram (unreliable packet-oriented)", 0, AV_OPT_TYPE_CONST, { .i64 = SOCK_DGRAM }, INT_MIN, INT_MAX, ED, "type" },
    { "seqpacket", "Seqpacket (reliable packet-oriented", 0, AV_OPT_TYPE_CONST, { .i64 = SOCK_SEQPACKET }, INT_MIN, INT_MAX, ED, "type" },
    { NULL }
    };

    它处理 stream=1 , datagram=1 , seqpacket=1 , 或 type=# , 其中 #是所需套接字类型的整数值( SOCK_STREAM=1SOCK_DGRAM=2SOCK_SEQPACKET=5 )。

    关于unix - 将 udp unix 套接字作为输入传递给 ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149371/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com