什么是ffmpeg的UDP协议?

Art*_*tem 6 ffmpeg

什么是ffmpeg的UDP协议?

这是另一个问题的例子

ffmpeg -i udp://localhost:1234 -vcodec copy output.mp4
Or try:

ffmpeg -i rtp://localhost:1234 -vcodec copy output.mp4
Run Code Online (Sandbox Code Playgroud)

RTP和UDP流是否类似协议或UDP数据包包含我可以使用-f segement选项创建的相同文件?

小智 6

ffmpeg 中的 udp:// 意味着它将流/解析直接视频/音频内容(例如 H.264)到/从 UDP 网络数据包,没有中间协议。

rtp://另一方面,增加了另一层封装,视频/音频内容将被封装到一个RTP包中,RTP包将依次封装到UDP包中。

RTP 更适合媒体流,因为它包括时间戳和排序信息。原始 UDP 数据包缺乏该信息,更容易出现乱序和丢弃数据包,从而导致视频/音频伪影。


小智 4

用户数据报协议。

UDP URL 所需的语法是:

udp://hostname:port[?options]
Run Code Online (Sandbox Code Playgroud)

options 包含以 & 分隔的选项列表,其形式为 key=val。

如果系统上启用了线程,则会使用循环缓冲区来存储传入数据,这可以减少由于 UDP 套接字缓冲区溢出而导致的数据丢失。fifo_size 和 overrun_nonfatal 选项与此缓冲区相关。

支持的选项列表如下。

使用 ffmpeg 通过 UDP 流式传输到远程端点:

ffmpeg -i input -f format udp://hostname:port
Run Code Online (Sandbox Code Playgroud)

使用 ffmpeg 使用 188 大小的 UDP 数据包通过 UDP 以 mpegts 格式进行流式传输,并使用较大的输入缓冲区:

ffmpeg -i input -f mpegts udp://hostname:port?pkt_size=188&buffer_size=65535
Run Code Online (Sandbox Code Playgroud)

使用 ffmpeg 通过 UDP 从远程端点接收:

ffmpeg -i udp://[multicast-address]:port ...
Run Code Online (Sandbox Code Playgroud)

你可以在 man Commande 中找到一些提示!

  • 它非常像 https://www.ffmpeg.org/ffmpeg-protocols.html#udp 我在询问之前读过。它没有描述协议及其内部内容。 (5认同)