Làm thế nào để tải xuống video với url blob?


94

Tôi đang cố tải xuống video với url src blob:https%3A//www.youtube.com/23aea5c8-9ae2-40dc-9417-e675ea99b386.

Có một quy trình có thể được theo dõi để tải xuống tất cả các loại video này?


Nếu bạn muốn tải xuống video youtube, hãy sử dụng các phần mở rộng như Video Downloadrcper (Firefox)
Ganesh R.

tôi muốn tải xuống từ url vimeo.
vinesh

Vinesh, hãy thử điều hướng đến trang web vimeo và bắt đầu phát video bạn yêu cầu tải xuống. Video DownloadHelper sẽ phát hiện ra nó và cung cấp cho bạn một tùy chọn để tải xuống. Tôi đã thử nó.
Ganesh R.

Không may mắn. Khi tôi bắt đầu phát video, tôi thấy nhiều đề xuất video từ tiện ích mở rộng mà bạn đã đề cập mỗi khoảng 2 MB. Khi tôi tải xuống một phần, tôi không thể phát tệp nhỏ đó. Tôi đã nhận được lỗi rằng tập tin bị hỏng.
vinesh

đặt liên kết trong các bình luận
Ganesh R.

Câu trả lời:


69

Tôi tìm thấy một cách để tải video với blob urltrong Vimeo(đọc ở đây tôi hiểu cách làm việc đó). Tôi viết các bước đơn giản ở đây. Tôi đang sử dụng Google Chrome:

  1. Mở More ToolsDeveloper Tools
  2. Kiểm tra xem trong thẻ video có cái gì đó như thế này không:

    <video preload="" src="blob:https://player.vimeo.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"></video>
    
  3. Sao chép src của thẻ iframe, nếu có, giống như http://player.vimeo.com/video/XYZnếu bạn tìm thấy nó, bạn có thể đi thẳng đến điểm 7, nếu không, hãy làm theo các bước 4, 5, 6.
  4. Bây giờ hãy tìm chuỗi này https://skyfire.vimeocdn.com/.../master.json?base64_init=1bên trong trang (sử dụng Chế độ xem dành cho nhà phát triển), bạn sẽ tìm thấy chuỗi bên trong một hàm javascript, như thế này:

    (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. Sao chép liên kết bên trong trường url trên tab Chrome mới, ví dụ: https://48skyfiregce-a.akamaihd.net/.../master.json?base64_init=1kết thúc mở nó bằng trình duyệt, nó sẽ mở cho bạn một tệp json như thế này:

    {
        "clip_id": XYZ,
        "base_url": "../",
        "video": [
                     { ... ... ...
    
  6. Bây giờ soạn một url với id của bạn XYZnhư thế này:https://player.vimeo.com/video/XYZ

  7. Thay thế blob:https://player.vimeo.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXbên trong thẻ video bằng url cuối cùng đó (cái được tạo ở bước trước # 6).
  8. Bây giờ bạn sẽ nhận thấy rằng trường src bên trong thẻ video đã thay đổi (nếu không, hãy thử bước 7 nhiều lần) ...

    <video preload="none" src="https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/XX/XXX/X/XXXXXXXX/XXXXXXXXX.mp4?token=abcdefg"></video>
    
  9. Sử dụng liên kết mới đó để tải xuống trực tiếp, đó là một cái gì đó như sau: https://fpdl.vimeocdn.com/vimeo-prod-skyfire-std-us/XX/XXX/X/XXXXXXXX/XXXXXXXXX.mp4?


7
Ấn tượng. Làm thế nào bạn đã tìm ra điều này?
gronostaj

1
Trong bước 7, bạn có ý nghĩa gì với "url cuối cùng bên trong html"?
joaorodr84

6
Hoạt động hoàn hảo, nhưng mẹo đôi khi là bạn phải thay thế giá trị "src" nhiều lần để tạo liên kết tải xuống được tạo.
Ashrith

19
Hiện tại, đối với Vimeo, việc này dễ dàng hơn nhiều và không yêu cầu tất cả các bước. Chỉ cần mở video Vimeo, tìm <video>thẻ trong cấu trúc dev của công cụ dev và thay đổi srcthuộc tính từ blob:...sang x. Sẽ không có gì xảy ra - điều này là ok. Bây giờ thay đổi nó một lần nữa, để y. Chrome sẽ chuyển đổi 'kỳ diệu' thành URL như trong bước 8 hoặc 9 .:-)
StanE

3
@StanE nó hoạt động như một nét duyên dáng, trong Firefox quá, và chắc chắn nhanh hơn là ...
ling

10

Câu trả lời này dành cho các URL Twitter -

  1. Nhấp chuột phải vào video và nhấp Kiểm tra các yếu tố -

Bạn sẽ tìm thấy một mã như thế này

<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.Copy Dán mã trên vào notepad ++. Thay thế tất cả &quot;bằng "\/wth /trong notepad ++. (Sử dụng CTRL + H)

Bạn sẽ nhận được một cái gì đó như

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

Từ định dạng JSON ở trên, hãy xem giá trị video_url

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

Vấn đề ở đây là, sau ngày 1 tháng 8 năm 2016, Twitter không còn sử dụng video .mp4 nữa mà chuyển đổi sang định dạng phát trực tiếp thích ứng mới, với phần mở rộng tệp .m3u8 .

Các tệp .m3u8 về cơ bản chỉ là một trình bao bọc tệp văn bản, chúng rất nhỏ (300-500 byte) và khi bạn mở chúng bằng trình chỉnh sửa văn bản, chúng chứa các liên kết đến các kích thước video khác nhau

  1. Mở tệp m3u8 trong notepad ++, nó sẽ chứa mã như thế này

EXTM3U EXT-X-INDEPENDENT-SEGITT EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 256000, GIẢI QUYẾT = 180x320, CODECS = "mp4a.40.2, avc1.42001f" / 8 180x320 / _Z42SY5zwMlLdFYx.m3u8 EXT-X-STREAM-INF: CHƯƠNG TRÌNH-ID = 1, BĂNG THÔNG = 832.000, GIẢI = 360x640, codec = "mp4a.40.2, avc1.42001f" / ext_tw_video / 844504104512749568 / pu / pl / 360x640 / - Phfjbbx2yinirLi.m3u8

  1. Sao chép liên kết tương ứng từ trên theo nhu cầu giải quyết của bạn. Lặp lại bước tương tự cho đến khi bạn có tệp .ts . Tải xuống tệp .ts (tệp video).

Ý bạn là gì, "bạn sẽ nhận được một cái gì đó như" - từ đâu?
Người dùng

@ Người dùng từ mã phía trên nó bắt đầu như thế<div id="playerContainer"
Pirate X

3
Này, trong bước 4, ý của bạn là "sao chép liên kết tương ứng" là gì? Đó không phải là một URL hợp lệ và tôi không thể tìm cách tải video bằng nó. EDIT: OK, đúng, tôi tìm thấy nó. Bạn nên đề cập rằng bạn phải đặt " video.twimg.com " trước nó và truy cập URL.
Elzo

Nếu bạn không thể tìm thấy id="playerContainer"phần tử tìm og:video:urlvà mở url trong nội dung và kiểm tra nguồn của phần đó.
guillefix

Một cách khác để làm điều đó trên twitter là chạy document.querySelector('video').srctrong tab bảng điều khiển công cụ phát triển trình duyệt của bạn.
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>

Tôi cũng đã có blob:URL video/@src, nhưng bằng cách xem Developer tools> Networktrong khi phát lại, hóa ra đó video/source/@srclà URL cho m3u8danh sách phát.

m3u8thể dễ dàng tải xuống một video được quay lại bằng cách:

  • 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 - URL blob nghe có vẻ như nhị phân bạn muốn nhận nhưng có thể có cách dễ dàng hơn để lấy video. Chỉ cần xem tab Mạng trong các công cụ Dev trong khi bạn phát video để xem những gì bạn đang thực sự tìm nạp.


1
Hoạt động trên máy của tôi! Và bạn có thể cung cấp nhiều loại đầu vào luồng -i <URL> -i <URL> -i <URL>để hợp nhất tất cả video, âm thanh và phụ đề thành một đầu ra :)
mcandre

@mcandre Vâng, đó là một mẹo hay. Bạn cũng có thể tìm thấy m3u8 metalist (tức là tệp m3u8 giới thiệu các tệp m3u8 khác) và ffmpeg sẽ tải xuống và hợp nhất nó một cách chính xác, vì vậy bạn không cần chỉ định thủ công nhiều đầu vào -i.
Vlastimil Ovčáčík

0

Tôi tìm thấy một cách khác để tải về một video với blob urltrong Vimeo(xem câu trả lời khác trong trang này).

Giải pháp này chỉ phù hợp nếu bạn chỉ muốn video không có âm thanh!

Vì vậy, nếu bạn muốn tải xuống chỉ một video Vimeo (thường không có âm thanh), tôi có thể xác nhận rằng tiện ích mở rộng Google Chrome này hoạt động thực sự tốt: Flash Video Downloader .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.