Archive

Archive for November, 2010

Merge avi files with ffmpeg on Mac OS

November 22, 2010 1 comment

Goals: Create one (and big) avi file from multiple or more avi files.
Our option:

  • Use Quicktime Pro, it’s easier but you need extra dollar to buy the account 😦
  • Use FFmpeg πŸ™‚

Install FFmpeg, i’m using homebrew package:

$ brew install ffmpeg

Or if you are using Macports, simply run:

$ port install ffmpeg

OK, for example we will merge file video cd1.avi and cd2.avi. Each have 700MB size.
First, we concatenate them with the magic of cat command.

$ cat cd1.avi cd2.avi > cd_all.avi

Now, you’ll get cd_all.avi with 1.4GB. But wait? is it finish yet (where’s the ffmpeg?), if you open up and watch the cd_all.avi file you’ll get blank screen when the cd2 part is on or even not get to cd2 part, it’s because the video index is broken or only see the first part (cd1). So, it’s ffmpeg job to re-index it πŸ™‚

$ ffmpeg -i cd_all.avi cd_all_reindexed.avi

Opps, i got “timebase not supported by mpeg 4 standard” error. It’s because ffmpeg cannot set the fps (frame per second) automatically from our input, so we need to set it manually, let’s use the default value 25.

$ ffmpeg -i cd_all.avi -r 25 cd_all_reindexed.avi

OK, it’s work, let’s wait about 5-10 minutes (depend on file size) to get ffmpeg finish the encoding and reindexing.

Opps, the encoding stop on “video:177642kB audio:57082kB global headers:0kB muxing overhead 4.904114%” and i only got 250MB and video quality is really bad, there’s something wrong. Ahh, we need to add sameq parameters to preserve same quality as input.

$ ffmpeg -i cd_all.avi -r 25 -sameq cd_all_reindexed.avi

It’s works πŸ™‚ But, the filesize is become 1.75GB, there should be a way to set another paramater to make it 1.4GB (normal size), but let’s discover later :).

Reference:

Advertisements
Categories: Tips 'n trick Tags: ,

Menambahkan user hotspot Mikrotik secara massal

November 5, 2010 15 comments

Bagaimana jika Anda ingin menambahkan user hostpot Mikrotik?
Jawabannya mudah sekali, gunakan Winbox, tinggal klak-klik beberapa kali, selesai.

Tapi, bagaimana jika user hostpot yang ingin ditambahkan berjumlah ratusan atau mungkin ribuan?
Apakah Anda rela mengklak-klik ratusan atau ribuan kali? pasti tangan bakal pegel, dan ini sangat tidak efisien.

Nah, untuk mengatasi hal ini, Mikrotik telah menyediakan API (Application Program Interface) yang bisa digunakan untuk mengakses perintah-perintah mikrotik dari luar environment (lingkungan) mikrotik itu sendiri. Kita bisa menggunakan banyak bahasa pemrograman, antara lain PHP, Python, C, Ruby, Java, dan masih banyak lagi.

Dalam hal ini kita akan menggunakan PHP, pertama-tama unduh berkas Mikrotik API PHP Class (Rename menjadi file PHP), ini adalah PHP Class untuk menggunakan Mikrotik API, diambil dari halaman resmi Mikrotik.

Selanjutnya buat koding PHP untuk menambahkan User Hotspot (simpan dalam file tambah_user_hotspot.php).

require('routeros_api.class.php');

// Ubah sesuai setting mikrotik hotspot Anda
define('MIKROTIK_IP', '192.168.88.1');
define('MIKROTIK_USERNAME', 'admin');
define('MIKROTIK_PASSWORD', '');
define('SERVER', 'all');
define('PROFILE', 'default');

$API = new routeros_api();

// Aktifkan debug
// $API->debug = true;

if ($API->connect(MIKROTIK_IP, MIKROTIK_USERNAME, MIKROTIK_PASSWORD))
{
	// Data user dan password hotspot
	$user = array(1 => array('name' => 'user1', 'password' => 'pass1'),
				  2 => array('name' => 'user2', 'password' => 'pass2'),
				  3 => array('name' => 'user3', 'password' => 'pass3'),
				  4 => array('name' => 'user4', 'password' => 'pass4'),
				  5 => array('name' => 'user5', 'password' => 'pass5'),
				  );

	foreach($user as $tmp)
	{
		$username="=name=";
		$username.=$tmp['name'];

		$pass="=password=";
		$pass.=$tmp['password'];

		$server="=server=";
		$server.=SERVER;

		$profile="=profile=";
		$profile.=PROFILE;

	   	$API->write('/ip/hotspot/user/add',false);
	   	$API->write($username, false);
	   	$API->write($pass, false);
	   	$API->write($server, false);
		$API->write($profile);

		$ARRAY = $API->read();

		// Debug variable (return value)
		//echo "<pre>";
	   	//print_r($ARRAY);
		//echo "</pre>";
	}
   	$API->disconnect();
}

Beberapa point yang perlu diperhatikan:

MIKROTIK_IP, adalah alamat IP dari Mikrotik yang dituju.
MIKROTIK_USERNAME, adalah username untuk login ke Mikrotik.
MIKROTIK_PASSWORD, adalah password untuk login ke Mikrotik.
SERVER, adalah parameter server untuk user yang bersangkutan, all berarti user ini active untuk semua hotspot (jika Anda memiliki lebih dari satu Hotspot).
PROFILE, adalah profile untuk user yang bersangkutan, biasanya digunakan untuk kategori user (pembatasan bandwidth, dan lainnya)

Variable $user adalah array data yang berisi informasi user dan password hotspot yang akan kita tambahkan ke Mikrotik, dalam hal ini saya menggunakan array biasa, Anda bisa menggunakan/mengambil data dari tempat lain, misalnya excel/csv atau query dari database lain.

Selanjutnya nyalakan servis API pada mikrotik, karena memang fitur API secara default tidak aktif. Secara default juga API menggunakan port 8728.

Masuk ke mikrotik dan jalankan perintah:

/ip service enable api

Selanjutnya jalankan skrip tambah_user_hotspot.php dan lihat hasilnya, Anda juga dapat menyalakan debug untuk melihat lebih jelas apa yang terjadi.

Selamat mencoba πŸ™‚

Referensi: http://wiki.mikrotik.com/wiki/Manual:API

Categories: Tips 'n trick Tags:

Aplikasi Android untuk BNI SMS Banking

November 4, 2010 43 comments

Update versiΒ 3.0

Peringatan: Aplikasi ini bukan aplikasi resmi dari BNI (Bank Negara Indonesia), jadi saya tidak bertanggung jawab jika terjadi kesalahan dalam penggunaan aplikasi ini. Use it at your own Risk!!!

Aplikasi ini digunakan untuk melakukan transaksi dengan BNI SMS Banking pada handheld berbasis sistem operasi Android. Aplikasi ini membantu Anda dalam melakukan transaksi tanpa harus menghapal sintaks SMS, transaksi ditampilkan dalam menu interaktif layaknya Anda menggunakan mesin ATM. Transaksi yang didukung antara lain cek saldo, transfer, cek tagihan, pembayaran, dan isi ulang pulsa (topup).

Screenshot

Tampilan awal

Tampilan awal

Cek Tagihan

Cek Tagihan

Transfer

Transfer

Konfirmasi transfer

Konfirmasi transfer

Isi pulsa

Isi pulsa

Isi pulsa - Nominal pulsa

Isi pulsa – Nominal pulsa

Isi pulsa - Nomor tujuan

Isi pulsa – Nomor tujuan

Pengiriman SMS

===================================

Instalasi
Berhubung saya belum punya akun di Android Market (Ada yang mau modalin? :P), jadi aplikasi masih bersifat self-signed dan harus diinstall dari apk installernya. Pastikan setting Unknown sources (Allow install of Non-Market applications) tercentang pada Application settings Anda, lalu download BNI_SMS_Banking.apk (versi 1.1) dan install seperti biasa.

Penting: Setelah Anda men-download installer tersebut, hitung MD5nya, jika bukan a6b5e408fc7c1dc5ceb68dd42dd9cfc6, maka program tersebut sudah mengalami perubahan dan jangan lakukan instalasi, karena kemungkinan installer corrupt atau diubah orang lain. Jangan men-download installer ini dari tempat lain atau yang tidak diketahui asal usulnya, karena kemungkinan sudah diubah oleh orang lain, yang mungkin saja berniat jahat.

Perintah yang valid
Kode perintah BNI SMS Banking yang valid saat aplikasi dibuat adalah perintah BNI SMS Banking per tanggal 10 Juni 2010. Untuk melihat perintah apa saja yang sudah berhasil dijalankan dalam aplikasi ini, silahkan melihat ke halaman BNI SMS Banking v.1.1 code.

Peringatan: Kode perintah bisa saja sewaktu-waktu berubah dari BNI sendiri dan membuat aplikasi ini tidak valid lagi.

Penyimpanan password
Demi keamanan, password SMS BNI Anda tidak akan disimpan dalam aplikasi ini, karena akan sangat berbahaya jika ada orang yang bisa mengakses ke handphone Anda. Jadi, password hanya akan disimpan sementara, sampai Anda selesai menggunakan aplikasi ini.

Penting: Meng-klik tombol close dari handphone Anda tidak akan mengakhiri aplikasi ini, Anda harus menggunakan tombol Logout untuk mengakhiri aplikasi dan menghapus password yang tersimpan.

Sent Item
SMS yang dikirim ke BNI (3346) tidak akan disimpan di dalam Sent Item, sehingga Anda tidak perlu menghapus Sent Item secara manual dan keamanan Anda terjaga.

Input password BNI SMS Banking

Input password BNI SMS Banking

Logout

Logout

===================================

Keterbatasan
Saat ini belum ada fungsi validasi untuk input yang diberikan user, contohnya user tidak mengisi apa-apa (kosong) di kolom input, maka kemungkinan apiikasi akan hang. Jadi pastikan Anda mengisi semua input box yang dibutuhkan.

TODO (Fitur ke depan)

  • Validasi input
  • History transaksi
  • Menangkap SMS yang masuk dari BNI (3346), sehingga user tidak perlu membuka inbox lagi.
  • Kirim pulsa dengan nomor dari phonebook.
  • Ada ide/masukan yang lain? πŸ˜€

Bagi yang ingin melihat source code (kode sumber) dan perkembangan project ini, bisa dilihat di halaman Github BNI SMS Banking.

Lisensi dari project ini adalah GNU GPL v3 <http://www.gnu.org/licenses/gpl-3.0.txt>

Selamat mencoba πŸ™‚

Categories: Open Source Tags: ,