Category Archives: Linux General

Notes which apply to all flavours of Linux systems

Speeding up and reducing resolution of videos

Sometimes it is necessary to speed up videos and/or reduce the resolution. This will typically result in a much small file size. ffmpeg and avconv allow video file manipulation on the command line.

These commands work on Debian 10, and will likely work on Ubuntu and other Linux distributions.

Speed up video, 2× speed:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
Reduce resolution down to 1280×720:
avconv -i input.mp4 -s 1280x720 output-small.mp4

Note that the metadata of the video, such as the resolution, can be read with the utility:
mediainfo

Mounting Android phone over USB on Debian

Debian Stretch

Using the following steps an Android phone can be mounted over USB by a Debian Linux system.

  • apt-get install jmtpfs
  • connect phone and select data transfer over USB
  • jmtpfs /mnt/phone

At this point, my phone prompts me whether or not to allow this connection. I select allow, but it is too late for the computer and any attempts to browse the directory /mnt/phone result in i/o errors. Unmounting and remounting without changing anything on the phone and leaving it connected, is a work-around for this issue.

  • umount /mnt/phone
  • jmtpfs /mnt/phone

Do work.

  • umount /mnt/phone

Vim – disable mouse mode

Newer versions of vi/vim included with Debian Stretch and later have the mouse mode enabled, which prevents traditional copy and paste from being used – the ability to highlight text and then middle-click to paste.

To re-enable this behaviour so that the middle-click can be used, enter the following line into your ~/.vimrc file:

set mouse=r

Iperf – multicast IPv4

Using Iperf version 2.0.9 on Debian (Stretch) it’s possible to test networks using a multicast connection.

On the receiving end execute the command:
iperf -s -u -B 239.1.1.10 -i 1

On the sending end execute the command:
iperf -c 239.1.1.10 -u -T 3 -t 10 -i 1 -b 100M

This will run a bandwidth test using UDP traffic at 100Mbps.

Note, if your system is multi-homed you must make sure your multicast traffic is routed out of the correct interface. For example:
ip route add 224.0.0.0/4 dev eth0

Bash – Internal Field Separator (IFS)

By default in Bash, the Internal Field Separator (IFS) is a ‘ ‘ character.

This is used to determine how bash splits text input into different fields. For example:

for file in *.jpg; do echo $file; done

will output each jpg filename on a separate line, unless there are spaces used in the filename.

For a more complete solution, change the IFS to the new line character and list each filename on a new line:

IFS=$'\n'
for file in `ls -1 *.jpg;` do echo "$file"; done

Of course the above doesn’t really achieve much, but it might be used as part of a simple script to resize images:

IFS=$'\n'
for file in `ls -1 *.jpg`; do convert "$file" -resize 200 "thumb-$file"; done