convertir horizontal lado a lado a video 3D apilado verticalmente

He visto esto y esta publicación que explican cómo recortar y apilar videos usando ffmpeg.

Mi pregunta es: ¿existe una manera fácil (preferiblemente de un solo paso) de convertir un video apilado horizontalmente en uno apilado verticalmente?

¿Y hay una forma de Linux para volver a codificar formatos de video 3D dados en otros?

Editar:

Con la ayuda de Mulvya, escribí un script que hace la conversión y crea un archivo de texto con la metainformación que necesita el reproductor de video Gear VR.

Nota: necesita una versión reciente de ffmpegpara el vstackfiltro: la versión 2.6 que se instala con Fedora 22 es demasiado antigua. Tiene disponible la versión 2.8.3 vstack.

Respuestas (1)

Simplemente integre todo el filtrado en un solo comando:

ffmpeg -i input.mp4 \
-filter_complex "[0:v]crop=in_w/2:in_h:0:0 [top]; \ 
[0:v]crop=in_w/2:in_h:in_w/2:0[bottom]; \
[top][bottom]vstack[outv]" \
-map "[outv]" -map 0:a -c:a copy output_3dv.mp4

Editar: este comando a continuación escala y rellena la salida a 2000x2000

ffmpeg -i input.mp4 \
-filter_complex "[0:v]crop=in_w/2:in_h:0:0 [top]; \
[0:v]crop=in_w/2:in_h:in_w/2:0[bottom]; \
[top][bottom]vstack,\
scale=iw*min(2000/iw\,2000/ih):ih*min(2000/iw\,2000/ih), \
pad=2000:2000:(ow-iw)/2:(oh-ih)/2[outv]" \
-map "[outv]" -map 0:a -c:a copy output_3dv.mp4
Tengo un video fuente llamado input.mp4que primero convierto en left.mp4y right.mp4. Si entiendo, su comando asume que estos archivos existen en primer lugar.
modificado para entrada única
¿Puedes escalar y rellenar la salida al mismo tiempo también?
seguro. ¿Qué quieres que se haga?
Me gustaría rellenar la salida para que sea cuadrada (mismo ancho que alto). Actualmente estoy corriendo -vf "pad=width=in_h:height=in_h:x=in_w/2:y=0:color=black"en la salida. Y, además, me gustaría tener un ancho fijo (y alto) de, por ejemplo, 2000 píxeles
¿También querías escalar el video?