[globo.com] live streaming only works for 5min

Issue #23 resolved
Vitor Hirota repo owner created an issue

Seems like an authorization problem, during streaming.

DEBUG: ffmpeg[F501000]: [http] Invalid cookie found, no value, path or domain specified
DEBUG: ffmpeg[F501000]: [http] HTTP error 403 Forbidden

Comments (66)

  1. Lucas Andrade

    Vitor, notei que é necessário pegar um novo hash, entretanto não sei como fazer isso, pois não entendo muito bem da estrutura de addon. Notei que o addon apenas manda rodar o arquivo m3u8. Aparentemente, deveria buscar um novo m3u8 com o novo hash. Ideias?

  2. Vitor Hirota reporter

    Lucas, meu entendimento bem precário do processo é o seguinte: os canais live funcionam via HTTP live streaming, e fornecem esse arquivo m3u8 de 'playlist'. O kodi processa essa playlist e entende onde deve ir buscar os pedaços de vídeos a serem tocados. O problema, pelo que percebi, é que cada pedaço precisaria conter um hash, só que até onde tinha pesquisado, o decoder (ffmpeg, se não me engano) é que gerencia esses pedaços (quando e como fazer o download), e portanto não há nada a ser feito via kodi, mais alto nível.

    Eu lembro de ter visto algo no fórum, alguém sugerindo alguns parametros específicos, mas em meus testes não funcionaram. Se encontrar as anotações, incluo aqui para referencia.

    Infelizmente pelo próximo mês, ainda estarei sem tempo, mas se vc encontrar alguma outra coisa, podemos discutir por aqui.

  3. Jorge Birck

    E ai pessoal , espero que vocês encontrem uma solução o quanto antes, esse addon traz alegria aqui para nossa casa.

    Obrigado !!

  4. Jorge Birck

    Talvez repetir o mesmo request do start do vídeo depois de algum tempo ?! Se puderem resolver isso eu dou uma ajuda financeira.

    Obrigado !

  5. Lucas Andrade

    Jorge, não é tão simples. A estrutura do addon é passar ao Kodi uma playlist, e o ffmpeg por dentro do kodi faz a mágica. Acontece que após 5min, os servidores passam a dizer que não está autorizado, sendo assim, precisamos renovar a autorização de alguma forma (ainda não sei como renovar essa autorização).

  6. Lucas Andrade

    Passar o cookie conforme sugestão não resolveu, entretanto posso aproveitar o link para criar uma funcionalidade de escolha de bitrate para #28. Acho que para não ter o erro 403, preciso mandar um request para a página de ping. Vou ver se testo isso essa noite.

  7. Lucas Andrade

    Acho que descobri o problema, mas não sei como resolvê-lo. Em um determinado momento, o request do arquivo playlist.m3u8 (correspondente a um bitrate) retorna com um setcookie. E as demais requisições do ffmpeg não está com o novo cookie, causando o erro 403. Alguém tem alguma ideia?

  8. Lucas Andrade

    Tentando explicar melhor, segue um dump do HTTP de exemplo

    GET /dvr/m/off24ha/off24ha_2564/playlist.m3u8 HTTP/1.1
    User-Agent: Kodi/14.1 (Windows NT 10.0; WOW64) App_Bitness/32 Version/14.1-Git:20150129-38e4046
    Accept: */*
    Connection: close
    Host: live.hls.globo.com
    Cookie: locksession=8171fe6881c99d4d95b53cd0dcf3acd9; vssession=cR_S3dMoZipzPbX8eNy0Qw14404658790059058404/dvr/m/off24ha/?0411440465697761939438414404691735864119652h6rN-AOOhXZcPlp2UCV8Fg|F|52dfc02cdd23810590000f57_605fd6ba-6320-4a5a-b10f-065e5363421d; locksession=8171fe6881c99d4d95b53cd0dcf3acd9
    Icy-MetaData: 1
    
    HTTP/1.1 200 OK
    Server: nginx
    Date: Tue, 25 Aug 2015 01:23:03 GMT
    Content-Type: application/vnd.apple.mpegurl
    Content-Length: 750
    Connection: close
    Set-Cookie: vssession=UPDcUGHKJXpc7LOg8kGzuQ14404660821688619614/dvr/m/off24ha/?0411440465697761939438414404691735864119652h6rN-AOOhXZcPlp2UCV8Fg|F|52dfc02cdd23810590000f57_605fd6ba-6320-4a5a-b10f-065e5363421d; Expires=Tue, 25 Aug 2015 01:28:02 GMT; Path=/dvr/m/off24ha/;
    Vary: Accept-Encoding
    Expires: Tue, 25 Aug 2015 01:23:05 GMT
    Cache-Control: private, max-age=0, no-cache
    Set-Cookie: locksession=8171fe6881c99d4d95b53cd0dcf3acd9; Path=/; Max-Age=300
    
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:5
    #EXT-X-MEDIA-SEQUENCE:171228
    #EXTINF:5.0000,
    off24ha_2564-1440465725-148687275600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465730-148687725600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465735-148688175600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465740-148688625600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465745-148689075600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465750-148689525600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465755-148689975600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465760-148690425600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465765-148690875600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465770-148691325600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465775-148691775600.ts
    #EXTINF:5.0000,
    off24ha_2564-1440465780-148692225600.ts
    
    GET /dvr/m/off24ha/off24ha_2564/off24ha_2564-1440465730-148687725600.ts HTTP/1.1
    User-Agent: Kodi/14.1 (Windows NT 10.0; WOW64) App_Bitness/32 Version/14.1-Git:20150129-38e4046
    Accept: */*
    Connection: close
    Host: live.hls.globo.com
    Cookie: locksession=8171fe6881c99d4d95b53cd0dcf3acd9; vssession=cR_S3dMoZipzPbX8eNy0Qw14404658790059058404/dvr/m/off24ha/?0411440465697761939438414404691735864119652h6rN-AOOhXZcPlp2UCV8Fg|F|52dfc02cdd23810590000f57_605fd6ba-6320-4a5a-b10f-065e5363421d; locksession=8171fe6881c99d4d95b53cd0dcf3acd9
    Icy-MetaData: 1
    
    HTTP/1.1 200 OK
    Server: nginx
    Date: Tue, 25 Aug 2015 01:23:03 GMT
    Content-Type: video/MP2T
    Content-Length: 1690308
    Connection: close
    Set-Cookie: vssession=Psd_ZJE9VB33-uVq-64xew14404660830665574113/dvr/m/off24ha/?0411440465697761939438414404691735864119652h6rN-AOOhXZcPlp2UCV8Fg|F|52dfc02cdd23810590000f57_605fd6ba-6320-4a5a-b10f-065e5363421d; Expires=Tue, 25 Aug 2015 01:28:03 GMT; Path=/dvr/m/off24ha/;
    Expires: Tue, 25 Aug 2015 01:23:02 GMT
    Cache-Control: no-cache
    
    GET /dvr/m/off24ha/off24ha_2564/off24ha_2564-1440465735-148688175600.ts HTTP/1.1
    User-Agent: Kodi/14.1 (Windows NT 10.0; WOW64) App_Bitness/32 Version/14.1-Git:20150129-38e4046
    Accept: */*
    Connection: close
    Host: live.hls.globo.com
    Cookie: locksession=8171fe6881c99d4d95b53cd0dcf3acd9; vssession=cR_S3dMoZipzPbX8eNy0Qw14404658790059058404/dvr/m/off24ha/?0411440465697761939438414404691735864119652h6rN-AOOhXZcPlp2UCV8Fg|F|52dfc02cdd23810590000f57_605fd6ba-6320-4a5a-b10f-065e5363421d; locksession=8171fe6881c99d4d95b53cd0dcf3acd9
    Icy-MetaData: 1
    
    HTTP/1.1 200 OK
    Server: nginx
    Date: Tue, 25 Aug 2015 01:23:08 GMT
    Content-Type: video/MP2T
    Content-Length: 1570740
    Connection: close
    Set-Cookie: vssession=DyJ7qHEcnvYHlzSindzYew14404660881076012996/dvr/m/off24ha/?0411440465697761939438414404691735864119652h6rN-AOOhXZcPlp2UCV8Fg|F|52dfc02cdd23810590000f57_605fd6ba-6320-4a5a-b10f-065e5363421d; Expires=Tue, 25 Aug 2015 01:28:08 GMT; Path=/dvr/m/off24ha/;
    Expires: Tue, 25 Aug 2015 01:23:07 GMT
    Cache-Control: no-cache
    

    Podemos ver que o cookie vssession não muda, sendo que ele deveria mudar a cada requisição.

  9. Lucas Andrade

    A correção do ffmpeg vai sair na próxima versão 2.8.2. Após o lançamento da versão 2.8.2, temos que esperar que o Kodi seja atualizado com a mesma versão.

  10. Wanilton Campos

    @"Lucas de Andrade", testei a solução e funciona, bastou gerar dll avformat, com os ajustes (fix) e posso adiantar que funciona, ocorre uma leve travadinha, como um reset, mas já não cai mais, dá para assistir ao vivo finalmente. Creio que com pequenos ajustes isto vai ficar perfeito, grato pela boa nova, logo mais passo o link da dll, e instruções de como sobrepor, estou usando Kodi Jarvis. Como Isengard usa codecs mais antigo, recomendável só usar no Kodi Jarvis mesmo.

    Link para download http://files.xbmcbrasil.net/Suporte/avformat-56.dll

    Aonde sobrepor se usar windows: C:\Program Files (x86)\Kodi\system\players\dvdplayer

    Espero que isto lhe ajude a testar e refinar.

    abraços

  11. Lucas Andrade

    Obrigado @waniltoncampos . Eu utilizo o Ubuntu e infelizmente sua dll não funciona para mim, mas vai funcionar para todos que utilizam o Windows. Obrigado por compilar o ffmpeg.

  12. Jorge Birck

    Depois que toquei um video on demand, funcionou normalmente. Sobrescrevi a DLL mas mesmo assim depois de 5 min o streaming falha. Jarvis Alpha 4. Acredito que somente sobrescrever esta DLL não é suficiente.

  13. Lucas Andrade

    @waniltoncampos , você pode me mandar o log dizendo se aparece o erro 403 no momento que a reprodução da aquela parada? Em tese, o problema do ffmpeg foi resolvido e agora pode ser algo na forma como o kodi utiliza o ffmpeg.

  14. Lucas Andrade

    @waniltoncampos, por algum motivo o problema não foi resolvido com a sua DLL. Acredito que o próprio Kodi esteja buscando novamente o download da playlist e por isso tem aquele gargalo. Você utilizou a branch release/2.8 para gerar a DLL?

  15. Wanilton Campos

    Só alterei o arquivo hls.c no pasta libavformat e não o branch todo, apenas o relacionado ao fix em si. Só para deixar claro antes da dll, caia aos 5 minutos, agora continua a transmissão, mas claramente ele recarrega a sequência. Até porque o time do kodi altera o código oficial do ffmpeg, com seus mods, então para evitar problemas, preferi editar apenas o arquivo em si, e não fiz copy and past, pois também da erro, editei linha a linha.

  16. Wanilton Campos

    VERSION=2.8.1-Jarvis-alpha4-HEVC

    https://github.com/xbmc/FFmpeg/tree/release/2.8-xbmc

    Versão é sempre alterada em

    https://github.com/xbmc/xbmc/tree/master/tools/depends/target/ffmpeg

    Changelog

    Entries are sorted chronologically from oldest to youngest within each release, releases are sorted from youngest to oldest.

    version 2.8.1: - swscale: fix ticket #4881 - doc: fix spelling errors - hls: only seek if there is an offset - asfdec: add more checks for size left in asf packet buffer - asfdec: alloc enough space for storing name in asf_read_metadata_obj - avcodec/pngdec: Check blend_op. - h264_mp4toannexb: fix pps offfset fault when there are more than one sps in avcc - avcodec/h264_mp4toannexb_bsf: Use av_freep() to free spspps_buf - avformat/avidec: Workaround broken initial frame - avformat/hls: fix some cases of HLS streams which require cookies - avcodec/pngdec: reset has_trns after every decode_frame_png() - lavf/img2dec: Fix memory leak - avcodec/mp3: fix skipping zeros - avformat/srtdec: make sure we probe a number - configure: check for ID3D11VideoContext - avformat/vobsub: compare correct packet stream IDs - avformat/srtdec: more lenient first line probing - avformat/srtdec: fix number check for the first character - avcodec/mips: build fix for MSA 64bit - avcodec/mips: build fix for MSA - avformat/httpauth: Add space after commas in HTTP/RTSP auth header - libavformat/hlsenc: Use of uninitialized memory unlinking old files - avcodec/x86/sbrdsp: Fix using uninitialized upper 32bit of noise - avcodec/ffv1dec: Fix off by 1 error in quant_table_count check - avcodec/ffv1dec: Explicitly check read_quant_table() return value - dnxhddata: correct weight tables - dnxhddec: decode and use interlace mb flag - swscale: fix ticket #4877 - avcodec/rangecoder: Check e - avcodec/ffv1: seperate slice_count from max_slice_count - swscale: fix ticket 4850 - cmdutils: Filter dst/srcw/h - avutil/log: fix zero length gnu_printf format string warning - lavf/webvttenc: Require webvtt file to contain exactly one WebVTT stream. - swscale/swscale: Fix "unused variable" warning - avcodec/mjpegdec: Fix decoding RGBA RCT LJPEG - MAINTAINERS: add 2.8, drop 2.2 - doc: mention libavcodec can decode Opus natively - hevc: properly handle no_rasl_output_flag when removing pictures from the DPB - avfilter/af_ladspa: process all channels for nb_handles > 1 - configure: add libsoxr to swresample's pkgconfig - lavc: Fix compilation with --disable-everything --enable-parser=mpeg4video.

  17. Victor Antunes

    onde alterar instruções do ffmpeg no Android? Existe somente o libavcodec.so e não existe avcodec-56.DLL

    Existe alguma forma de fazer funcionar TB no Android?

  18. Victor Antunes

    Lucas...saiu a Jarvis beta 2 com ffmpeg 2.8.2 mas o erro continua... Pelo menos o q tentei aqui foi em ambiente Android...VC acredita que somente na versão final irá funcionar? Não teria como implantar algo como um refresh assim que for desconectar após os 5 minutos? Já ajudaria bastante não ter de clicar para reconectar... Ou ate utilizar o que foi feito pelo wanilton e criar algo parecido tb p ambiente android? Desde já agradeço

  19. Jorge Birck

    Pessoal, quanto o refresh para reconectar, o que eu faço é ativar a repetição do vídeo na playlist. É só apertar para o lado esquerdo dentro do menu do addon e selecionar "Playlist Atual". Depois apertar para o lado esquerdo novamente e selecionar "Repetir: todas" . Essa opção fica salva, mas os canais ao vivo devem ser abertos a partir do próprio addon e não dos favoritos.

  20. Victor Antunes

    Obrigado pela ideia Jorge birck.....lucas andrade desculpe a ignorância, mas o ideal eh gerar no pastebin correto? Ainda to com dificuldades em gerar esse código.... Mas VC já conseguiu verificar se com a nova atualização do ffmpeg 2.8.2 no Jarvis beta 2 funcionou normal na sua máquina?

  21. Lucas Andrade
    • changed status to open

    A solução funciona na linha de comando do ffmpeg mas não funciona dentro do Kodi. Por algum motivo desconhecido o uso do método avformat_open_input pelo kodi não utiliza o mesmo caminho que a linha de comando do ffmpeg. A melhor forma de testar é garantir que existe o patch no ffmpeg e compilar o kodi exclusivamente para o teste, infelizmente não consigo fazer isso no momento. Assim vamos confirmar que a versão compilada do kodi realmente está com o patch no ffmpeg.

  22. Lucas Andrade

    Nem ideia de como resolver... Agora é outro problema... O ffmpeg foi corrigido, agora preciso saber como o kodi chama o ffmpeg e oq pode ser feito diferente.

  23. Lucas Andrade

    A única forma de workaround conhecida é configurando a playlist com ativação da repetição. Assim, quando cair o vídeo, o Kodi automaticamente tenta reproduzir o vídeo.

  24. Wanilton Campos

    Obrigado Lucas de Andrade, funcionando perfeitamente. Obrigado por este belo presente de natal.

  25. Wanilton Campos

    Lucas, notei algo que precisa de algum ajuste, funciona ok, dei um limpar dados na primeira vez que testei, mas se encerro e reabro o kodi, algo quebra, para voltar a ficar ok, tenho que limpar o cache em userdata, e ao reabrir o Kodi, tudo volta a funcionar ok novamente, sinal estável, sem problemas.

  26. Victor Antunes

    Não sei se o problema só acontece comigo, mas na maioria das vezes o canal começa a rodar e em seguida fica em câmera lenta e sem som...o que pode estar acontecendo? Estou rodando em ambiente Android...abraço

  27. Lucas Andrade

    Rafael, basta você atualizar seu kodi para a versão 16 b2

    Em Qua, 23 de dez de 2015 19:14, Rafael Melo Silva <

  28. Victor Antunes

    Consegui fazer funcionar no Android....a versão que funciona aqui é a nightly beta 5.... Windows TB 100%... Desde já agradeço a dedicação de Lucas de Andrade e Vítor hitita... Belo presente de natal...haha abraços

  29. Rafael Melo Silva

    Wanilton notei a mesma coisa, preciso limpar o cache em userdata p funcionar novamente no android, tenho amazon tv

  30. Rafael Melo Silva

    Na verdade toda vez que assisto um programa gravado e volto a assistir um canal ao vivo da erro nesse canal, tenho q fazer um clean userdata para que ele volte a funcionar Em 26/12/2015 19:25, "Rafael Melo Silva" rafasilv@gmail.com escreveu:

    [image: waniltoncampos] waniltoncampos commented on issue #23: [globo.com] live streaming only works for 5min https://bitbucket.org/vitorhirota/repository.brazilian.xbmc-addons/issues/23/globocom-live-streaming-only-works-for

    Lucas, notei algo que precisa de algum ajuste, funciona ok, dei um limpar dados, mas se encerro e reabro o kodi, algo quebra, para voltar a ficar ok, tenho que limpar o cache em userdata, e ao reabrir o Kodi, tudo volta a funcionar ok novamente. View this issue https://bitbucket.org/vitorhirota/repository.brazilian.xbmc-addons/issues/23/globocom-live-streaming-only-works-for or add a comment by replying to this email. Unwatch this issue https://bitbucket.org/api/1.0/repositories/vitorhirota/repository.brazilian.xbmc-addons/issue/23/unwatch/rafaelmelosilva3/d636269bd3e8d7034248cf5ae298019a4a6bd112/ to stop receiving email updates. [image: Bitbucket] https://bitbucket.org

  31. Victor Antunes

    Esta acontecendo problemas de carregando de buffer de instante em instante...extranho pq auí ate ontem a noite funciona normalmente....o que fazer? Ja tentei adicionar cache em advancedsettings e não resolveu no problema...estou tentando rodar em ambiente Android... Desde já agradeço

  32. Victor Antunes

    Lucas.... tentei fazer o procedimento que vc falou mas não resolveu.... o kodi fica desacelerando o video e perde o audio (como se rodasse em camera lenta).... em seguida acelera o video..... as vezes fica carregando e funciona por alguns segundos depois recarrega..... tentei tanto no windows quanto no android....

  33. Victor Antunes

    Lucas...pela manha tinha tentado o procedimento que VC informou lá no trabalho, que apesar dos 25 megas deve ter alguma restrição.... Ja em casa coloquei o limite de banda em 3 megas e consegui rodar bem...obrigado pela ajuda

  34. Lucas Andrade

    São dois motivos que podem ocasionar travamentos. Ou seu hardware não está conseguindo decodificar o vídeo ou a sua banda de internet é insuficiente. De qualquer forma, não é algo que o script pode resolver... Com relação ao hardware, talvez a equipe do ffmpeg consiga otimizar algo para rodar no hardware mais fraco.

  35. Bruno Briner

    Não acredito ser problema de banda de internet suficiente, mas o mais provável é alta latencia (ping). Mo meu caso a minha net é de 100 Mbps de download e 10 Mpbs de upload. Em quase todos os streamings consigo rodar liso, sem problemas em muitos casos até em 1080p, exceto a Globo. Ao ver o meu ping para os servidores da Globo.com vejo que ele é alto ao redor de 300 ms. O que parece é que a reação para encher o pequeno buffer é lenta e como o buffer é pequeno o video trava.

    Neste quesito para mim o Globo.tv estava dando de lavada no Globo.com. Inspirado nisto fiz algumas modificações para uso pessoal que coloquei aqui para avaliação (issue 87)

  36. PauloDapper

    Aqui ainda continua isso, engraçado é que no Kodi 16.1 roda perfeitamente, já no 17 só dura 5 min, alguém saberia informar o motivo?

  37. Log in to comment