0

首先,非常感谢 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 流,但希望它们被混合。

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

4

1 回答 1

0

已解决只是发回这里以防其他人遇到此问题。我已经使用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 的文件包含音频。

于 2020-12-30T17:31:57.810 回答