我创建了如下图所示的图像处理管道,并希望减少整个管道延迟;
我在 MacBook 中运行如下命令;(vtenc_h264_hw
比 快 8 秒左右x264enc
)
gst-launch-1.0 -v avfvideosrc \
! clockoverlay font-desc="Sans bold 60px" \
! videorate \
! video/x-raw,framerate=1/1 \
! vtenc_h264_hw allow-frame-reordering=FALSE realtime=TRUE max-keyframe-interval=2 bitrate=512 \
! h264parse \
! video/x-h264,stream-format=avc,alignment=au \
! kvssink stream-name="test-instream" storage-size=512 \
access-key="${AWS_ACCESS_KEY_ID}" \
secret-key="${AWS_SECRET_ACCESS_KEY}" \
aws-region="${AWS_REGION}" \
frame-timecodes=true \
framerate=1
Kinesis 视频流 (KVS) 管理控制台 ( test-instream
) 中生成的视频如下;
大约有 2 秒的延迟。
在服务器端,我g4dn.xlarge
使用下面的 python 代码处理了 AWS 实例中的流;
GSTREAMER_OUT = ' ! '.join([
'appsrc',
'clockoverlay halignment=right valignment=top font-desc="Sans bold 60px"',
'videoconvert',
'video/x-raw,format=YV12',
'x264enc byte-stream=true noise-reduction=10000 speed-preset=ultrafast tune=zerolatency ',
'video/x-h264,stream-format=avc,alignment=au,profile=baseline',
' '.join([
'kvssink',
f'stream-name=test-outstream',
'storage-size=512',
f'access-key={access_key}',
f'secret-key={secret_key}',
'aws-region=ap-northeast-1',
'framerate=1',
]),
])
cap = cv2.VideoCapture(hls_stream_url)
out = cv2.VideoWriter(GSTREAMER_OUT, cv2.CAP_GSTREAMER, 0, target_fps, (frame_width, frame_height), True)
while True:
ret, frame = cap.read()
result = some_image_process(frame, gpu=true/false)
out.write(result)
some_image_process
设置标志时花了 0.04 秒,gpu
设置标志时True
花了 0.8 秒。gpu
False
Kinesis 视频流管理控制台 ( test-outstream
) 中生成的视频如下;
- 使用 GPU:https ://youtu.be/D-HZtXb55gk
- 没有 GPU:https ://youtu.be/iwdk2fujaOE
使用 GPU 的延迟约为 40 秒,没有 GPU 的延迟约为 25 秒。奇怪的是CPU处理速度更快。这可能是因为使用 GPU 时调用cap.read()
过多。错误消息Could not read complete segment.
说明了这一点。
我想让这个管道近乎实时地工作。是否有可能使这条管道更快?
我正在尝试使用 NVIDIA deepstreamer 减少编码/解码时间。还有其他选择吗?我阅读了 AWS 的常见问题解答。Q: How do I think about latency in Amazon Kinesis Video Streams?
https://aws.amazon.com/kinesis/video-streams/faqs/?nc1=h_ls
还是应该将 KVS 流拆分为如下图所示的图像?
https://speakerdeck.com/toshitanian/amazon-kinesis-video-streams-x-deep-learning?slide=23