aws / amazon-kinesis-video-streams-parser-library

Amazon Kinesis Video Streams parser library is for developers to include in their applications that makes it easy to work with the output of video streams such as retrieving frame-level objects, metadata for fragments, and more.
Apache License 2.0
103 stars 52 forks source link

Video parser issue duirng fragment #128

Closed karen-hikesupport closed 1 year ago

karen-hikesupport commented 2 years ago

I have installed kinesis producer sdk and run live camera stream with kinesis using gstream command, also pass the fragment to sagemaker for analytics using your library, but when i run some of camera stream its stucked over ContinuousGetMediaWorker worked going sleeping mode.... in every thread.

when below worked run its saying exceltpin via this catch (Throwable t)

I have no idea why this happening

while (!shouldStop.get()) { GetMediaResult getMediaResult = null; try {

            StartSelector selectorToUse = fragmentNumberToStartAfter.map(fn -> new StartSelector().withStartSelectorType(StartSelectorType.FRAGMENT_NUMBER)
                    .withAfterFragmentNumber(fn)).orElse(startSelector);

            getMediaResult = videoMedia.getMedia(new GetMediaRequest().withStreamName(streamName).withStartSelector(selectorToUse));
            log.info("Start processing GetMedia called for stream {} response {} requestId {}",
                    streamName,
                    getMediaResult.getSdkHttpMetadata().getHttpStatusCode(),
                    getMediaResult.getSdkResponseMetadata().getRequestId());

            if (getMediaResult.getSdkHttpMetadata().getHttpStatusCode() == HTTP_STATUS_OK) {
                try (GetMediaResponseStreamConsumer consumer = consumerFactory.createConsumer()) {
                    consumer.process(getMediaResult.getPayload(), this::updateFragmentNumberToStartAfter);
                }
            } else {
                Thread.sleep(200);
            }
        } catch (FrameProcessException e) {
            log.error("FrameProcessException in ContinuousGetMedia worker for stream: " + streamName, e);
            break;
        } catch (IOException | MkvElementVisitException e) {
            log.error("Failure in ContinuousGetMedia worker for stream: " + streamName, e);
        } catch (InterruptedException ie) {
            Thread.currentThread().interrupt();
            throw new RuntimeException(ie);
        } catch (Throwable t) {
            log.error("Throwable",t);
        } finally {
            closeGetMediaResponse(getMediaResult);
            log.info("Exit processing GetMedia called for stream {}", streamName);
        }
karen-hikesupport commented 2 years ago

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/Hike/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.8.2/log4j-slf4j-impl-2.8.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/Hike/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] This is the logs of error

ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console... log4j:WARN No such property [immediateFlush] in com.amazonaws.services.lambda.runtime.log4j.LambdaAppender. log4j:ERROR Could not find value for key log4j.appender.CONSOLE log4j:ERROR Could not instantiate appender named "CONSOLE". ERROR GetMediaWorker Failure in GetMediaWorker for streamName superfast java.lang.AssertionError