0

Firstly, big thanks to the gstreamer community for your excellent software.

I'm trying to use gstreamer to consume a DASH/HLS/MSSS stream (using playbin3) and restream to AWS Kinesis video:

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."

After much experimentation I decided against using uridecodebin3 as it does not handle the incoming stream as completely.

The above command results in a video stream on KVS but the audio is missing. I tried moving the kvssink out of the video-sink pipeline and accessing it as kvss. in both but that fails to link.

I can create separate kvs streams for the audio and video but would prefer them to be muxed.

Does anyone know if this is even possible? I'm open to other stacks for this.

GruffT
  • 21
  • 2

1 Answers1

0

SOLVED Just posting back here in case anyone else comes accross this problem. I've got this working using streamlink to restream locally over http:

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

Then using the java JNI bindings for gstreamer to run this pipeline:

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.

I needed to use java to pause and restart the stream on buffering discontinuities so as not to break the stream.

Files arriving in kvs complete with audio.

GruffT
  • 21
  • 2