ffmpeg to convert MP4 files to MKV files with the libx265 video codec

When working with video files, there are times when you need to convert them from one format to another or modify them in some other way. One of the most popular tools for this is ffmpeg. This command-line tool can do a lot of things related to video processing, including conversion, resizing, cropping, and more. In this blog post, we will explain a script that uses ffmpeg to convert MP4 files to MKV files with the libx265 video codec.

The Script:

Here’s the script that we will be explaining:

for FILE in *.mp4; do
  echo -e "Processing video '\e[32m$FILE\e[0m'";
  ffmpeg -i "${FILE}" -analyzeduration 2147483647 -probesize 2147483647 -c:v libx265 -an -x265-params crf=0 "${FILE%.mp4}.mkv";
done;

Let’s break this script down line by line to understand what it does.

for FILE in *.mp4; do
...
done;

This line starts a loop that goes through all the files in the current directory that have the “.mp4” extension. The loop will execute the commands inside the “do” and “done” keywords for each file that matches this pattern.

echo -e "Processing video '\e[32m$FILE\e[0m'";

This line uses the “echo” command to print a message to the console. The message includes the file’s name being processed, which is stored in the $FILE variable. The “\e[32m” and “\e[0m” are escape sequences that change the color of the text to green. This is just a way to make the message more visually appealing.

ffmpeg -i "${FILE}" -analyzeduration 2147483647 -probesize 2147483647 -c:v libx265 -an -x265-params crf=0 "${FILE%.mp4}.mkv";

This line runs the ffmpeg command to convert the current file from MP4 to MKV format using the libx265 video codec. Let’s break down each of the options:

  • “-i ${FILE}” specifies the input file. “${FILE}” is the name of the file being processed, which is stored in the $FILE variable.
  • “-analyzeduration 2147483647” and “-probesize 2147483647” are options that tell ffmpeg to analyze the entire file before starting the conversion process. This can help avoid some issues that can occur when processing large files.
  • “-c:v libx265” specifies the video codec for the output file. libx265 is a popular video codec that provides good quality at a smaller file size.
  • “-an” specifies that there should be no audio in the output file.
  • “-x265-params crf=0” sets the quality level for the video. A value of 0 means lossless compression, which is the highest quality possible.
  • “${FILE%.mp4}.mkv” specifies the name of the output file. “${FILE%.mp4}” removes the “.mp4” extension from the input file name, and “.mkv” adds the “.mkv” extension to the end.

Conclusion:

The script we’ve just explained is a simple example of how you can use ffmpeg to convert MP4 files to MKV files with the libx265 video codec. It uses a loop to process all the files in the current directory that match the “.mp4” pattern. The script also prints a message to the console for each file


Using nmap to scan a network and identify which hosts are alive

The command “nmap -sP 192.168.100.0/24” scans a network and identifies which hosts are alive (i.e., which IP addresses are being used) within the specified range.

In more detail, the “nmap” command is a widely used network exploration tool that can be used for tasks such as host discovery, port scanning, and service enumeration.

The “-sP” option tells nmap to perform a “ping scan,” where it sends an ICMP echo request to each host in the specified IP range and checks for responses. This method is typically faster than other scanning techniques because it only determines whether a host is up or not without gathering additional information about the host’s ports or services.

The “192.168.100.0/24” argument specifies the IP range to be scanned, specifically the subnet mask “255.255.255.0,” which corresponds to the range of IP addresses from 192.168.100.0 to 192.168.100.255. The “/24” suffix is a shorthand notation for the subnet mask.

Overall, the command “nmap -sP 192.168.100.0/24” is a helpful tool for network administrators or security professionals who need to identify which hosts are active on a particular network quickly. It can help to identify potential security vulnerabilities or unauthorized devices connected to the network.


Ubuntu Pi-hole DNS Fix: Pi-hole could not start DNS service after upgrading Ubuntu

Ubuntu is a widespread Linux distribution that has gained popularity over the years. One of the advantages of Ubuntu is its Long-Term Support (LTS) releases, which have been supported for several years and receive regular updates and security patches. Upgrading from one LTS release to another is a common task for Ubuntu users. However, sometimes things don’t go as planned, and some services may fail to start after the upgrade. In this blog post, we will explore one issue that Ubuntu users may encounter when upgrading from 18.04LTS to 20.04LTS or 22.04LTS and how to fix it.

The problem we will discuss is related to Pi-hole, a popular network-level advertisement and Internet tracker blocking application. Pi-hole uses DNS (Domain Name System) to stop unwanted traffic on your network. After upgrading from Ubuntu 18.04LTS to 20.04LTS or 22.04LTS, some users may encounter an issue where the DNS service for Pi-hole fails to start. The reason behind this is a broken symbolic link at /etc/dnsmasq.d/lxd.

LXD is a system container manager that allows users to run multiple isolated Linux systems (containers) on a single host. During the upgrade process, the symbolic link for LXD may become broken, causing the DNS service for Pi-hole to fail to start. Fortunately, the solution to this problem is simple. Users can remove the broken symbolic link by running the following command in the terminal:

sudo rm /etc/dnsmasq.d/lxd;

Once the broken symbolic link is removed, users can restart the DNS service for Pi-hole by running the following command:

pihole restartdns;

This command will restart the Pi-hole FTL (Faster Than Light) daemon, which handles DNS requests and blocks unwanted traffic.

In conclusion, upgrading from one LTS release to another is a common task for Ubuntu users. However, sometimes things may not go as planned, and some services may fail to start after the upgrade. One such issue that users may encounter is related to Pi-hole, where the DNS service fails to start due to a broken symbolic link at /etc/dnsmasq.d/lxd. Fortunately, the solution to this problem is simple, and users can fix it by removing the broken symbolic link and restarting the Pi-hole FTL daemon.


Unable to negotiate with IP port 22: no matching host key type found. Their offer: ssh-rsa

Secure Shell (SSH) is a cryptographic network protocol that is commonly used for secure data communication, remote command-line login, and other network services. The SSH command is used to remotely connect to a server or device and execute commands on that device. In this blog post, we will explain the following SSH command and when the extra parameters are needed.

ssh -p 22 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa user@host;

Breakdown of the SSH command

  • ssh: The command to initiate a Secure Shell connection to a remote host.
  • -p 22: The -p option specifies the port number that SSH should use to connect to the remote host. In this case, the port number is 22, which is the default SSH port number.
  • -o HostKeyAlgorithms=+ssh-rsa: The -o option allows the user to set SSH options. In this case, the option HostKeyAlgorithms specifies the key exchange algorithm that should be used for the connection. The +ssh-rsa parameter adds the ssh-rsa algorithm to the list of acceptable algorithms.
  • -o PubkeyAcceptedKeyTypes=+ssh-rsa: Similar to the previous parameter, this option specifies the type of public key that will be accepted for authentication purposes. The +ssh-rsa parameter adds the ssh-rsa key type to the list of acceptable key types.
  • user@host: Specifies the username and hostname of the remote machine to connect to.

When are the extra parameters needed?

The extra parameters in this SSH command are used to specify the key exchange and authentication algorithms that are acceptable for the SSH connection. This is important because older, less secure algorithms can be vulnerable to attacks. By specifying only the more secure algorithms, you can help ensure that your connection is as secure as possible.

The specific parameters used in this command are not always necessary, but they can be useful in certain situations. For example, if you are connecting to an older SSH server that uses weaker encryption algorithms, you may want to specify only the stronger algorithms that are supported by both the server and your client. Similarly, if you are connecting to a server that requires a specific type of public key for authentication, you can specify that key type using the PubkeyAcceptedKeyTypes option.

In general, it’s a good idea to use the most secure algorithms that are supported by both your client and the remote server. This can help ensure that your connection is as secure as possible and minimize the risk of unauthorized access or data breaches.

In conclusion, the SSH command is a powerful tool for remotely connecting to and managing servers and devices. By understanding the different parameters and options available, you can customize your SSH connections to meet your specific needs and ensure that your connections are as secure as possible.