Como baixar vídeo com URL de blob?

94

Estou tentando baixar vídeo com src url blob:https%3A//www.youtube.com/23aea5c8-9ae2-40dc-9417-e675ea99b386.

Existe um processo que pode ser seguido para baixar todo esse tipo de vídeo?

vinha
fonte
Se você quiser baixar vídeos do YouTube usar extenstions como Video DownloadHelper (Firefox)
Ganesh R.
Eu quero baixar do vimeo url.
Vinesh
Vinesh, tente navegar para o site vimeo e comece a reproduzir o vídeo que você deseja baixar. O Video DownloadHelper irá detectá-lo e oferecer uma opção para fazer o download. Eu tentei.
Ganesh R.
Sem sorte. quando comecei a reproduzir o vídeo, vi várias sugestões de vídeos da extensão que você mencionou, cada uma com cerca de 2 MB. quando baixei uma parte, não consegui reproduzir esse arquivo pequeno. Eu estava recebendo erro nesse arquivo está corrompido.
Vinesh #
colocar o link nos comentários
Ganesh R.

Respostas:

69

Eu encontrei uma maneira de baixar o vídeo com blob urlno Vimeo(lendo aqui eu entendi como fazê-lo). Eu escrevo os passos simples aqui. Estou usando o Google Chrome:

  1. Abra o More ToolsDeveloper Tools
  2. Verifique se na tag do vídeo há algo parecido com isto:

    <video preload="" src="blob:https://player.vimeo.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"></video>
    
  3. Copie o src da tag iframe, se houver, algo como, http://player.vimeo.com/video/XYZse você a encontrou, pode ir direto ao ponto 7; caso contrário, siga as etapas 4, 5, 6.
  4. Agora, procure essa sequência https://skyfire.vimeocdn.com/.../master.json?base64_init=1dentro da página (usando a Visualização do desenvolvedor), você deve encontrá-la em uma função javascript, como esta:

    (function(e,a){var t={"cdn_url":"https://f.vimeocdn.com","view":1,"request":{"files":{"dash":{"origin":"gcs","url":"https://48skyfiregce-a.akamaihd.net/.../master.json?base64_init=1","cdn":"
    
  5. Copie o link dentro do campo de URL em uma nova guia do Chrome. Por exemplo, https://48skyfiregce-a.akamaihd.net/.../master.json?base64_init=1abra-o com um navegador, ele abrirá um arquivo json como este:

    {
        "clip_id": XYZ,
        "base_url": "../",
        "video": [
                     { ... ... ...
    
  6. Agora componha um URL com seu ID XYZassim:https://player.vimeo.com/video/XYZ

  7. Substitua blob:https://player.vimeo.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXdentro da tag de vídeo pelo último URL (aquele criado na etapa anterior # 6).
  8. Agora você notará que magicamente o campo src dentro da tag de vídeo mudou (se não, tente a etapa 7 várias vezes) ...

    <video preload="none" src="https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/XX/XXX/X/XXXXXXXX/XXXXXXXXX.mp4?token=abcdefg"></video>
    
  9. Use esse novo link para descarregá-lo diretamente, é algo como: https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/XX/XXX/X/XXXXXXXX/XXXXXXXXX.mp4?token=abcdefg

madx
fonte
7
Impressionante. Como você descobriu isso?
gronostaj
1
Na etapa 7, o que você quer dizer com "esse último URL dentro do html"?
Joaorodr84
6
Funciona perfeitamente, mas o truque é que algumas vezes você precisa substituir o valor "src" várias vezes para gerar o link de download.
Ashrith
19
Atualmente, para o Vimeo, é muito mais fácil e não requer todas as etapas. Basta abrir um vídeo do Vimeo, encontrar a <video>tag na estrutura DOM das ferramentas de desenvolvimento e alterar o srcatributo de blob:...para x. Nada vai acontecer - tudo bem. Agora mude novamente, para y. Chrome irá convertê-lo 'magicamente' à URL como na etapa 8 ou 9. :-)
Stane
3
@StanE ele funciona como um encanto, no Firefox também, e é definitivamente mais rápido ...
ling
10

Esta resposta é para URLs do Twitter -

  1. Clique com o botão direito do mouse no vídeo e clique em Inspecionar elementos -

Você encontrará um código como este

<div id="playerContainer" class="player-container full-screen-enabled" data-config="{&quot;is_360&quot;:false,&quot;duration&quot;:28617,&quot;scribe_widget_origin&quot;:true,&quot;heartbeatEnabled&quot;:true,&quot;video_url&quot;:&quot;https:\/\/video.twimg.com\/ext_tw_video\/844504104512749568\/pu\/pl\/e91Du5N2TZ09ZaW_.m3u8&quot;,&quot;disable_embed&quot;:&quot;0&quot;,&quot;videoInfo&quot;:{&quot;title&quot;:null,&quot;description&quot;:null,&quot;publisher&quot;:{&quot;screen_name&quot;:&quot;MountainButorac&quot;,&quot;name&quot;:&quot;Mountain Butorac&quot;,&quot;profile_image_url&quot;:&quot;https:\/\/pbs.twimg.com\/profile_images\/808318456701521920\/vBvlAASx_normal.jpg&quot;}},&quot;cardUrl&quot;:&quot;https:\/\/t.co\/SdSorop3uN&quot;,&quot;content_type&quot;:&quot;application\/x-mpegURL&quot;,&quot;owner_id&quot;:&quot;14120461&quot;,&quot;looping_enabled&quot;:true,&quot;show_cookie_override_en&quot;:true,&quot;visit_cta_url&quot;:null,&quot;scribe_playlist_url&quot;:&quot;https:\/\/twitter.com\/MountainButorac\/status\/844505243538931714\/video\/1&quot;,&quot;source_type&quot;:&quot;consumer&quot;,&quot;image_src&quot;:&quot;https:\/\/pbs.twimg.com\/ext_tw_video_thumb\/844504104512749568\/pu\/img\/FFt3qkbeOh0RlGfZ.jpg&quot;,&quot;heartbeatIntervalInMs&quot;:5000.0,&quot;use_tfw_live_heartbeat_event_category&quot;:true,&quot;video_loading_timeout&quot;:45000.0,&quot;status&quot;:{&quot;created_at&quot;:&quot;Wed Mar 22 11:05:14 +0000 2017&quot;,&quot;id&quot;:844505243538931714,&quot;id_str&quot;:&quot;844505243538931714&quot;,&quot;text&quot;:&quot;Took my Goddaughter to meet the pope. She stole his hat! https:\/\/t.co\/SdSorop3uN&quot;,&quot;truncated&quot;:false,&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;symbols&quot;:[],&quot;user_mentions&quot;:[],&quot;urls&quot;:[],&quot;media&quot;:[{&quot;id&quot;:844504104512749568,&quot;id_str&quot;:&quot;844504104512749568&quot;,&quot;indices&quot;:[57,80],&quot;media_url&quot;:&quot;http:\/\/pbs.twimg.com\/ext_tw_video_thumb\/844504104512749568\/pu\/img\/FFt3qkbeOh0RlGfZ.jpg&quot;,&quot;media_url_https&quot;:&quot;https:\/\/pbs.twimg.com\/ext_tw_video_thumb\/844504104512749568\/pu\/img\/FFt3qkbeOh0RlGfZ.jpg&quot;,&quot;url&quot;:&quot;https:\/\/t.co\/SdSorop3uN&quot;,&quot;display_url&quot;:&quot;pic.twitter.com\/SdSorop3uN&quot;,&quot;expanded_url&quot;:&quot;https:\/\/twitter.com\/MountainButorac\/status\/844505243538931714\/video\/1&quot;,&quot;type&quot;:&quot;photo&quot;,&quot;sizes&quot;:{&quot;small&quot;:{&quot;w&quot;:340,&quot;h&quot;:604,&quot;resize&quot;:&quot;fit&quot;},&quot;thumb&quot;:{&quot;w&quot;:150,&quot;h&quot;:150,&quot;resize&quot;:&quot;crop&quot;},&quot;large&quot;:{&quot;w&quot;:576,&quot;h&quot;:1024,&quot;resize&quot;:&quot;fit&quot;},&quot;medium&quot;:{&quot;w&quot;:576,&quot;h&quot;:1024,&quot;resize&quot;:&quot;fit&quot;}}}]},&quot;source&quot;:&quot;\u003ca href=\&quot;http:\/\/twitter.com\/download\/iphone\&quot; rel=\&quot;nofollow\&quot;\u003eTwitter for iPhone\u003c\/a\u003e&quot;,&quot;in_reply_to_status_id&quot;:null,&quot;in_reply_to_status_id_str&quot;:null,&quot;in_reply_to_user_id&quot;:null,&quot;in_reply_to_user_id_str&quot;:null,&quot;in_reply_to_screen_name&quot;:null,&quot;geo&quot;:null,&quot;coordinates&quot;:null,&quot;place&quot;:null,&quot;contributors&quot;:null,&quot;retweet_count&quot;:0,&quot;favorite_count&quot;:0,&quot;favorited&quot;:false,&quot;retweeted&quot;:false,&quot;possibly_sensitive&quot;:false,&quot;lang&quot;:&quot;en&quot;},&quot;show_cookie_override_all&quot;:true,&quot;video_session_enabled&quot;:false,&quot;media_id&quot;:&quot;844504104512749568&quot;,&quot;view_counts&quot;:null,&quot;statusTimestamp&quot;:{&quot;local&quot;:&quot;4:05 AM - 22 Mar 2017&quot;},&quot;media_type&quot;:1,&quot;user&quot;:{&quot;screen_name&quot;:&quot;MountainButorac&quot;,&quot;name&quot;:&quot;Mountain Butorac&quot;,&quot;profile_image_url&quot;:&quot;https:\/\/pbs.twimg.com\/profile_images\/808318456701521920\/vBvlAASx_bigger.jpg&quot;},&quot;watch_now_cta_url&quot;:null,&quot;tweet_id&quot;:&quot;844505243538931714&quot;}" data-source-type="consumer">

Copie e cole o código acima no bloco de notas ++. Substitua todos os &quot;com "e \/wth /no bloco de notas ++. (Use CTRL + H)

Você terá algo como

{
    "is_360": false,
    "duration": 28617,
    "scribe_widget_origin": true,
    "heartbeatEnabled": true,
    "video_url": "https://video.twimg.com/ext_tw_video/844504104512749568/pu/pl/e91Du5N2TZ09ZaW_.m3u8",

    "disable_embed": "0",
    "videoInfo": {
        "title": null,
        "description": null,
        "publisher": {
            "screen_name": "MountainButorac",
            "name": "Mountain Butorac",
            "profile_image_url": "https://pbs.twimg.com/profile_images/808318456701521920/vBvlAASx_normal.jpg"
        }
    },
    "cardUrl": "https://t.co/SdSorop3uN",
    "content_type": "application/x-mpegURL",
    "owner_id": "14120461",
    "looping_enabled": true,
    "show_cookie_override_en": true,
    "visit_cta_url": null,
    "scribe_playlist_url": "https://twitter.com/MountainButorac/status/844505243538931714/video/1",
    "source_type": "consumer",
    "image_src": "https://pbs.twimg.com/ext_tw_video_thumb/844504104512749568/pu/img/FFt3qkbeOh0RlGfZ.jpg",
    "heartbeatIntervalInMs": 5000.0,
    "use_tfw_live_heartbeat_event_category": true,
    "video_loading_timeout": 45000.0,
    "status": {
        "created_at": "Wed Mar 22 11:05:14 +0000 2017",
        "id": 844505243538931714,
        "id_str": "844505243538931714",
        "text": "Took my Goddaughter to meet the pope. She stole his hat! https://t.co/SdSorop3uN",
        "truncated": false,
        "entities": {
            "hashtags": [],
            "symbols": [],
            "user_mentions": [],
            "urls": [],
            "media": [{
                "id": 844504104512749568,
                "id_str": "844504104512749568",
                "indices": [57, 80],
                "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/844504104512749568/pu/img/FFt3qkbeOh0RlGfZ.jpg",
                "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/844504104512749568/pu/img/FFt3qkbeOh0RlGfZ.jpg",
                "url": "https://t.co/SdSorop3uN",
                "display_url": "pic.twitter.com/SdSorop3uN",
                "expanded_url": "https://twitter.com/MountainButorac/status/844505243538931714/video/1",
                "type": "photo",
                "sizes": {
                    "small": {
                        "w": 340,
                        "h": 604,
                        "resize": "fit"
                    },
                    "thumb": {
                        "w": 150,
                        "h": 150,
                        "resize": "crop"
                    },
                    "large": {
                        "w": 576,
                        "h": 1024,
                        "resize": "fit"
                    },
                    "medium": {
                        "w": 576,
                        "h": 1024,
                        "resize": "fit"
                    }
                }
            }]
        },
        "source": "\u003ca href=\"http://twitter.com/download/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c/a\u003e",
        "in_reply_to_status_id": null,
        "in_reply_to_status_id_str": null,
        "in_reply_to_user_id": null,
        "in_reply_to_user_id_str": null,
        "in_reply_to_screen_name": null,
        "geo": null,
        "coordinates": null,
        "place": null,
        "contributors": null,
        "retweet_count": 0,
        "favorite_count": 0,
        "favorited": false,
        "retweeted": false,
        "possibly_sensitive": false,
        "lang": "en"
    },
    "show_cookie_override_all": true,
    "video_session_enabled": false,
    "media_id": "844504104512749568",
    "view_counts": null,
    "statusTimestamp": {
        "local": "4:05 AM - 22 Mar 2017"
    },
    "media_type": 1,
    "user": {
        "screen_name": "MountainButorac",
        "name": "Mountain Butorac",
        "profile_image_url": "https://pbs.twimg.com/profile_images/808318456701521920/vBvlAASx_bigger.jpg"
    },
    "watch_now_cta_url": null,
    "tweet_id": "844505243538931714"
}

Acima do formato JSON, consulte o valor video_url

https://video.twimg.com/ext_tw_video/844504104512749568/pu/pl/e91Du5N2TZ09ZaW_.m3u8

O problema aqui é que, após 1º de agosto de 2016, o Twitter não usa mais vídeos .mp4, mas está convertendo para um novo HLS, formato de streaming adaptável, com uma extensão de arquivo .m3u8 .

Os arquivos .m3u8 são basicamente apenas um invólucro de arquivo de texto, são super pequenos (300-500 bytes) e, quando você os abre com um editor de texto, contêm links para diferentes tamanhos de vídeo

  1. Abra o arquivo m3u8 no bloco de notas ++, ele conteria código como este

EXTM3U SEGMENTOS EXT-X-INDEPENDENTES EXT-X-STREAM-INF: ID DO PROGRAMA = 1, LARGURA DE BANDA = 256000, RESOLUÇÃO = 180x320, CODECS = "mp4a.40.2, avc1.42001f" / ext_tw_video / 844504104512749568 / pu / 180x320 / _Z42SY5zwMlLdFYx.m3u8 EXT-X-STREAM-INF: ID DO PROGRAMA = 1, LARGURA DE BANDA = 832000, RESOLUÇÃO = 360x640, CODECS = "mp4a.40.2, avc1.42001f" / ext_tw_video / 84450510x pu Phfjbbx2yinirLi.m3u8

  1. Copie o respectivo link de cima, conforme sua necessidade de resolução. Repita a mesma etapa até ter o arquivo .ts . Faça o download do arquivo .ts (o arquivo de vídeo).
Pirata X
fonte
Como assim, "você terá algo parecido" - de onde?
Utilizador
@ Usuário do código acima, que começa como<div id="playerContainer"
Pirate X
3
Ei, na etapa 4, o que você quer dizer com "copiar o respectivo link"? Não é um URL válido e não consigo encontrar como obter o vídeo. EDIT: OK, certo, eu encontrei. Você deve mencionar que deve colocar " video.twimg.com " antes dele e acessar o URL.
precisa
Se você não encontrar o id="playerContainer"elemento, procure og:video:urle abra o URL no conteúdo e inspecione a origem dele.
precisa saber é
Outra maneira de fazer isso no twitter é executar document.querySelector('video').srcna guia do console das ferramentas de desenvolvedor do navegador.
Farzad YZ
8
<video src="blob:https://www.example.tv/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
  <source src="https://cdn.example.tv/api/media/tv/xyzxyz/index" type="application/x-mpegurl">
</video>

Eu também tinha blob:URL video/@src, mas ao assistir Developer tools> Networkdurante a reprodução, descobri que video/source/@srcera o URL da m3u8playlist.

Um m3u8vídeo com cópia de segurança pode ser facilmente baixado por:

  • ffplay -i "https://cdn.example.tv/api/media/tv/xyzxyz/1080/index.m3u8"
  • ffmpeg -i "https://cdn.example.tv/api/media/tv/xyzxyz/1080/index.m3u8" -codec copy file.mkv

O URL tl; dr - blob soa como o binário que você deseja obter, mas pode haver uma maneira mais fácil de obter o vídeo. Basta verificar a guia Rede nas ferramentas de desenvolvimento enquanto você reproduz o vídeo para ver o que está realmente buscando.

Vlastimil Ovčáčík
fonte
1
Funciona na minha máquina! E você pode fornecer vários tipos de entradas de fluxo com -i <URL> -i <URL> -i <URL>a fundir vídeo, áudio e legendas todos em uma saída :)
mcandre
@ Mcandre Sim, essa é uma boa dica. Você também pode encontrar o m3u8 metalist (ou seja, arquivo m3u8 referindo-se a outros arquivos m3u8) e o ffmpeg fará o download e o mesclará adequadamente, para que você não precise especificar manualmente várias entradas -i.
Vlastimil Ovčáčík
0

Encontrei outra maneira de baixar um vídeo com blob urlin Vimeo(consulte a outra resposta nesta página).

Esta solução é adequada apenas se você quiser apenas o vídeo sem os sons!

Portanto, se você deseja baixar apenas um vídeo do Vimeo (geralmente sem sons), posso confirmar que esta extensão do Google Chrome funciona muito bem: Flash Video Downloader .

madx
fonte