Live-Streaming, MicroBroadcasting Redux

Live-Streaming apps for smartphones have seen a surge in interest in the last year.  Meerkat and Periscope (now Twitter) leapt onto the scene nearly at the same time and captured the imagination of a new crop of people anxious to share their experiences as they are happening – in real time.

Why the sudden interest?

Continue reading Live-Streaming, MicroBroadcasting Redux

Build ffplay and ffmpeg 2.6.2 on Mac OSX 10.10.2

Every few years we need ffmpeg and ffplay for some little job. The ffmpeg suite is my go-to swiss-army knife for whipping video into shape. Unfortunately, the compilation process is challenging. Here is a summary of the recipe I used to build these tools on OSX 10.10.2. It was not exactly straightforward. That’s why I wrote it down.

To jump to the end, the most difficult part was getting SDL-1 to build. (https://www.libsdl.org) I tried using SDL-2 with ffplay, but that combination did not compile correctly. ffplay requires SDL-1, and SDL-1 required some manual edits to get it installed.

Continue reading Build ffplay and ffmpeg 2.6.2 on Mac OSX 10.10.2

Nuitka Compiler for Python

I like developing using Python.  I like its program structure, its performance and the way it supports coroutines.  What I don’t like is distributing Python programs.  Python installations from one computer to the next are notoriously different from one another.  I may have two seemingly similar Linux computers running the same version of Python and a program may run well on one and may not find a dependency on another.

While the language and run-time system are well-defined, the way in which search-paths are set up and resolved does not seem to be. (See http://stackoverflow.com/questions/25715039/python-interplay-between-lib-site-packages-site-py-and-lib-site-py). Virtualenv aims to help, but the contract between Python and “the system” seems confusing.  The result for me has that it has been difficult to produce shrink-wrapped programs for distribution from Python source.

The types of programs I’ve developed usually have dependencies on locally-developed SWIG-generated shared-libraries (.so), so my case may not be typical.  (However, it is interesting :-)  I’ve looked at using Cython to compile Python modules, and it works well for building an extension module in C, or for extending a C program with Python.  However, if your aim is software construction using Python for the distribution of a complete application, then Cython seems lacking.

Nuitka

Nuitka (http://nuitka.net) is a “Python Compiler.”   Nuitka can compile just one or a few modules, or it can compile an entire Python program.  It takes a higher-level view of the job of compiling an entire project.
Continue reading Nuitka Compiler for Python

Network MIDI Updates and Changes in OSX Yosemite

Apple’s Yosemite has received a lot of attention for the addition of Bluetooth MIDI over Bluetooth LE.  What has gotten less attention are the updates to Network Midi.  Here are a few things I have learned.

Network Midi has been included in Mac OSX since about 2004.  It allows computers to find one another over the LAN via Bonjour and to join each others’ MIDI sessions.  The protocol spoken by Network MIDI is defined in a IETF doc: RFC 6295, which was ratified in 2011.  An earlier version of this document (RFC 4695) was ratified in 2006.  It seems that this protocol standard has had a long and very slow evolution.

Apple’s implementation of Network MIDI has been sometimes criticized as “buggy.”  I myself had been able to isolate a bug in the implementation of the protocol.  I was delighted to find that Yosemite not only fixes that one specific bug, but seems to include a Network MIDI stack with entirely different characteristics from the previous versions.

  • Receive latency is much lower overall.
  • An erroneous delta timestamp format has been fixed (comex algorithm).
  • Realtime commands are sent (active sense, MTC).

I’ll keep this post updated as I learn more.