index.html

DIY 360 degree video


About my DIY 360 degree camcorder

Video rig and related stitching problems

360 video recording and synchronisation

Audio.

Auto vs Manual White Balance.

360 degree video assembling.

Preparing series of images.

Geometric template.

Shrinking images.

Stitching images to 360 video frames.

RAM disk as a working directory.

Coverting frames to a 360 video and publishing.

Multiblend on my Linux box

Software

ASCII video and panorama


NEW! Libcaca video

NEW! Jp2a video

OUTDATED! Jp2a video

AAlib video

OUTDATED! Libcaca video

360 ASCII panorama

Software


Other ...


Hero4 black fisheye correction using kdenlive.

Linux to cifs/smb share rsync.

AMDGPU-PRO and Vega 56 setup on my Ubuntu 16.04.

Back to traditional Vim settings.

Virtualbox: time sync and encrypted VM commandline start.



Youtube 360Cities

regulation-internal


ASCII images and video with jp2a. OUTDATED!

New script is using Imgkit.



Jp2a video:



http://youtu.be/7t9YCcd6DR4


HowTo.


Script - version 1.

5 or 6 fps. Simplified encoding without cropping and audio.

Might it work out of the box? (...)


    
  vid="ascii-train.mp4" ;

  aud=$( echo $vid | sed '1,$ s/^\(.*\)\.\(.*\)$/\1/' ) ;
  rm *.tga *.svg *.png *.html *.jpg *.tga *.log *.jpeg *.xwd *.JPG ;

  ffmpeg -i $vid -r 25 -f image2 %7d.jpg ;

  for line in $( ls *.jpg )
  do
          #echo $line ;
          Jp2A=$( echo $line | sed '1,$ s/\.jpg//' ) ;

          nipe=$( echo $Jp2A | sed '1,$ s/......\(.\)/\1/' ) ;
          nipe1=$( echo $Jp2A | sed '1,$ s/\(......\)./\1/' ) ;

          if (( $Jp2A == "0000001" ))
          then
                  echo -n $line ;
                  jp2a --width=200 --height=84 --background=light --colors --html-fontsize=10 $Jp2A.jpg --html > _$Jp2A.html ;
                  cat _$Jp2A.html | sed '1,$ s/body/body style=\"font-size: 100\%;line-height: 65\%;\"/g' > $Jp2A.html ;
                  rm _$Jp2A.html ;
                  xvfb-run --server-args="-screen 0, 1680x1200x24" ./webkit2png.py -o $Jp2A.JPG $Jp2A.html ;

                  i=2 ;
                  while (( i < 5 ))
                  do
                          echo -n " "$i ;
                          cp $Jp2A.JPG $nipe1$i.JPG ;
                          echo -n " ... $nipe1$i" ;
                          i=$(( $i + 1 )) ;
                  done
          fi

          if (( $nipe == "0" ))
          then
                  echo -n $line ;
                  jp2a --width=200 --height=84 --background=light --colors --html-fontsize=10 $Jp2A.jpg --html > _$Jp2A.html ;
                  cat _$Jp2A.html | sed '1,$ s/body/body style=\"font-size: 100\%;line-height: 65\%;\"/g' > $Jp2A.html ;
                  rm _$Jp2A.html ;
                  xvfb-run --server-args="-screen 0, 1680x1200x24" ./webkit2png.py -o $Jp2A.JPG $Jp2A.html ;

                  i=1 ;
                  while (( $i < 5 )) ;
                  do
                          echo -n " "$i ;
                          cp $Jp2A.JPG $nipe1$i.JPG ;
                          echo -n " ... $nipe1$i" ;
                          i=$(( $i + 1 )) ;
                  done
                  echo "" ;
          fi

          if (( $nipe == "5" ))
          then
                  echo -n $line ;
                  jp2a --width=200 --height=84 --background=light --colors --html-fontsize=10 $Jp2A.jpg --html > _$Jp2A.html ;
                  cat _$Jp2A.html | sed '1,$ s/body/body style=\"font-size: 100\%;line-height: 65\%;\"/g' > $Jp2A.html ;
                  rm _$Jp2A.html ;
                  xvfb-run --server-args="-screen 0, 1680x1200x24" ./webkit2png.py -o $Jp2A.JPG $Jp2A.html ;

                  i=6 ;
                  while (( $i < 10 )) ;
                  do
                          echo -n " "$i ;
                          cp $Jp2A.JPG $nipe1$i.JPG ;
                          echo -n " ... $nipe1$i" ;
                          i=$(( $i + 1 )) ;
                  done
                  echo "" ;
          fi

  done

  mencoder mf://*.JPG -mf fps=25:type=JPG -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2 -oac copy -o "$aud".avi
    



Top of Page


Script - version 2.

2.5 or 3 fps. Encoding with cropping and audio.

Final encoding will not work out of the box, I'm sure about ...

Please adjust parameter '-vf crop=1024:768:8:13' and prepare .mp3 audio (must have the same name as the video file, the same string)!



  vid="Small_marble_machine.flv" ;

  aud=$( echo $vid | sed '1,$ s/^\(.*\)\.\(.*\)$/\1/' ) ;
  rm *.tga *.svg *.png *.html *.jpg *.tga *.log *.jpeg *.xwd ;

  ffmpeg -i $vid -r 30 -s vga -f image2 %7d.jpg ;

  for line in $( ls *.jpg )
  do
          #echo $line ;
          ascii=$( echo $line | sed '1,$ s/\.jpg//' ) ;

          nipe=$( echo $ascii | sed '1,$ s/......\(.\)/\1/' ) ;
          nipe1=$( echo $ascii | sed '1,$ s/\(......\)./\1/' ) ;

          if (( $ascii == "0000001" ))
          then
                  echo -n $line ;
                  jp2a --width=128 --height=64 --background=light --colors --grayscale --html-fontsize=10 $ascii.jpg --html > _$ascii.html ;
                  cat _$ascii.html | sed '1,$ s/body/body style=\"font-size: 130\%;line-height: 60\%;\"/g' > $ascii.html ;
                  rm _$ascii.html ;
                  xvfb-run --server-args="-screen 0, 1280x1024x24" ./webkit2png.py -o $ascii.png $ascii.html ;

                  i=2 ;
                  while (( i < 10 ))
                  do
                          cp $ascii.png $nipe1$i.png ;
                          echo -n " ... $nipe1$i" ;
                          i=$(( $i + 1 )) ;
                  done
          fi

          if (( $nipe == "0" ))
          then
                  echo -n $line ;
                  jp2a --width=128 --height=64 --background=light --colors --grayscale --html-fontsize=10 $ascii.jpg --html > _$ascii.html ;
                  cat _$ascii.html | sed '1,$ s/body/body style=\"font-size: 130\%;line-height: 60\%;\"/g' > $ascii.html ;
                  rm _$ascii.html ;
                  xvfb-run --server-args="-screen 0, 1280x1024x24" ./webkit2png.py -o $ascii.png $ascii.html ;

                  i=1 ;
                  while (( $i < 10 )) ;
                  do
                          cp $ascii.png $nipe1$i.png ;
                          echo -n " ... $nipe1$i" ;
                          i=$(( $i + 1 )) ;
                  done
                  echo "" ;
          fi
  done

  mencoder -audiofile "$aud".mp3 mf://*.png -mf w=1024:h=768:fps=30:type=png -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2 -vf crop=1024:768:8:13 -oac copy -o "$aud".avi
    


Top of Page