bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.55k stars 1.58k forks source link

grabber.start() throw exception #1957

Closed issacchow closed 1 year ago

issacchow commented 1 year ago

I'm trying to grab a rtsp stream ,but i get the following exception:

org.bytedeco.javacv.FFmpegFrameGrabber$Exception: avcodec_open2() error -78: Could not open audio codec. (For more details, make sure FFmpegLogCallback.set() has been called.)
    at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:1110)
    at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:903)
    at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:898)
    at xxxxx.JavacvRecordTest.frameRecord(JavacvRecordTest.java:33)
    at xxxxx.JavacvRecordTest.main(JavacvRecordTest.java:91)
15:54:38.622 [main] WARN org.bytedeco.javacv.FFmpegLogCallback - [aac @ 0x7f9012085000] Audio object type 0
15:54:38.623 [main] WARN org.bytedeco.javacv.FFmpegLogCallback -  is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.

what's meanning by "Audio Object type 0" ?

code:

       ...

       System.setProperty("org.bytedeco.javacpp.logger", "slf4j");
        System.setProperty("org.bytedeco.javacpp.logger.debug", "true");
        FFmpegLogCallback.setLevel(AV_LOG_DEBUG);
        FFmpegLogCallback.set();
        FFmpegFrameGrabber.tryLoad();

        boolean isStart = true;

        FFmpegFrameGrabber grabber =  FFmpegFrameGrabber.createDefault(inputFile);
        grabber.setFormat("rtsp");
        grabber.setOption("rtsp_transport", "tcp");
        grabber.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
        grabber.start();

        ...

maven dependency:

                 <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>ffmpeg-platform</artifactId>
            <version>5.1.2-1.5.8</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.5.8</version>
        </dependency>
        <!-- Optional GPL builds with (almost) everything enabled -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>ffmpeg-platform-gpl</artifactId>
            <version>5.1.2-1.5.8</version>
        </dependency>
saudet commented 1 year ago

That just sounds like your input file is corrupted.

issacchow commented 1 year ago

Thanks saudet~