convert horizontal side by side to vertically stacked 3D video I have seen this and this post explaining how to crop and stack videos using ffmpeg.

My question is - is there an easy (preferably one step) way to turn a horizontally stacked video into a vertically stacked one?

And is there a Linux-way to re-encode given 3D video formats into others?

Edit:

with Mulvyas help I wrote a script which does the converting stuff and creates a text file with meta information needed by the Gear VR video player.

Note: you need a recent version of ffmpeg for the vstack filter - version 2.6 which is installed with Fedora 22 is too old. Version 2.8.3 has vstack available.
Just integrate all filtering into one command:

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


Edit: this command below scales and pads the output to 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