API de transmissão ao vivo do YouTube - o fluxo não está aparecendo no Youtube

Estou tentando transmitir vídeo da minha webcam para o YouTube usando o Xuggler e a API de transmissão ao vivo do YouTube. Consegui conectar-me ao YouTube e criar uma transmissão seguindo o exemplo fornecidoaqui.

Eu usei o Xuggler para codificar os vídeos e enviá-los ao YouTube usando o código abaixo. As etapas para codificação dos vídeos são tiradas de uma postagemaqui.

Não estou recebendo nenhum erro no meu console quando executo meu programa, mas o fluxo não está no ar no Youtube. Na sala de controle do Youtube Live, ele continua mostrando a mensagem "Não estamos recebendo dados do seu codificador. Verifique se ele está configurado corretamente na página Configurações de ingestão".

O que estou fazendo errado? Qualquer ajuda ou sugestões serão muito apreciadas ...

String url =  returnedStream.getCdn().getIngestionInfo().getIngestionAddress(); 
String fileName = returnedStream.getCdn().getIngestionInfo().getStreamName() ;

IContainer container = IContainer.make();
IContainerFormat containerFormat_live = IContainerFormat.make();
containerFormat_live.setOutputFormat("flv", url + "/"+ fileName, null);
container.setInputBufferLength(0);
int retVal = container.open(url + "/"+ fileName, IContainer.Type.WRITE, containerFormat_live);
if (retVal < 0) {
    System.err.println("Could not open output container for live stream");
    System.exit(1);
}

Dimension size = WebcamResolution.QVGA.getSize();

IStream stream = container.addNewStream(0);
IStreamCoder coder = stream.getStreamCoder();
ICodec codec = ICodec.findEncodingCodec(ICodec.ID.CODEC_ID_H264);
coder.setNumPicturesInGroupOfPictures(4);
coder.setCodec(codec);
coder.setBitRate(500000);
coder.setPixelType(IPixelFormat.Type.YUV420P);
coder.setHeight(size.height);
coder.setWidth(size.width);

System.out.println("[ENCODER] video size is " + size.width + "x" + size.height);
coder.setFlag(IStreamCoder.Flags.FLAG_QSCALE, true);
coder.setGlobalQuality(0);
IRational frameRate = IRational.make(24, 1);
coder.setFrameRate(frameRate);
coder.setTimeBase(IRational.make(frameRate.getDenominator(), frameRate.getNumerator()));

coder.open();
container.writeHeader();
long firstTimeStamp = System.currentTimeMillis();
long lastTimeStamp = -1;
int i = 0;
try {
    //Robot robot = new Robot();
    Webcam webcam = Webcam.getDefault();
    webcam.setViewSize(size);
    webcam.open(true);

    while (i < framesToEncode) {
        //long iterationStartTime = System.currentTimeMillis();
        long now = System.currentTimeMillis();
        //grab the screenshot
        BufferedImage image = webcam.getImage();
        //convert it for Xuggler
        BufferedImage currentScreenshot = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
        currentScreenshot.getGraphics().drawImage(image, 0, 0, null);
        //start the encoding process
        IPacket packet = IPacket.make();
        IConverter converter = ConverterFactory.createConverter(currentScreenshot, IPixelFormat.Type.YUV420P);
        long timeStamp = (now - firstTimeStamp) * 1000; 
        IVideoPicture outFrame = converter.toPicture(currentScreenshot, timeStamp);
        if (i == 0) {
            //make first frame keyframe
            outFrame.setKeyFrame(true);
        }
        outFrame.setQuality(0);
        coder.encodeVideo(packet, outFrame, 0);
        outFrame.delete();
        if (packet.isComplete()) {
            container.writePacket(packet);
            System.out.println("[ENCODER] writing packet of size " + packet.getSize() + " for elapsed time " + ((timeStamp - lastTimeStamp) / 1000));
            lastTimeStamp = timeStamp;
        }
        System.out.println("[ENCODER] encoded image " + i + " in " + (System.currentTimeMillis() - now));
        i++;
        try {
            Thread.sleep(Math.max((long) (1000 / frameRate.getDouble()) - (System.currentTimeMillis() - now), 0));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}

questionAnswers(0)

yourAnswerToTheQuestion