¿Cómo descargamos un video de blob url [cerrado]

220

Quiero descargar un video cuya url no es un simple archivo mp4, pero su url es de tipo blob, por ejemplo.

<video id="playerVideo" width="450px" autoplay="autoplay" height="338px" 
       style="height:100%;width:100%;" class="mejs-rai-e"
       src="blob:http://www.example.com/d70a74e1-0324-4b9f-bad4-84e3036ad354">
</video>

¿Existe alguna extensión o software de Chrome que se pueda utilizar para descargar el video que se está reproduciendo?

SidD
fuente
@cdlvcdlv Gracias, hombre! Después de probar muchas herramientas, ¡esa fue la que funcionó para mi caso específico!
felipeptcho
@felipeptcho De nada. Feliz de ver que por respuesta puede ayudar a alguien más.
cdlvcdlv
2
Consulte la extensión HDS / HLS Video Downloader para navegadores basados ​​en Chromium.
georgeawg
13
¿Por qué todas las respuestas a esta pregunta asumen que la extensión del archivo es .m3u8? Eso nunca se especificó en la pregunta.
numbermaniac
Hola @SidD, ¿pudiste resolver este problema? Si es así, ¿podría decirme qué solución funcionó para usted?
Hagrawal

Respuestas:

230

Se me ocurrió una solución general, que debería funcionar en la mayoría de los sitios web. Intenté esto solo en Chrome, pero este método debería funcionar con cualquier otro navegador, ya que las herramientas de desarrollo son prácticamente iguales en todos.

Pasos:

  1. Abra las Herramientas de desarrollo del navegador (generalmente F12 , o Ctrl-Shift-I , o haga clic derecho y luego Inspeccione en el menú emergente) en la página con el video que le interesa.
  2. Vaya a la pestaña Red y luego vuelva a cargar la página. La pestaña se completará con una lista de solicitudes (puede ser hasta un centenar de ellas o incluso más).
  3. Busque a través de los nombres de las solicitudes y encuentre la solicitud con .m3u8extensión. Puede haber muchos de ellos, pero lo más probable es que el primero que encuentre sea el que está buscando. Puede tener cualquier nombre, por ejemplo playlist.m3u8.
  4. Abra la solicitud y, en la subsección Encabezados , verá la URL completa de la solicitud en el campo URL de solicitud . Cópialo. ingrese la descripción de la imagen aquí
  5. Extrae el video de m3u8. Hay muchas maneras de hacerlo, te daré los que probé, pero puedes buscar más en Google "descargando video de m3u8".
    • Opción 1. Si tiene instalado el reproductor VLC, alimente la URL a VLC usando la opción de menú " Abrir secuencia de red ... ". No voy a entrar en detalles sobre esta parte aquí, hay una serie de guías completas en muchos lugares, por ejemplo, aquí . Si la página no funciona, siempre puede buscar en Google otro "descargando vlc video en línea"
    • Opción 2. Si le gusta más la línea de comandos, use FFMPEG o su propio script, como se indica en esta pregunta de Superusuario .
Vlad Nikiforov
fuente
49
La opción 3 es: usar la URL de la lista de reproducción directamente con youtube-dl, ¡es muy simple!
Arnaud Tournier
44
youtube-dl también funciona para archivos mpd.
Gibado
2
@patricK Puede intentar agregar un referente, por ejemplo:youtube-dl --add-header Referer: https://www.google.com/referer-page https://google.com/video.m3u8
Searene
1
importa si pregunto, ¿cómo abriste la barra de búsqueda en el módulo de red y buscaste las palabras clave "m3u8"?
Zhou XF
1
Y Opción 4: use JDownloader 2 para descargar la URL de la lista de reproducción, en mi opinión, esta es la forma más fácil.
Robin Hartmann
51

Use la extensión de Google Chrome HLS Downloader para obtener el enlace a la lista de reproducción M3U. Su icono en la barra del navegador mostrará la cantidad de listas de reproducción encontradas en la página web actual. Al hacer clic en el icono, puede ver una lista del enlace de la lista de reproducción y luego usar el botón copiar al lado de un enlace para copiarlo.

Luego use el programa youtube-dl para descargar el archivo.

youtube-dl --all-subs -f mp4 -o "file-name-to-save-as.mp4" "https://link-from-Google_Chrome-HLS_Downloader_extension"

Explicación de las opciones de línea de comando:

  • -f mp4 = Formato de salida mp4

  • --all-subs = Descargar todos los subtítulos

  • -o "file-name-to-save-as.mp4" = Nombre del archivo para guardar el video como.

  • " https: // link-from-Google_Chrome-HLS_Downloader_extension " = Este es el enlace a la lista de reproducción que copió de la extensión HLS Downloader.

Si usa las mismas opciones de configuración todo el tiempo para youtube-dl , puede echar un vistazo a las opciones de configuración para youtube-dl , ya que esto puede ahorrarle mucho tipeo.

La extensión HLS Downloader es gratuita y de código abierto bajo la licencia MIT si desea ver el código que se puede encontrar en su página de proyecto en Github .

frederickjh
fuente
Esto funciona muy bien, excepto en mi caso, ¿el MP4 no tenía sonido? ¿Hay una manera de resolver esto?
Christopher D. Emerson
2
No he tenido su paso. Debe ser algo con el archivo que está descargando. Creo que el estándar mp4 admite múltiples pistas de audio. Compruebe que no hay otra pista de audio y que la primera es el silencio.
frederickjh
1
Gran extensión! mucho más fácil que correr todo a su alrededor con archivos m3u8 y solo archivos blob estrechos. Sin embargo, no necesitaba lo que fuera eso de YouTube. HLS Downloader me da los archivos de video directamente.
Justin Emlay
intente agregar -x dentro de las opciones
Sir Von Berker
En mi caso, probé HLS Downloader con Twitter, y funcionó como dijo @Justin: dio el archivo de video directamente. Pero también probé las sugerencias propuestas por @Vlad en la otra respuesta, básicamente haciendo todos los pasos manualmente, con los mismos resultados (es decir, obtener un .MP4archivo de trabajo ).
Gwyneth Llewelyn
27

El proceso puede variar según dónde y cómo se aloja el video. Saber eso puede ayudar a responder la pregunta con más detalle.

Como ejemplo; así es como puedes descargar videos con enlaces blob en Vimeo.

  1. Ver el código fuente del iframe del reproductor de video
  2. Buscar mp4
  3. Copiar enlace con consulta de token
  4. Descargar antes de que caduque el token

Fuente e instrucciones paso a paso aquí.

ingrese la descripción de la imagen aquí

chiappa
fuente
2
Este método funciona bien incluso si el tipo de archivo en el urlno es .mp4 , solo verifique el encabezado del archivo y cámbiele el nombre.
eapo
25

Así es como me las arreglo para "descargarlo":

  1. Use inspect-element para identificar la URL del archivo de lista de reproducción M3U
  2. Descargue el archivo M3U
  3. Use VLC para leer el archivo M3U, transmitir y convertir el video a MP4

En Firefox, el archivo M3U apareció como del tipo application / vnd.apple.mpegurl

ingrese la descripción de la imagen aquí

El contenido del archivo M3U se vería así:

Abra el reproductor medial VLC y use la opción Media => Convertir. Utilice su archivo M3U (guardado) como fuente:

ingrese la descripción de la imagen aquí

Iosannis Drositis
fuente
3
Gran consejo! Parece que no hay necesidad de descargar el m3u8archivo, solo puede pegar la URL externa como fuente.
en la pestaña de red hay una pestaña secundaria para "Medios". es más fácil obtener el archivo m3u8 con solo unos pocos elementos.
pcarvalho
19

Hay una variedad de formas de obtener la URL, .m3u8ya sea viendo la fuente de una página, mirando la pestaña Red en las Herramientas para desarrolladores en Chrome o usando un complemento como HDL / HLS Video Downloader .

Con la URL .m3u8 en la mano, puede usarla ffmpegpara descargar el video a un archivo de esta manera:

$ ffmpeg -i 'https://url/to/some/file.m3u8' -bsf:a aac_adtstoasc \
    -vcodec copy -c copy -crf 50 file.mp4
slm
fuente
11

Si NO puede encontrar el .m3u8archivo, tendrá que hacer un par de pasos diferentes.

1) Vaya a la pestaña de red y ordene por Media

Ordenar por medios

2) Verá algo aquí y seleccionará el primer elemento. En mi ejemplo, es un mpdarchivo. luego copie la URL de solicitud.

3) Luego, descargue el archivo usando su herramienta de línea de comando favorita usando la URL del paso 2.

youtube-dl -f bestvideo+bestaudio https://url.com/destination/stream.mpd

4) Dependiendo de la codificación, es posible que deba unir los archivos de audio y video, pero esto dependerá de un caso de video por video.

Almiar
fuente
10

Ya publiqué esto en otros sitios web y, aunque, ¿por qué no compartirlo con chicos / chicas en stackoverflow?

  1. Instale la extensión Video DownloadHelper en el navegador Firefox.
  2. Con DownloadHelper activado, navegue a la página web que contiene el video que desea descargar.
  3. Una vez que el video se está transmitiendo, haga clic en el ícono DownloadHelper. Le dará una lista de todos los formatos de archivo disponibles en el video actual.
  4. Desplácese hasta el formato de archivo que desea descargar
  5. En el lado derecho, verá una flecha
  6. Haga clic en esa flecha para obtener más información sobre el video actual y el formato seleccionado
  7. Desde la ventana que se muestra al final de esa flecha, desplácese hacia abajo y seleccione "Detalles"
  8. Ahora tiene todos los detalles sobre el video actual y el formato seleccionado. Es algo como esto

Detalles de hit⊗ _needsAggregate _needsCoapp acciones bitrate bit troded descrPrefix DurationFloat extension frameId fromCache group
hls id isPrivate length masterManifest mediaManifest originalId referrer size status title topUrl url url UrlFilename

  1. Ahora, mire los detalles del referente en los detalles de ese hit. Esa es la url que quieres. Cópielo y péguelo en su descargador favorito.
Johny Flodder
fuente
9
  1. Encuentre la lista de reproducción / manifiesto con la pestaña de red de herramientas de desarrollador. Siempre hay uno, ya que así es como funciona. Puede tener una extensión m3u8 que puede escribir en el filtro.
  2. Dáselo a la herramienta youtube-dl. Puede descargar mucho más que solo YouTube. Descargará automáticamente cada segmento, luego combinará todo con FFmpeg y luego descartará las partes. Existe una buena posibilidad de que admita el sitio desde el que desea descargar de forma nativa, y ni siquiera necesita realizar el paso 1.
  3. Si encuentra un sitio que es terco y se encuentra con 403 errores ... Telerik Fiddler al rescate. Puede capturar y guardar cualquier cosa transmitida (como el archivo de video) ya que actúa como un proxy local. Todo lo que ve / escucha se puede descargar, a menos que sea contenido DRM como Spotify.
Firsh - LetsWP.io
fuente
2
¿Cómo usarías youtube-dl para hacerlo? solo youtube-dl https://....m3u8"?
Aziz Javed
Además, ¿esto funciona para videos privados?
Aziz Javed
@AzizJaved sí, exactamente así. No lo he probado en videos privados, pero si puedes ver la página donde están, entonces funcionan exactamente como en un video público. Lo que importa es lo que ve en el navegador: si puede verlo, puede copiarlo. ¡Sencillo! 😉
Gwyneth Llewelyn
¿Quieren un artículo mío sobre cómo descargar videos HLS encriptados? Básicamente es el paso 3 pero con ffmpeg para descifrar y combinar segmentos ts.
Firsh - LetsWP.io
0

Si se crea una instancia del blob con datos de un manifiesto F4M (consulte la pestaña Red en las Herramientas para desarrolladores de Chrome), puede descargar el archivo de video usando el script php publicado aquí: https://n1njahacks.wordpress.com/2015/01/29 / how-to-save-hds-flash-streams-from-any-web-page /

Poniendo:

  if ($manifest == '')
    $manifest = $_GET['manifest'];

antes de:

  if ($manifest)

incluso se podría ejecutarlo en un servidor web, utilizando las solicitudes con la cadena de consulta: ?manifest=[manifest url].

Tenga en cuenta que probablemente quiera usar un cliente FTP para recuperar el archivo de video descargado y limpiarlo después del script (deja todas las partes de video descargadas).

Protector uno
fuente
-27

Simplemente puede hacer clic derecho y guardar el blob como mp4.

Cuando estaba jugando con la grabación de video / audio basada en el navegador, el blob de salida estaba disponible para descargar directamente.

pseudozach
fuente
No creo que sea posible. ¿Puedes compartir qué navegador estás descargando?
Pirate X
Utilicé Chrome pero me refería a una grabación de video webrtc realizada en la máquina local. Para los blobs web, el procedimiento puede ser diferente.
pseudozach
1
esto funciona para videos regulares pero no para blobs parece.
TankorSmash