YouTube: Your videos will process faster if you encode into a streamable file format.

When uploading long-form video to YouTube, I always get this warning message:

Your videos will process faster if you encode into a streamable file format.

From what I can gather from around the web, this means that YouTube will try to encode chunks from the video as it is still uploading. This also allows them to spread out this single encode job to multiple machines, optimizing load across their nodes and speeding up the process.

In order to do that, they need to know how the data inside the file is laid out. This information is stored in the moov atom of the video container. When locally encoding the file, this information only becomes available at the end of the encode and is therefore appended at the end of the file.

To move the moov atom to the front of the file, one may use the “Fast Start” option of the encoder. QuickTime and others do this in their GUI, ffmpeg users can use the -movflags faststart option, and one may use the qtfaststart script after encoding.

But: YouTube still gives me the warning with properly formatted files, there is no thumbnail during upload, and processing takes hours. Is there anything else I’m missing?

Update: I got a note from someone who should know, thanks!

Moving the moov atom to the front using qtfastart should do it.

There could be a youtube bug.

There could be an issue with [you] doing it wrong.

Stick h.264 + aac in an mpeg 2 transport stream or a mkv file, and try that?

So for now I consider YouTube’s MP4 ingest to be buggy. And indeed, using MKV files or MPEG2 Transport Streams containing H264 + AAC works much faster and yields no warning from YouTube during upload.

Here’s a sample ffmpeg command to losslessly copy streams from an existing MP4 file to MKV. There’s no re-encoding involved and therefore this file “conversion” runs at ~100.000 fps on my Mac.

ffmpeg -i video.mp4 -acodec copy -vcodec copy video.mkv

Fastspring für digitalen Vertrieb

Ich habe für den neuen englischen Lightroom-Workshop (wieder) nach einer Lösung gesucht, die den Vertrieb etwas erleichtert und bin auf Fastspring gestoßen.

Ich hatte die Lösung wohl schon einmal ins Auge gefasst, ich hatte noch einen fünf Jahre alten Account, wie mir der Support mitteilte. Mac User haben vielleicht das Frontend schon einmal beim Kauf von iStat Menus oder anderer Shareware gesehen. (Sagt man noch Shareware?)

Und soweit ich das nach der Einrichtung des Produkts und den ersten verkauften Workshops jetzt beurteilen kann, bin ich ziemlich begeistert von Fastspring:

  • Wahlfreiheit, den Shop selbst zu machen, und nur den Checkout zu nutzen, oder komplett alles von Fastspring machen zu lassen
  • Fastspring ist US-basierter Reseller und kümmert sich um die richtige Besteuerung aus US-Sicht. Für EU-Kunden wird die jeweils lokale MwSt. berechnet und abgeführt
  • Eigene Preis- und Rabattskripte in Javascript
  • Darüber z.B. auch Zahl-was-du-willst-Modus umsetzbar, mit Minimalpreis
  • Runde Preise für Fremdwährungen
  • Kreditkarte, Paypal und Banküberweisung als Zahlungsweg
  • Flexible Coupons
  • Fulfillment: Ein oder mehrere Downloads können an das Produkt angehängt werden.
  • Downloads können geupdated werden. Sofort. Kein Bergwerk.
  • Ebenso Lizenzcodes, die on demand erzeugt werden oder als Liste hochgeladen werden.
  • Webhooks sagen dem eigenen Server auf Wunsch bescheid
  • Fairer Preis: 8,9%, inklusive Zahlung und Download

Und vieles mehr – Fastspring macht da unter der Haube viel richtig, leider sieht die Website aus wie 1997 und so gar nicht nach Next-gen E-Commerce.

Print Serialized Coupons With LaTeX

Get really random coupon codes

from random.org, save as coupons.csv. First line needs to be column title, “Coupons”.

Create PDFs with LaTeX

https://gist.github.com/thetzel/8147211

There are a ton of modules to mail merge documents in LaTeX, but they’re overkill. csvtools simply supplies every column as a macro with \insert<Columnname>

My coupons are only 12x12cm in size, which the printer would not accept, so I set paper size to A4 and padded the paper tray with a little bit of cardboard.

Print!

coupons

Quick and Dirty HyperDeck Studio to H.264

ffmpeg -f concat -i files.txt -map_channel 0.1.0:0.1 -map_channel 0.1.1:0.1  -filter:a "aformat=channel_layouts=0xFFFF" -vcodec libx264 -preset ultrafast -r 25 -pix_fmt yuv420p -y output.mp4 

This will discard 14 of the 16 audio tracks, join the Capture000?-chunks, reencode ProRes to H.264, work around a bug in recent ffmpeg versions and is really fast (4x real time on a recent laptop).

Bus Push 2.0

Bus Push

Herbstputz auch bei den internen Apps: Raus mit der Leinentextur und rein mit ein paar neuen Funktionen. Mit dem heutigen Update der Bits und so App läuft jetzt der Push auch über Parse.com und kann bequem über die Bus Push App angesteuert werden. Ein paar von euch haben beim Test heute nachmittag unter Umständen eine Nachricht bekommen…

Oh, und ein neues Icon hat sie auch bekommen:

Icon

FaceTime Sandbox Entitlements

So, your fancy webcam or video capture card won’t work as a video input for FaceTime. Let’s take a look at why that happens.

sandboxd[768]: ([766]) FaceTime(766) deny mach-lookup com.blackmagic-design.desktopvideo.DeckLinkHardwareXPCService

The driver for the video capture device appears to be implemented as an XPC Service and FaceTime is denied access by the sandbox. But don’t Apple’s own apps get special entitlements for stuff like this? Let’s take a look:

$ codesign -dvvv --entitlements - /Applications/FaceTime.app/
...
<key>com.apple.security.temporary-exception.sbpl</key>
<string>(allow mach-lookup (global-name-regex #"^[0-9]+$"))</string>

So there is an exemption for FaceTime that allows mach-lookups for services that match this regex, but it will only match numeric-only strings. Obviously, this won’t match “com.blackmagic-design.desktopvideo.DeckLinkHardwareXPCService” or any other service named in reverse domain notation.

Let’s try ripping out the code signature, and fiddling with the entitlement to say:

<string>(allow mach-lookup (global-name-regex #"^******$"))</string>

Restart FaceTime, and indeed it will detect the video device with the correct resolution and frame rate (still no picture, but the mach-lookup went through!). Also, after messing with the signature, FaceTime pulls a Skype and will not establish any connection. So, no real success in getting the device to work, but a little win in at least getting around the bad regex for the mach-lookup.

#bus350 Onlineticket

In diesen Minuten sollten sich die Türen zum Carl-Orff-Saal in München öffnen. Um vorbeizukommen, ist es jetzt wahrscheinlich zu spät, aber ihr seid herzlich eingeladen, online zuzusehen.

#bus350 Onlineticket jetzt kaufen

One-Page Checkout

Das Webdesign der Bits und so-Seite ist mittlerweile gehörig angestaubt. Da müsste mal jemand was machen.

Ein kleiner erster Schritt ist jetzt die neue Checkout-Seite für das #bus350 Onlineticket.

bus350ot-wide

Die Seite baut auf dem Bootstrap-Framework von Twitter auf. Das bringt viele Nettigkeiten mit, wie ein fertiges Grid-System, das Jony zwar die Tränen in die Augen treiben würde wie sonst nur Filzunterwäsche unter dem Weihnachtsbaum, aber es ist doch wunderbar einfach zu benutzen, um Kästen auf verschieden breiten Geräten hübsch anzuordnen.

bus350ot-narrowEin und dieselbe Seite sieht sehr unterschiedlich auf iPhone, iPad und iMac aus. Und wo Inhalte abgeschnitten werden, setze ich kleine Buttons, um an die nächste richtige Stelle zu scrollen.

Außerdem:

  • Support für PayPal Express Checkout für Digitale Güter
  • Direkte Zahlung mit Kreditkarten via Paymill
  • Sofortüberweisung mit PIN und TAN der eigenen Bank
  • (und wer mag, kann alternativ auch iTunes-Rubbelkarten in der Bits und so App einwerfen)

Der Checkout findet komplett auf dieser einen Seite statt. Kein Warenkorb, kein Blödsinn, im Fall von der Kreditkartenzahlung ist der nächste Bildschirm nach dem Klick auf den Kaufen-Button die Seite mit dem personalisierten Onlineticket. Das würde ich mir öfter so wünschen. Das Humble Bundle ist da auch sehr hübsch gemacht.

Der Käufer bekommt keinen Account, sondern nur einen personalisierten, signierten Link, auf den er nach dem Kauf weitergeleitet wird. Per Mail wird der Link auch noch einmal verschickt. Das ist von Amazons S3 Authentifizierungssystem inspiriert und ein wenig adaptiert.

Für ein sicheres Gefühl™ klebt jetzt auch ein SSL-Zertifikat auf der Seite. Kreditkartendaten fasse ich gar nicht erst an, das erledigt Paymill. Und bei den anderen Diensten passiert die Kommunikation von Kundendaten auch sowieso immer verschlüsselt zwischen den Servern, und nicht mit dem Browser und der Checkout-Seite.

Nächster Schritt: die bitsundso.de komplett neu machen. Nach der #350. Die ist morgen. Kommt alle!

iPhone Passcode setzen und entfernen

Noch eine Handvoll Tipps zum iPhone-Passcode:iphoneistdeaktiviert

Ist kein Passcode gesetzt, und das Gerät geht verloren, lässt er sich nachträglich via iCloud / Find my iPhone setzen.

Ist ein Passcode gesetzt, wurde vergessen und soll entfernt werden, gibt es laut dem Supportdokument drei Möglichkeiten:

  • Gerät hat ein iTunes-Backup: Unter Umständen (wann genau?) ist eine Wiederherstellung möglich
  • Gerät hat kein iTunes-Backup: iPhone in den Recovery-Mode versetzen und wiederherstellen, die Daten gehen verloren
  • Kein iTunes: Fernlöschung durch Find My iPhone, oder Selbstlöschung nach 10 Fehlversuchen, falls aktiviert.

Wie hier der Einfluss von Activation Lock auf iOS 7 ist, ist noch nicht öffentlich bekannt.

Es gibt aber noch eine angenehmere Möglichkeit, den Passcode zurückzusetzen, die bisher über iCloud oder iTunes nicht angeboten wird:

Ist das iPhone in einer Enterprise-Umgebung, z.B. dem MDM von OS X Server angemeldet, kann der Passcode von diesem MDM-Server aus zurückgesetzt werden. Ohne Wiederherstellung, Backups und Datenverlust. Eventuell ist das eine Option, sich für einmalig 18 Euro von diesem Risiko freizukaufen. Die Einrichtung ist nicht völlig trivial, aber durchaus machbar, wenn man die Dokumentation befolgt.