awslabs / amazon-kinesis-video-streams-producer-sdk-cpp

Amazon Kinesis Video Streams Producer SDK for C++ is for developers to install and customize for their connected camera and other devices to securely stream video, audio, and time-encoded data to Kinesis Video Streams.
Apache License 2.0
379 stars 334 forks source link

[BUG] (gst-launch-1.0:76700): GStreamer-CRITICAL **: 19:42:05.924: gst_segment_to_running_time: assertion 'segment->format == format' failed #771

Closed openedhardware closed 3 years ago

openedhardware commented 3 years ago

SDK version number master branch

Platform (please complete the following information):

Issue: I am trying to stream from a shared memory source to kinesis:

ubuntu@ubuntu-desktop:$ gst-launch-1.0 shmsrc socket-path=/tmp/foo ! "video/x-raw,format=BGR,width=(int)320,height=(int)240,framerate=(fraction)30/1" \
! videoconvert ! x264enc bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline \
! kvssink stream-name="MyStream" storage-size=512 access-key="MyKey" secret-key="MySecret" aws-region="eu-central-1"

Setting pipeline to PAUSED ...
log4cplus:ERROR could not open file ./kvs_log_configuration
INFO - createKinesisVideoClient(): Creating Kinesis Video Client
2021-10-07 19:42:01 [139961217935168] INFO - heapInitialize(): Initializing native heap with limit size 536870912, spill ratio 0% and flags 0x00000001
2021-10-07 19:42:01 [139961217935168] INFO - heapInitialize(): Creating AIV heap.
2021-10-07 19:42:01 [139961217935168] INFO - heapInitialize(): Heap is initialized OK
2021-10-07 19:42:01 [139961217935168] DEBUG - stepStateMachine(): State Machine - Current state: 0x0000000000000001, Next state: 0x0000000000000002
2021-10-07 19:42:01 [139961217935168] DEBUG - getSecurityTokenHandler invoked
2021-10-07 19:42:01 [139961217935168] DEBUG - Refreshing credentials. Force refreshing: 0 Now time is: 1633599721806849677 Expiration: 0
2021-10-07 19:42:01 [139961217935168] DEBUG - stepStateMachine(): State Machine - Current state: 0x0000000000000002, Next state: 0x0000000000000010
2021-10-07 19:42:01 [139961217935168] INFO - createDeviceResultEvent(): Create device result event.
2021-10-07 19:42:01 [139961217935168] DEBUG - stepStateMachine(): State Machine - Current state: 0x0000000000000010, Next state: 0x0000000000000040
2021-10-07 19:42:01 [139961217935168] DEBUG - clientReadyHandler invoked
2021-10-07 19:42:01 [139961217935168] INFO - try creating stream
2021-10-07 19:42:01 [139961217935168] INFO - Creating Kinesis Video Stream ShaneTest
2021-10-07 19:42:01 [139961217935168] INFO - createKinesisVideoStream(): Creating Kinesis Video Stream.
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo(): Kinesis Video Stream Info
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Stream name: ShaneTest
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Streaming type: STREAMING_TYPE_REALTIME
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Content type: video/h264
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Max latency (100ns): 600000000
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Fragment duration (100ns): 20000000
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Key frame fragmentation: Yes
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Use frame timecode: Yes
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Absolute frame timecode: Yes
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Nal adaptation flags: 0
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Average bandwith (bps): 4194304
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Framerate: 25
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Buffer duration (100ns): 1200000000
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Replay duration (100ns): 400000000
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Connection Staleness duration (100ns): 600000000
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Store Pressure Policy: 1
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  View Overflow Policy: 1
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Segment UUID: NULL
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Frame ordering mode: 0
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo(): Track list
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Track id: 1
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Track name: kinesis_video
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Codec id: V_MPEG4/ISO/AVC
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Track type: TRACK_INFO_TYPE_VIDEO
2021-10-07 19:42:01 [139961217935168] DEBUG - logStreamInfo():  Track cpd: NULL
2021-10-07 19:42:01 [139961217935168] DEBUG - stepStateMachine(): State Machine - Current state: 0x0000000000000001, Next state: 0x0000000000000002
2021-10-07 19:42:01 [139961217935168] INFO - writeHeaderCallback(): RequestId: 99a6ed73-4ac3-4882-8390-a5c3ddc35c2a
2021-10-07 19:42:03 [139960630290176] DEBUG - describeStreamCurlHandler(): DescribeStream API response: {"StreamInfo":{"CreationTime":1.633337068567E9,"DataRetentionInHours":24,"DeviceName":null,"IngestionConfiguration":null,"KmsKeyId":"arn:aws:kms:eu-central-1:101399050792:alias/aws/kinesisvideo","MediaType":null,"Status":"ACTIVE","StreamARN":"arn:aws:kinesisvideo:eu-central-1:101399050792:stream/ShaneTest/1633337068567","StreamName":"ShaneTest","Version":"a8cgeKqrUjU3ByxgiWTr"}}
2021-10-07 19:42:03 [139960630290176] INFO - describeStreamResultEvent(): Describe stream result event.
2021-10-07 19:42:03 [139960630290176] WARN - describeStreamResult(): Retention period returned from the DescribeStream call doesn't match the one specified in the StreamInfo
2021-10-07 19:42:03 [139960630290176] WARN - describeStreamResult(): Content type returned from the DescribeStream call doesn't match the one specified in the StreamInfo
2021-10-07 19:42:03 [139960630290176] DEBUG - stepStateMachine(): State Machine - Current state: 0x0000000000000002, Next state: 0x0000000000000020
2021-10-07 19:42:03 [139960630290176] INFO - writeHeaderCallback(): RequestId: 5ec0908b-47ae-4e3c-b525-ff7dc8b0c533
2021-10-07 19:42:04 [139960621897472] DEBUG - getStreamingEndpointCurlHandler(): GetStreamingEndpoint API response: {"DataEndpoint":"https://s-96607c7a.kinesisvideo.eu-central-1.amazonaws.com"}
2021-10-07 19:42:04 [139960621897472] INFO - getStreamingEndpointResultEvent(): Get streaming endpoint result event.
2021-10-07 19:42:04 [139960621897472] DEBUG - stepStateMachine(): State Machine - Current state: 0x0000000000000020, Next state: 0x0000000000000010
2021-10-07 19:42:04 [139960621897472] DEBUG - getStreamingTokenHandler invoked
2021-10-07 19:42:04 [139960621897472] DEBUG - Refreshing credentials. Force refreshing: 1 Now time is: 1633599724340513632 Expiration: 18446744073709551615
2021-10-07 19:42:04 [139960621897472] INFO - getStreamingTokenResultEvent(): Get streaming token result event.
2021-10-07 19:42:04 [139960621897472] DEBUG - stepStateMachine(): State Machine - Current state: 0x0000000000000010, Next state: 0x0000000000000040
2021-10-07 19:42:04 [139960621897472] DEBUG - streamReadyHandler invoked
2021-10-07 19:42:04 [139960621897472] Stream is ready
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
0:00:02.566193655 76700 0x55c38771ab20 WARN                     bin gstbin.c:2786:gst_bin_do_latency_func:<pipeline0> did not really configure latency of 0:00:00.000000000
New clock: GstSystemClock
Redistribute latency...
0:00:02.592785648 76700 0x55c38771ab20 WARN                     bin gstbin.c:2786:gst_bin_do_latency_func:<pipeline0> did not really configure latency of 0:00:00.000000000
INFO - kinesisVideoStreamFormatChanged(): Stream format changed.
0:00:04.117926529 76700 0x55c387469aa0 WARN             collectpads gstcollectpads.c:1803:gst_collect_pads_event_default:<collectpads0> GstCollectPads default collecting can only handle time segments. Non time segment ignored.

(gst-launch-1.0:76700): GStreamer-CRITICAL **: 19:42:05.893: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:76700): GStreamer-CRITICAL **: 19:42:05.924: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:76700): GStreamer-CRITICAL **: 19:42:05.956: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:76700): GStreamer-CRITICAL **: 19:42:05.994: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:76700): GStreamer-CRITICAL **: 19:42:06.024: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:76700): GStreamer-CRITICAL **: 19:42:06.057: gst_segment_to_running_time: assertion 'segment->format == format' failed

(gst-launch-1.0:76700): GStreamer-CRITICAL **: 19:42:06.092: gst_segment_to_running_time: assertion 'segment->format == format' failed

Any idea why it says assertion 'segment->format == format' failed?

Note that I can preview the video stream on my local PC by following command:

gst-launch-1.0 shmsrc socket-path=/tmp/foo \
  ! "video/x-raw,format=BGR,width=(int)320,height=(int)240,framerate=(fraction)30/1" \
  ! queue ! videoconvert ! autovideosink

Thanks!

openedhardware commented 3 years ago

Added is-live=true do-timestamp=true to the shmsrc and now it's working!