0

我创建了如下图所示的图像处理管道,并希望减少整个管道延迟;

我在 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) 中生成的视频如下;

https://youtu.be/hg13YG7vgHw

大约有 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 秒。gpuFalse

Kinesis 视频流管理控制台 ( test-outstream) 中生成的视频如下;

使用 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

4

0 回答 0