Articles tagged with Video:

  • Eyepot - Programming

    Let's program the robot I built in the previous article!

    The Eyepot works by using in conjunction a Raspberry Pi Zero W and an Arduino Pro Mini connected by a serial link. Therefore, we'll write the Arduino code first, then a Python program for the Raspberry Pi. Then, we'll setup remote control from a web browser.

    You can find the entire source code for the project licensed under GPLv3 on my repository on GitHub.

    The finished Eyepot moving

    The finished Eyepot moving

    Arduino program

    The Arduino Pro Mini is responsible for driving the eight servos of the legs. Commands to specify target angles are sent from the Raspberry Pi through a serial link.

    The custom serial protocol is text-based and quite simple. It can easily be typed manually when debugging, but it is still compact enough to allow short transmission times even at low bitrates. Each line contains a one-character command, an optional space, and an optional parameter as a base-10 integer. Implemeted commands are as follows:

    • 0 to 7: store target angle for corresponding servo (0 to 7)
    • R: reset stored target angle to default for each servo
    • C: commit stored target angles (apply the stored angle for each servo)

    So, for instance …


  • Streaming from Linux to a Chromecast

    The Google Chromecast is an impressive little device. If you haven't encountered one already, it's a small HDMI dongle which, when connected to a TV screen, allows to play audio, video, or visual content of a compatible webapp from a computer or mobile device.

    Google Chromecast

    However, it is primarily designed to only stream content from the Web, and not from your computer itself, which follows the current trend that everything should be "in the cloud" and is infuriatingly limiting. As you can guess, that dubious ideology is not my cup of tea.

    Luckily, the excellent library PyChromecast allows to control the device from a Python program. Yet the issue is that it only works for codecs the Chromecast is able to decode natively, i.e., H.264 and VP8. Besides, the Chromecast is only able to handle a few containers like MP4 and WebM. What if you want to stream other video formats ? Besides, what if you want to stream dynamically-generated content, for instance your screen or a live video from a camera ?

    Introducing ffmpeg!

    ffmpeg -i test.avi -c:v libvpx -c:a libvorbis -f webm out.webm
    

    In this example, ffmpeg reads test.avi, recodes the video stream as …


Categories
Tags
Feeds