2010-05-10 11:12:24 +0000 2010-05-10 11:12:24 +0000
40
40

¿Cómo reproducir varios vídeos de forma sincronizada?

Tengo 3 vídeos, los 3 tienen el mismo tiempo, la misma cantidad de fotogramas, y sólo se diferencian en cuanto a la calidad de codificación.

Ahora necesito que se ejecuten uno al lado del otro de forma sincronizada para fines de evaluación. Es decir, que cuando pulse “play” se inicien AMBOS vídeos. Análogamente para parar, avanzar y retroceder.

¿Alguien conoce algún reproductor capaz de hacer eso? Con esto me refiero a la reproducción de más de 1 video lado a lado…

Plataforma: Win7

Respuestas (10)

32
32
32
2016-01-22 16:10:17 +0000

Si alguien sigue interesado en esto la versión actual de VLC es capaz de hacerlo muy bien sin ningún tipo de script o complemento. Sin embargo, hasta donde yo sé, sólo se pueden reproducir dos archivos de forma sincronizada, no 3.

  1. Para conseguirlo simplemente abre VLC y selecciona Media>Abrir varios archivos.
  2. Dentro de la ventana de múltiples archivos seleccione añadir para agregar el primer archivo.
  3. Después de esto, haga clic en la casilla “Mostrar más opciones”, seguida de la casilla “Reproducir otro medio de forma sincronizada”, en la parte inferior de la ventana.
  4. Seleccione “Examinar” junto a “Medios adicionales” para añadir el segundo archivo.
  5. Pulse el botón de reproducción y los dos archivos multimedia se reproducirán simultáneamente con una sola ventana de control.
17
17
17
2013-10-02 10:43:52 +0000

Bino es un reproductor multimedia multiplataforma comúnmente recomendado para la reproducción de archivos estereoscópicos. Entre otras características, admite la reproducción sincronizada de múltiples flujos.

La interfaz puede parecer un poco primitiva o confusa al principio, pero todo lo que tienes que hacer es

  1. Arrastrar tus dos archivos de vídeo a Bino
  2. Seleccionar la opción de entrada “Separate streams, left first” y la opción de salida “Left/right”

Voilà, tienes una reproducción sincronizada. El tipo de reproducción en el que se utiliza un único conjunto de controles para todos los flujos, de modo que no tengas que “Invertir en unos pesos para los dedos y entrenarte para hacer clic muy rápidamente” como sugiere @ta.speot.is.

Como extra, soporta el renderizado de 3D anaglifo.

13
13
13
2011-07-21 08:07:09 +0000

VLC en Windows (1.1.10 o posterior):

  • Herramientas → Preferencias
  • Mostrar configuración → Todos
  • Haga clic en Avanzado (Haga clic en Lista de reproducción para VLC 2.1.5)
  • Desmarque “Permitir sólo una instancia en ejecución”
  • Desmarque “Usar sólo una instancia cuando se inicie desde el gestor de archivos”

VLC en OS X no ofrece el mismo conjunto de opciones. Sin embargo, puede ejecutar múltiples instancias desde el Terminal con open -a VLC.

6
6
6
2018-05-24 18:47:55 +0000

Puede hacerlo con mpv si no le importa utilizar la línea de comandos:

3 vídeos uno al lado del otro (apilados horizontalmente)

mpv --lavfi-complex="[vid1][vid2][vid3]hstack=inputs=3[vo];[aid1][aid2][aid3]amix=inputs=3[ao]" input1.mkv --external-files="input2.mkv;input3.mkv"

2 vídeos

mpv --lavfi-complex="[vid1][vid2]hstack[vo];[aid1][aid2]amix[ao]" input1.mkv --external-file=input2.mkv

Notas

  • En Windows use ; para separar cada nombre de archivo en --external-files (como se muestra en el ejemplo de 3 vídeos). En Linux y macOS utilice :. Alternativamente, utilice dos instancias de --external-file en su lugar como: --external-file=input2.mkv --external-file=input3.mkv.

  • Los archivos deben tener todos la misma altura. Si no lo son, añada los filtros de escala, relleno y/o recorte. Vea la documentación de mpv y FFmpeg Filters para más información.

4
4
4
2014-10-18 15:33:24 +0000

Después de hacer lo que dijo Kiran, abre todos tus vídeos y ejecuta el siguiente script AutoHotKey

ScriptVersion = 1.1
#Singleinstance,force

GoSub, MainProgram
return

mainprogram:
    SetTitleMatchMode, 2
    WinGet, id, list, - VLC media player,, Program Manager
    Windows = 
    Loop, %id%
    {
        StringTrimRight, this_id, id%a_index%, 0
        Windows := this_id . "," . Windows
    }
    StringTrimRight, Windows, Windows, 1

    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
    SendMode Input ; Recommended for new scripts due to its superior speed and reliability.

    ~]::LoopControlSend(Windows, "]")
    ~[::LoopControlSend(Windows, "[")
    ~j::LoopControlSend(Windows, "j")
    ~k::LoopControlSend(Windows, "k")
    ~space::LoopControlSend(Windows, "{space}")

    ~+left::LoopControlSend(Windows, "+{left}")
    ~!left::LoopControlSend(Windows, "!{left}")
    ~^left::LoopControlSend(Windows, "^{left}")
    ~+right::LoopControlSend(Windows, "+{right}")
    ~!right::LoopControlSend(Windows, "!{right}")
    ~^right::LoopControlSend(Windows, "^{right}")
    ~^up::LoopControlSend(Windows, "^{up}")
    ~^down::LoopControlSend(Windows, "^{down}")

    ; for active windows only. use this to adjust speed when out of sync
    ~left::ActiveWindowSend(Windows, "+{left}")
    ~right::ActiveWindowSend(Windows, "+{right}")
    ~up::ActiveWindowSend(Windows, "^{left}")
    ~down::ActiveWindowSend(Windows, "^{right}")
return

LoopControlSend(Windows, x)
{
    WinGet, active_id, ID, A

    is_valid_window = 0
    Loop,Parse,Windows,CSV
    {
        if active_id = %A_LoopField%
        {
            is_valid_window = 1
            break
        }
    }

    if is_valid_window
    {
        Loop,Parse,Windows,CSV
        {
            if active_id <> %A_LoopField%
            {
                ControlSend, , %x%, Ahk_Id %A_LoopField%
            }
        }
    }
}

ActiveWindowSend(Windows, x)
{
    WinGet, active_id, ID, A

    is_valid_window = 0
    Loop,Parse,Windows,CSV
    {
        if active_id = %A_LoopField%
        {
            is_valid_window = 1
            break
        }
    }

    if is_valid_window
    {
        SendInput, %x%
    }
}

Este script envía tus pulsaciones a todas las instancias en ejecución de VLC media player. No funciona si usas un ratón.

Estas cosas deberían funcionar:

  • avance: Ctrl + right / Alt + right / Shift + right
  • retroceso: Ctrl + left / Alt + left / Shift + left
  • reproducción/pausa: space
  • acelerar: ]
  • acelerar: [
  • bajar la velocidad: ~^down::LoopControlSend(Windows, "^{down}")

Puedes añadir fácilmente otras pulsaciones bajo la línea: left, right, up, down

Esto no sincroniza perfectamente los vídeos, así que puedes utilizar las siguientes 4 teclas: left para controlar la ventana activa.

  • right salto muy corto hacia atrás
  • up salto muy corto hacia adelante
  • down salto medio hacia atrás
  • 0x6& salto medio hacia adelante

Si prefiere elegir los programas manualmente, utilice el siguiente código en su lugar

;Modified from MultipleSend by jgpaiva

ScriptVersion = 1.1
#Singleinstance,force

GoSub, MainProgram
return

Guiescape:
GuiClose:
    gui,destroy
    exitapp  

mainprogram:
    ;start by populating the listview.
    Gui, 1:default
    Gui, Add, Text, ,Select the windows to send the text.`nSelect several by pressing ctrl while selecting.`nAfter you've finished the selection`, press Submit.
    Gui, Add, ListView,w400 h500 vMyListView, Name of the Window | Window Class |Window ID
    WinGet, id, list,,, Program Manager
    Loop, %id%
    {
        StringTrimRight, this_id, id%a_index%, 0
        WinGetClass, this_class, ahk_id %this_id%
        WinGetTitle, this_title, ahk_id %this_id%
        If This_Title =
            continue
        if % LV_Add("",This_Title,This_Class,This_ID) = 0
            msgbox, bug
    } 
    Gui, Add, Button, default,Submit
    Gui, Show
return

ButtonSubmit:
    NextRow := -1
    Windows =
    Loop,% LV_GetCount("Selected")
    {
    NextRow:=LV_GetNext(NextRow)
    LV_GetText(Text, NextRow,3)
    Windows := Text . "," . Windows
    }
    StringTrimRight, Windows, Windows, 1
    Gui,1:Destroy

    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
    SendMode Input ; Recommended for new scripts due to its superior speed and reliability.

    ~]::LoopControlSend(Windows, "]")
    ~[::LoopControlSend(Windows, "[")
    ~j::LoopControlSend(Windows, "j")
    ~k::LoopControlSend(Windows, "k")
    ~space::LoopControlSend(Windows, "{space}")

    ~+left::LoopControlSend(Windows, "+{left}")
    ~!left::LoopControlSend(Windows, "!{left}")
    ~^left::LoopControlSend(Windows, "^{left}")
    ~+right::LoopControlSend(Windows, "+{right}")
    ~!right::LoopControlSend(Windows, "!{right}")
    ~^right::LoopControlSend(Windows, "^{right}")

    ~^up::LoopControlSend(Windows, "^{up}")
    ~^down::LoopControlSend(Windows, "^{down}")

    ; for active windows only. use this to adjust speed when out of sync
    ~left::ActiveWindowSend(Windows, "+{left}")
    ~right::ActiveWindowSend(Windows, "+{right}")
    ~up::ActiveWindowSend(Windows, "^{left}")
    ~down::ActiveWindowSend(Windows, "^{right}")
return

LoopControlSend(Windows, x)
{
    WinGet, active_id, ID, A

    is_valid_window = 0
    Loop,Parse,Windows,CSV
    {
        if active_id = %A_LoopField%
        {
            is_valid_window = 1
            break
        }
    }

    if is_valid_window
    {
        Loop,Parse,Windows,CSV
        {
            if active_id <> %A_LoopField%
            {
                ControlSend, , %x%, Ahk_Id %A_LoopField%
            }
        }
    }
}

ActiveWindowSend(Windows, x)
{
    WinGet, active_id, ID, A

    is_valid_window = 0
    Loop,Parse,Windows,CSV
    {
        if active_id = %A_LoopField%
        {
            is_valid_window = 1
            break
        }
    }

    if is_valid_window
    {
        SendInput, %x%
    }
}
3
3
3
2010-05-10 22:03:42 +0000

google probablemente ya te lo ha dicho, puedes comprar un par de programas propietarios que pueden hacer eso, pero por si acaso : videocompare, tmpgenc, vidlord…

Este es gratis : http://forum.doom9.org/showthread.php?t=138430

(enlaces de descarga que funcionan al final del hilo)

No probado porque mi configuración de wine está completamente jodida ahora mismo. No hace side by side sino reproducción apilada (a no ser que tengas una muy buena lcd no vas a ver lo mismo reproduciendo el mismo vid en dos esquinas opuestas de la pantalla de todos modos)

Si crees que realmente necesitas side by side puedes usar avisynth para hacer lo que dijo zimmer.

clip1 = DirectShowSource("C:\MyEncode1.foo", audio=false)
clip2 = DirectShowSource("C:\MyEncode2.foo", audio=false)
StackVertical(clip1,clip2)

(referencia forum.doom9.org/showthread.php?t=139769)

No necesitas hacer un encode (que añadiría sus propios artefactos de codificación de todas formas), simplemente haz un proyecto que produzca un encode de los dos vids reproduciéndose juntos y salta a través del archivo.

3
3
3
2015-10-02 23:50:44 +0000

Tengo el mismo problema, pero no he visto ninguna solución satisfactoria en línea hasta ahora (y créanme que había hecho una búsqueda exhaustiva). Por fin he encontrado mi propia solución, que no requiere ningún gasto adicional. Aunque esta es una pregunta antigua, espero que mi solución siga siendo útil.

En primer lugar, en el reproductor VLC, vaya a Herramientas->Preferencias. Asegúrate de desmarcar “Permitir sólo una instancia en ejecución” y “Pausa en el último fotograma de un vídeo”.

A continuación, escriba/edite los siguientes comandos en un archivo de texto. Abra un símbolo del sistema de Windows y ejecute los comandos copiando y pegando (o guarde el texto y ejecútelo como un archivo por lotes):

set VLCplayer="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
set VLCoptions=--repeat
set VIDEOdir="D:\path to your video directory"
set Video1="calibration1.mj2"
set Video2="calibration2.mj2"
set Video3="calibration3.mj2"

REM check the commands for misplaced spaces or missing '/' or '"' before running
ECHO cd %VIDEOdir%
ECHO %VLCplayer% %VLCoptions% %Video1%
ECHO %VLCplayer% %VLCoptions% %Video2%
ECHO %VLCplayer% %VLCoptions% %Video3%

cd %VIDEOdir%
%VLCplayer% %VLCoptions% %Video1%
%VLCplayer% %VLCoptions% %Video2%
%VLCplayer% %VLCoptions% %Video3%

Esto abrirá tres instancias de VLC, cada una con uno de los tres vídeos y todas reproduciéndose de forma muy sincronizada, al menos a su vista. Sin embargo, las tres instancias se superpondrán inicialmente. Tendrás que hacer clic en la barra de título de cada una de las instancias para moverlas sin interrumpir la reproducción, de modo que puedas verlas reproducirse una al lado de la otra en tu pantalla. Esto es bastante molesto pero lo considero un inconveniente muy pequeño.

Lo he intentado pero no es posible controlar todas las instancias con teclas de acceso rápido para parar, avanzar, retroceder, etc. Sin embargo, la opción ‘–repeat’ pondrá los vídeos en un bucle, así que puedes esperar a que vuelvan a empezar.

Para vídeos muy largos, puede ser mejor fusionar los vídeos en una composición lado a lado en un solo vídeo utilizando, por ejemplo, ffmpeg: https://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015662.html an http://ffmpeg.org/pipermail/ffmpeg-user/2013-June/015712.html Este comando sólo describe cómo fusionar dos vídeos, pero creo (es decir, no lo he probado) que se puede ejecutar el comando varias veces para incorporar varios archivos de vídeo.

1
1
1
2010-05-10 11:16:39 +0000

Imagino que se puede utilizar un script de AutoHotKey para enviar un acceso directo a “Play” a los tres jugadores en muy poco tiempo.

Otra cosa es que puedan empezar a jugar exactamente al mismo tiempo. Incluso si son capaces de comenzar de inmediato, me imagino que habrá algunas peleas por el disco duro. Puede que quieras hacer un disco RAM si esto es una evaluación importante.

-1
-1
-1
2010-05-10 14:02:32 +0000

Si esto no es algo que haces muy a menudo, yo usaría un software de edición de vídeo como vegas para construir un vídeo con todos ellos mostrando. Vídeo de Youtube de ejemplo de cómo hacerlo.

-1
-1
-1
2010-05-10 11:22:26 +0000

Muchos reproductores podrán emitir una imagen de un solo fotograma del vídeo.

Podría elegir varios puntos en sus vídeos para comparar diferentes tipos de imagen (nubes, humo, árboles, hierba, movimiento son buenos para las comparaciones de codificación) y tomar los mismos fotogramas de cada uno de sus vídeos.

De este modo, podrá realizar comparaciones sobre una imagen estática en lugar de intentar detectar las diferencias de movimiento. Si lo desea, puede comparar píxel por píxel.

Asegúrese de que no utiliza JPG como salida, ya que es un formato con pérdidas e introducirá sus propios artefactos.