UDP - 实时视频流传输
任务
实现基于 UDP 的实时视频传输系统:
发送端:
接收端:
- 重组帧并显示,支持丢包时的错误隐藏(如重复上一帧)。
优化方向:
- 动态调整码率(根据网络延迟增减分辨率)。
- 前向纠错(FEC)减少重传延迟。
- 实现多 IP 视频传输,通过 IP 自动创建接收进程。
流程图
发送端流程图
接收端流程图
使用说明
1. 运行 sender.py
注意 sender 的 target_ip
和 receiver 的 IP 要一致。
python sender.py
2. 运行 receiver.py
接收端会监听所有发送至该节点的 IP,每当接收到不同 IP 时,会独立创建一个进程。每个进程中由多线程负责接收和处理数据包。
python receiver.py
运行效果
设置好发送端和接收端后,可以看到如下效果:
- 视频延迟低,画面流畅,适合实时应用。
- 视频支持循环播放,确保演示效果最佳。
演示视频(循环播放):
退出方式
- 接收端:关闭接收窗口时按下
q
或 esc
,当所有窗口均关闭时,接收方主进程结束。
- 发送端:当收到 5 次 RTT 超时后,发送端退出主进程并停止发送。
示例截图
接收端运行效果
发送端超时退出