Monthly Archives: June 2014

Videos auf dem Chromebook

Leider ist AC3 nur mit einer Lizenz zu genießen und kein Chromebook wird es möglich sein AC3 in einem Video abzuspielen. Das einzige was einem bleibt ist AC3 aus dem Video zu entfernen und durch ein anderes Format zu ersetzen.

Folgendes Script habe ich erfolgreich für MKV Dateien eingesetzt. Als erstes wird das AC3 extrahiert, in MP3 umgewandelt und wieder in die MKV Datei integriert. Anschließend AC3 entfernt. (gist)

#!/bin/bash
# script: convert AC3 to MP3 in MKV container
# author: bert2002 <s.wirth@itbert.de>

FILE=$1
FILENAME=$(basename $FILE mkv)
AC3AUDIO=$(mkvmerge --identify $FILE |grep "AC3" | awk -F':' '{print $1}' | awk '{print $3}')

mkvextract tracks $FILE $AC3AUDIO:${FILENAME}ac3
ffmpeg -i ${FILENAME}ac3 -acodec libmp3lame -ab 160k -ac 2 ${FILENAME}mp3

mkvmerge -o ${FILENAME}NEW.mkv $FILE ${FILENAME}mp3

MP3AUDIO=$(mkvmerge --identify ${FILENAME}NEW.mkv |grep MP3 | awk -F':' '{print $1}' | awk '{print $3}')
mkvmerge -o ${FILENAME}NEW.mkv.tmp -a $MP3AUDIO ${FILENAME}NEW.mkv && mv ${FILENAME}NEW.mkv.tmp ${FILENAME}NEW.mkv

Debian Wheezy auf einem Chromebook

Seit ein paar Tagen spiele ich mit einem HP Chromebook 11 herum und muss sagen, soweit bin ich eigentlich zufrieden. Nichtsdestotrotz darf man das Chromebook nicht als Notebook Ersatz sehen, sondern eher als Tablet Ersatz mit Tastatur und grösserem Bildschirm. Genau darin ist es gut. Es ist super einfach und schnell einzurichten und alle Daten fliesen zu Google. Wunderbar.

Nach ein paar Minuten herum spielen fehlte mir jedoch schon die bash und es musste eine Lösung her. Zum glück kann man Debian/Ubuntu als chroot installieren und beides parallel betreiben. Also als erstes das Chromebook in den Entwickler Modus packen:

 Esc + Refresh + Power Off

Dann kommt man zu einer schrecklichen Nachricht. Diese kann man jedoch getrost ignorieren und “Strg + D” drücken. Anschließend wird das Chromebook neu gestartet und ein neues Image wird aus dem Internet gezogen und installiert. Sobald man eingeloggt ist, braucht man eine Shell. Die “crosh” Shell bekommt man mittels “Strg + Alt + t”. Damit man aber in die richtige Shell kommt, muss man noch “shell” eingeben. Endlich!

Jetzt können wir unserer Chroot installieren. Ich habe dafür crouton benutzt und funktionierte einwandfrei:

# wget http://goo.gl/fd3zc
# sudo su -c crouton -r wheezy -t xfce

Den Anweisungen folgen und in ein paar Minuten hat man ein vollständiges Debian Wheezy in der Chroot mit XFCE4 installiert. Das kann man entweder über “sudo startxfce4” starten oder einfach in die chroot mittels “sudo enter-chroot”. Fertig!

Bitpay integration in PHP

Die letzten Wochen wollte ich in ein Projekt Bitcoins als bezahl Option einbauen und musste mich für einen Payment Anbieter entscheiden. Ich hatte Coinbase und Bitpay in meine engere Wahl genommen und am Ende fuer Bitpay entschlossen. Warum? Weil Bitpay Auszahlungen in die EU macht und Coinbase nur auf Amerikanische Konten. Diese Entscheidung wurde einem also relativ einfach genommen.

Jetzt ging es um die Integration der Bitpay API in den Shop. Die Seite benutzt keine Shop Software und somit musste ich die API selber in der Seite einbauen. Die Dokumentation ist eigentlich recht gut. Diese beinhaltet sehr gut wie man eine Rechnung erstellt. Ich finde die “callback” Funktion wird nicht gut beschrieben und ich musste erst einmal ein bisschen ausprobieren. Als erstes, es gibt keine Testumgebung und somit muss man mit echten Bitcoins seine Implementierung testen. Irgendwie schreckt das eigentlich schon direkt ab.

Zum glück bietet Bitpay eine eigene library für PHP an. Somit musste man sich nicht um wirklich alles kümmern. Die Konfiguration in bp_options.php sollte verständlich sein und ich gehe hier nicht auf diese ein.

Erstellen einer Rechnung:

 <?php
// bitpay
require 'bp_lib.php';


$post_data = array(
 'product' => $product
);

$addl_options = array(
 'itemDesc' => $description,
 'itemCode' => $product,
 'currency' => $currency
);

$response = bpCreateInvoice(null, $price, $post_data, $addl_options);
if(!empty($response)){
 $bitpay = $response["url"];
 if ($bitpay) {
 header("Location: $bitpay");
 }

?>

Die $post_data können später im callback verarbeitet werden, die anderen Werte sind nur für die Rechnung oder um die Umrechnung korrekt durchzuführen.

Verarbeiten des Callbacks:

Es hat also jemand ein Produkt gekauft und wir werden über dieses wunderbare Event informiert. Die Callback URL musste man vorher in den Optionen festlegen:

 <?php
// bitpay
require 'bp_lib.php';
$BITPAY_KEY = "YOUR_BITPAY_KEY";

$response = bpVerifyNotification( $BITPAY_KEY );
$id = $response['id'];
$url = $response['url'];

$product = $response['posData']['product'];
$status = $response['status'];
$btcPrice = $response['btcPrice'];
$price = $response['price'];
$currency = $response['currency'];
$btcPaid = $response['btcPaid'];
$rate = $response['rate'];

?>

Eigentlich sehr einfach und man kann die Daten weiter verarbeiten. Die Hürde war an der stelle vorhanden, das man echte Bitcoins benutzen musste. Ich hoffe das Bitpay das bald ändern wird und ggf. werden dann mehr Shops auf Bitpay setzen. Wenn die Tests ordentlich verlaufen wird es bald einen Shop mehr geben der Bitcoins als Option anbietet.