如何解决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 举报,一经查实,本站将立刻删除。