Как скачать видео с BLOB-URL?

94

Я пытаюсь скачать видео с src url blob:https%3A//www.youtube.com/23aea5c8-9ae2-40dc-9417-e675ea99b386.

Есть ли процесс, который можно использовать для загрузки всех видео этого типа?

vinesh
источник
Если вы хотите скачать видео с YouTube, используйте такие расширения, как Video Downloadhelper (Firefox)
Ганеш Р.
Я хочу скачать с Vimeo URL.
Винеш
Vinesh, попробуйте перейти на веб-сайт Vimeo и начать воспроизведение видео, которое требуется загрузить. Video DownloadHelper обнаружит его и даст возможность загрузить его. Я попробовал это.
Ганеш Р.
Не повезло. Когда я начал воспроизводить видео, я увидел несколько предложений видео с расширения, которое вы упомянули, каждый размером около 2 МБ. когда я скачал часть, я не смог воспроизвести этот маленький файл. Я получил ошибку, что файл поврежден.
vinesh
поставить ссылку в комментариях
Ганеш Р.

Ответы:

69

Я нашел способ скачать видео с blob urlin Vimeo(читая здесь, я понял, как это сделать). Я пишу простые шаги здесь. Я использую Google Chrome:

  1. Откройте More ToolsDeveloper Tools
  2. Проверьте, есть ли в теге видео что-то вроде этого:

    <video preload="" src="blob:https://player.vimeo.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"></video>
    
  3. Скопируйте src тега iframe, если таковой имеется, например, http://player.vimeo.com/video/XYZесли вы его нашли, вы можете перейти прямо к точке 7, в противном случае выполните шаги 4, 5, 6.
  4. Теперь найдите эту строку https://skyfire.vimeocdn.com/.../master.json?base64_init=1внутри страницы (используя представление разработчика), вы должны найти ее внутри функции javascript, например:

    (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. Скопируйте ссылку в поле url на новой вкладке Chrome, например, https://48skyfiregce-a.akamaihd.net/.../master.json?base64_init=1откройте ее в браузере, она откроет вам файл json, например:

    {
        "clip_id": XYZ,
        "base_url": "../",
        "video": [
                     { ... ... ...
    
  6. Теперь составьте URL с вашим идентификатором, XYZнапример так:https://player.vimeo.com/video/XYZ

  7. Замените blob:https://player.vimeo.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXвнутри тега video этот последний URL (тот, который был создан на предыдущем шаге № 6).
  8. Теперь вы заметите, что волшебным образом изменилось поле src внутри тега video (если это не так, попробуйте выполнить шаг 7 несколько раз) ...

    <video preload="none" src="https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/XX/XXX/X/XXXXXXXX/XXXXXXXXX.mp4?token=abcdefg"></video>
    
  9. Используйте эту новую ссылку, чтобы загрузить ее напрямую, это примерно так: https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/XX/XXX/X/XXXXXXXX/XXXXXXXXX.mp4?token=abcdefg

madx
источник
7
Впечатляет. Как ты понял это?
Гроностай
1
На шаге 7, что вы имеете в виду под "последним URL внутри html"?
joaorodr84
6
Работает отлично, но хитрость заключается в том, что иногда нужно заменить значение «src» несколько раз, чтобы получить сгенерированную ссылку для скачивания.
Ашрит
19
В настоящее время для Vimeo это намного проще и не требует всех шагов. Просто откройте видео Vimeo, найдите <video>тег в структуре DOM dev tools и измените srcатрибут с blob:...на x. Ничего не случится - это нормально. Теперь измените это снова, чтобы y. Chrome преобразует его «волшебным образом» в URL-адрес, как в шаге 8 или 9. :-)
StanE
3
@StanE он работает как шарм, в Firefox тоже, и, безусловно , быстрее ...
лин
10

Этот ответ для URL-адресов Twitter -

  1. Щелкните правой кнопкой мыши видео и выберите «Проверить элементы».

Вы найдете такой код

<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">

2. Скопируйте Вставьте приведенный выше код в блокнот ++. Замените все &quot;с "и \/wth /в блокноте ++. (Используйте CTRL + H)

Вы получите что-то вроде

{
    "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"
}

Сверху в формате JSON смотрите значение video_url

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

Проблема здесь в том, что после 1 августа 2016 года Twitter больше не использует видео с расширением .mp4, а переходит на новый формат адаптивной потоковой передачи HLS с расширением .m3u8 .

Файлы .m3u8 - это просто оболочка для текстовых файлов, они очень маленькие (300-500 байт), и когда вы открываете их в текстовом редакторе, они содержат ссылки на видео разных размеров.

  1. Откройте файл m3u8 в блокноте ++, он будет содержать такой код

EXTM3U EXT-X-НЕЗАВИСИМЫЕ-СЕГМЕНТЫ EXT-X-STREAM-INF: ИД ПРОГРАММЫ = 1, BANDWIDTH = 256000, РАЗРЕШЕНИЕ = 180x320, КОДЕКИ = "mp4a.40.2, avc1.42001f" / ext_tw_video / 844504104512 / pl / pl / p5 / 749568 180x320 / _Z42SY5zwMlLdFYx.m3u8 EXT-X-STREAM-INF: ИД ПРОГРАММЫ = 1, BANDWIDTH = 832000, РАЗРЕШЕНИЕ = 360x640, КОДЕКСЫ = "mp4a.40.2, avc1.42001f" / ext_tw_video / pu / 360610458454104 Phfjbbx2yinirLi.m3u8

  1. Скопируйте соответствующую ссылку сверху согласно вашему разрешению. Повторяйте этот шаг, пока не получите файл .ts . Загрузите файл .ts (видеофайл).
Пиратский х
источник
Что вы имеете в виду, «вы получите что-то вроде» - откуда?
Пользователь
@ Пользователь из кода выше, который начинается как<div id="playerContainer"
Pirate X
3
Эй, на шаге 4, что вы подразумеваете под "скопировать соответствующую ссылку"? Это недействительный URL, и я не могу найти, как получить видео с ним. РЕДАКТИРОВАТЬ: ОК, верно, я нашел это. Вы должны упомянуть, что вы должны поставить « video.twimg.com » перед ним и получить доступ к URL.
Elzo
Если вы не можете найти id="playerContainer"элемент, найдите og:video:urlи откройте URL-адрес в содержимом и проверьте его источник.
Guillefix
Еще один способ сделать это в твиттере - запустить document.querySelector('video').srcвкладку консоли инструментов разработчика вашего браузера.
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>

У меня также был blob:URL video/@src, но при просмотре Developer tools> Networkво время воспроизведения выяснилось, что это video/source/@srcбыл URL для m3u8плейлиста.

m3u8-Backed видео можно легко скачать, либо:

  • 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

tl; dr - blob URL звучит как двоичный файл, который вы хотите получить, но может быть более простой способ получить видео. Просто просмотрите вкладку «Сеть» в инструментах разработчика во время воспроизведения видео, чтобы увидеть, что вы на самом деле получаете.

Властимил Овчачик
источник
1
Работает на моей машине! И вы можете предоставить несколько видов потоковых входов -i <URL> -i <URL> -i <URL>для объединения видео, аудио и субтитров в один выход :)
mcandre
@mcandre Да, это хороший совет. Вы также можете найти m3u8 metalist (то есть файл m3u8, ссылающийся на другие файлы m3u8), и ffmpeg загрузит и объединит его правильно, поэтому вам не нужно вручную указывать несколько входов -i.
Властимил Овчачик
0

Я нашел другой способ загрузить видео с помощью blob urlin Vimeo(см. Другой ответ на этой странице).

Это решение подходит только если вы хотите просто видео без звуков!

Итак, если вы хотите загрузить только видео Vimeo (часто без звуков), я могу подтвердить, что это расширение Google Chrome действительно хорошо работает: Flash Video Downloader .

madx
источник