Отображение RTSP-потока с помощью Xuggler: org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 34 60, bytestream (td)

Я новичок в отображении RTSP-Streams и Xuggler, поэтому я действительно не знаю, что делать.

Я пытаюсь отобразить основной поток своей IP-камеры в окне Java-Swing и получаю следующее:

введите здесь описание изображения

Я тоже получаю такие ошибки:

Это часть кода, который я использую:

Отображение субпотока (с более низким разрешением) работает хорошо.

private IMediaListener mediaListener = new MediaListenerAdapter() {

    @Override
    public void onVideoPicture(IVideoPictureEvent event) {
        try {
            BufferedImage bi = event.getImage();
            if (bi != null)
                updateWindow(bi);
        } catch (Exception ex) {
            LOG.error("Error getting Image from IVideoPictureEvent: " + ex);
        }
    }
};

public DisplayWindow() {
    display();
}

private void display() {
    IMediaReader mediaReader = ToolFactory
            .makeReader("rtsp://user:[email protected]:554/Streaming/Channels/1");

    mediaReader
            .setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);
    mediaReader.setQueryMetaData(false);
    mediaReader.addListener(mediaListener);

    openWindow();

    while (true) {
        IError error = null;
        if(mediaReader != null){
            error = mediaReader.readPacket();
            if(error != null){
                LOG.error("Error at mediaReader.readPacket(): " + error);
            }
        }
    }
}

Я использую Xuggler 5.4 с Maven.

Вероятно, есть простое решение этой проблемы, но я обыскал весь Интернет и не нашел его, поэтому буду признателен за любую помощь. Спасибо!

ОБНОВЛЕНИЕ: я также был бы рад (бесплатно!) Альтернативам Xuggler.

Я исправил эту ошибку с помощью камеры HIKVision, принудительно установив TCP-транспорт. Чтобы принудительно использовать TCP, необходимо вручную создать IContainer и передать параметр в IMetaData:


person Wenonah    schedule 08.04.2016    source источник
comment
13: 21: 45.941 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 8 7, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 34 60, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 8 36, байтовый поток (td)
17:47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 68 62, bytestream (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 118 38, bytestream (td)
17: 47: 04.192 [main] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 60 62, bytestream (td)
17: 47: 04.192 [main] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] cabac-декодирование qscale diff не удалось на 1 7
13: 21: 46.940 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 1 7, bytestream (td )
17: 47: 04.192 [main] ERROR org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 28 37, bytestream (td)
17: 47: 04.192 [main] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 18 35, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 17 41, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 53 32, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 31 29, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 21 29, байтовый поток (td) < br> 17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] левый блок недоступен для запрошенного внутреннего режима в 0 35
13: 21: 49.902 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660 ] ошибка при декодировании MB 0 35, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 17 21, байтовый поток (td)
17:47 : 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 46 10, байтовый поток (td)
17: 47: 04.192 [основной] E RROR org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 109 28, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 60 10, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 11 14, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 101 9, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 76 9, байтовый поток (td) < br> 17:47:04. 192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 86 11, байтовый поток (td)
17: 47: 04.192 [основная] ОШИБКА org.ffmpeg - [h264 @ 15AC7660] ошибка при декодировании MB 60 24, байтовый поток (td)
  -  person Wenonah    schedule 13.04.2016


Ответы (1)


Возможно, я нашел решение: поместите mediaReader.readPacket () в новый поток. К сожалению, я не могу проверить это в банкомате.

    IMetaData im = IMetaData.make();
    im.setValue("rtsp_transport", "tcp");

    IContainer streamContainer = IContainer.make();        
    int result = streamContainer.open("rtsp://user:[email protected]:554/Streaming/Channels/1", IContainer.Type.READ, null, true, false, im, null);

    if (result < 0) {
        // Error
    }

    IMediaReader mediaReader = ToolFactory.makeReader(streamContainer);
person promagma    schedule 07.06.2017