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 ffmpeg
para el vstack
filtro: la versión 2.6 que se instala con Fedora 22 es demasiado antigua. Tiene disponible la versión 2.8.3 vstack
.
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
franco
input.mp4
que primero convierto enleft.mp4
yright.mp4
. Si entiendo, su comando asume que estos archivos existen en primer lugar.gian
franco
gian
franco
-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íxelesgian