【问题标题】:How to merge audio and video from different sources for kinesis video如何合并来自不同来源的音频和视频以制作 kinesis 视频
【发布时间】:2019-08-17 18:55:34
【问题描述】:

如何将不相关的音频放入任何生成的视频流中,以使它们在 gstreamer 中保持同步?

上下文:

我想将来自 icecast 的音频流式传输到 Kinesis Video 流中,然后使用 Amazon 的播放器进行查看。播放器只有在有视频和音频的情况下才能工作,所以我用 testvideosrc 生成视频。

视频和音频需要在时间戳方面保持同步,否则 Kinesis 接收器“kvssink”会引发错误。但是因为它们是两个独立的源,它们不在接收器中。

我正在使用 gst-launch-1.0 运行我的管道。

我的基本尝试是这样的:

gst-launch-1.0 -v \
    videotestsrc pattern=red ! video/x-raw,framerate=25/1 ! videoconvert ! x264enc ! h264parse ! video/x-h264,stream-format=avc,alignment=au !  \
    queue ! kvssink name=sink stream-name="NAME" access-key="KEY" secret-key="S_KEY" \
    uridecodebin uri=http://ice-the.musicradio.com/LBCLondon ! audioconvert ! voaacenc ! aacparse ! queue ! sink.

我收到的错误消息转换为: STATUS_MAX_FRAME_TIMESTAMP_DELTA_BETWEEN_TRACKS_EXCEEDED

这说明音频和视频时间戳相差太大,所以我想强制它们匹配,也许是通过丢弃视频时间戳?

【问题讨论】:

    标签: gstreamer amazon-kinesis gstreamer-1.0


    【解决方案1】:

    “同步”有不同的含义。让我们暂时忽略口型同步(音频和视频相互匹配)。

    在时间戳方面存在同步 - 例如它们在表示中是否带有相似的时间戳。并根据这些带有时间戳的样本何时实时同步实际到达接收器(延迟)。

    很难通过错误来判断接收器到底在抱怨哪个错误。

    也许首先尝试x264enc tune=zerolatency,因为如果没有该选项,编码器会产生两秒的延迟,这可能会导致某些要求出现问题。

    那么音频流也会有一些延迟。调整这两者以匹配可能并不容易。接收器实际上应该进行缓冲和同步。

    【讨论】:

    • >> 接收器实际上应该进行缓冲和同步。这可能是关键——也许这个特定的水槽做得不好。不过,它似乎可以容忍 60 帧(约 2 秒)的延迟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多