微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

gstreamer playbin3 到 kinesis 管道:音频流丢失

如何解决gstreamer playbin3 到 kinesis 管道:音频流丢失

首先,非常感谢 gstreamer 社区提供的优秀软件。

我正在尝试使用 gstreamer 来使用 DASH/HLS/MSSS 流(使用 playbin3)并重新流式传输到 AWS Kinesis 视频:

gst-launch-1.0 -v -e \
playbin3 uri=https://dash.akamaized.net/dash264/TestCasesUHD/2b/2/MultiRate.mpd \
video-sink="videoconvert ! x264enc bframes=0 key-int-max=45 bitrate=2048 ! queue ! kvssink name=kvss stream-name=\"test_stream\" access-key=${AWS_ACCESS_KEY_ID} secret-key=${AWS_SECRET_ACCESS_KEY}" \
audio-sink="audioconvert ! audioresample ! avenc_aac ! kvss."

经过大量实验后,我决定不使用 uridecodebin3,因为它不能完全处理传入的流。

上述命令会在 KVS 上生成视频流,但缺少音频。我尝试将 kvssink 移出视频接收器管道并在两者中以 kvss. 的身份访问它,但无法链接

我可以为音频和视频创建单独的 kvs 流,但更希望将它们混合。

有谁知道这是否可能?我对此持开放态度。

解决方法

已解决 只是在这里发帖,以防其他人遇到这个问题。 我已经使用 streamlink 通过 http 本地重新流式传输:

streamlink <streamUrl> best --player-external-http --player-external-http-port <httpport>

然后使用 gstreamer 的 java JNI 绑定来运行这个管道:

kvssink name=kvs stream-name=<streamname> access-key=<awskey> secret-key=<awssecret> aws-region=<awsregion> uridecodebin3 uri=http://localhost:<port> name=d d. ! queue2 ! videoconvert ! videorate ! x264enc bframes=0 key-int-max=45 bitrate=2048 tune=zerolatency ! queue2 ! kvs. d. ! queue2 ! audioconvert ! audioresample ! avenc_aac ! queue2 ! kvs.

我需要使用 java 在缓冲中断时暂停和重新启动流,以免中断流。

以 kvs 格式到达的文件带有音频。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。