Instalasi OpenCV 2.3.1a dan ffmpeg 0.8.15 di Ubuntu 12.04 dengan Kompilasi Manual

Bismillahirrahmanirrahim.

Saya telah menginstal OpenCV dengan baik dan sudah menulis dokumentasinya. Namun ternyata, instalasi OpenCV tersebut belum termasuk ffmpeg, sehingga apa pun kode sumber yang saya kompilasikan, saya tidak dapat memutar video di dalam aplikasi saya. Padahal saya perlu itu untuk kepentingan belajar. Salah satu sumber yang saya temukan, menyatakan bahwa sebab masalah tersebut adalah OpenCV belum dikompilasikan bersama ffmpeg ketika diinstal. Maka secara logis, OpenCV perlu dikompilasikan ulang dengan menyertakan ffmpeg. Tulisan ini, pengajaran kompilasi kode sumber, adalah mimpi lama saya ketika pertama kali menggunakan Linux dan senantiasa gagal, yakni saya ingin mengajari orang lain menginstal juga kalau saya sudah berhasil melakukannya. Berikut ini catatan saya dan semoga bermanfaat.

Pesan Pertama Saya

Akhirnya saya bisa menyampaikan ini. Yang wajib diperhatikan dalam melakukan kompilasi dan instalasi program dari kode sumber adalah 2 hal:

  1. Program-program alatnya (semisal kompiler, pustaka dasar, dan build tool-nya).
  2. Dependensinya.

Ujung-ujungnya, semua kembali ke 1 hal: dependensi. Intinya, lengkapi dulu seluruh dependensi yang diperlukan sebelum Anda melakukan kompilasi kode sumber. Instalasi program di Linux, pada seluruh jenis sistem manajemen paket, intinya cuma 1 ini: menyelesaikan dependensi. Pegang ini kuat-kuat, Anda akan mampu melakukan instalasi program dari kode sumber di Ubuntu. Pesan ini adalah pesan yang saya cari dan paling ingin saya sampaikan semenjak pertama kenal Linux.

Versi OpenCV dan Versi ffmpeg

  • OpenCV 2.3.1a cocok dengan ffmpeg 0.8.15 di Ubuntu 12.04 32 bit.
  • OpenCV 2.3.1a tidak cocok dengan ffmpeg 2.4.1.
  • OpenCV 2.3.1a tidak cocok dengan ffmpeg 1.1.14.
  • OpenCV 2.3.1a tidak cocok dengan ffmpeg 0.10.
  • OpenCV 2.3.1a tidak cocok dengan ffmpeg 0.5.14.
  • OpenCV 2.4.9 tidak cocok dengan ffmpeg 2.4.1

Maka yang digunakan adalah OpenCV 2.3.1a dengan ffmpeg 0.8.15. Ini perpaduan yang berhasil dikompilasikan ulang pada 24 September 2014 di Ubuntu 12.04. Tidak cocok yang disebutkan di atas adalah terjadinya gagal cmake ketika prosesnya mencapai ±30%. Anda tidak harus mengikuti saya, mengunduh banyak versi dan mencoba kombinasinya satu per satu (saya mulai melakukan ini pada pukul 05.30 dan akhirnya berhasil pada sekitar pukul 12.00 WIB).

Bahan-Bahan Dependensi

1. Dependensi Mutlak

Koneksi internet yang cepat dan stabil.

Anda memerlukannya untuk menginstal dependensi (beserta dependensi yang tidak terduga munculnya) dan memperoleh kode sumber.

2. Dependensi Umum


sudo apt-get build-essential cmake git checkinstall automake autoconf libtool

Catatan:

  1. Perintah instalasi ini adalah bekal untuk menginstal pustaka OpenCV maupun aplikasi-aplikasi lain setelahnya.
  2. Kenapa build-essential? Karena di dalamnya Anda memperoleh kompiler g++ dan pustaka-pustaka dasar C/C++. Itulah yang diperlukan oleh hampir seluruh program di Linux. Pendek kata: Anda punya build-essential, Anda bisa melakukan segalanya.
  3. Kenapa cmake? Karena cmake adalah program build, program untuk melakukan kompilasi dengan kompiler secara massal bersamaan. Karena yang namanya kode sumber itu lebih dari satu buah berkas .cpp/.h saja biasanya, dan didesain untuk di-build menggunakan build tool macam cmake. OpenCV adalah salah satunya. Saudara jauh cmake misalnya make dan qmake.
  4. Kenapa git? Karena beberapa dependensi dari OpenCV ini diambil kode sumbernya dari repositori git, sehingga memerlukan git untuk mengunduhnya. Setidaknya tutorial yang saya baca mengajarkan demikian.
  5. Kenapa checkinstall? Karena Anda menggunakan Ubuntu, sehingga Anda membutuhkan .deb. checkinstall adalah keajaiban yang mengubah kode sumber yang sudah di-build menjadi .deb (bahkan .rpm dan paket .tgz Slackware) dan menginstalnya ke dalam sistem. Menginstal dengan checkinstall, memberi Anda kemampuan untuk me-remove pula dengan dpkg (manajer paket Anda). Memang tidak semua program mempersyaratkan checkinstall, tetapi OpenCV iya.
  6. Kenapa automake, autoconf, dan libtool? Karena ketiganya adalah satu set Autotools, perangkat lunak build system yang sangat terkenal dari GNU. Banyak sekali kode sumber program di Linux yang didesain untuk di-build dengan Autotools. Jadi memiliki Autotools sangat penting untuk melakukan kompilasi dari kode sumber.

Rujukan teknis untuk dependensi umum ini bisa Anda baca di referensi nomor [1], [2], dan [3].

3. Dependensi Khusus

3.1 Remove Paket ffmpeg yang Terinstal Sebelumnya

Inilah yang mesti di-uninstall dulu sebelum instalasi dilakukan.


sudo apt-get remove ffmpeg x264 libx264-dev

Kenapa harus di-uninstall? Karena kita akan menginstal ffmpeg dan x264 secara manual dari kode sumber.

3.1 Instal Seluruh Dependensi OpenCV

Inilah dependensi untuk OpenCV (setidaknya sampai versi 2.4.9 yang saya coba pada 24 September 2014).


sudo apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev v4l-utils

Catatan:

  • Sebenarnya OpenCV memiliki dependensi x264 dan ffmpeg, akan tetapi kita harus menginstalnya secara terpisah dari kode sumber.
  • Mengapa? Karena keduanya harus dikonfigurasikan secara khusus untuk instalasi OpenCV.
  • Oleh karena itu, perintah instalasi ini tidak mengandung x264 dan ffmpeg.

Rujukan untuk perintah instalasi dependensi OpenCV ini bisa Anda temukan pada referensi nomor [4].

3.3 Unduh Semua Kode Sumber

  1. x264: baca Langkah-Langkah Instalasi di bawah.
  2. ffmpeg 0.8.15http://ffmpeg.org/releases/ffmpeg-0.8.15.tar.bz2
  3. OpenCV 2.3.1ahttp://softlayer-sng.dl.sourceforge.net/project/opencvlibrary/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2

Langkah-Langkah Instalasi

Untuk instalasi, lakukanlah di dalam satu folder baru. Saya melakukan ini semua di folder /home/master/Unduhan/September 2014/.

1. Menginstal x264 dari Repositori git Resminya


git clone git://git.videolan.org/x264
cd x264
./configure --enable-static
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \ awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \ --fstrans=no --default

Rujukan teknis untuk instalasi x264 bisa Anda baca pada referensi nomor [5].

2. Menginstal ffmpeg 0.8.15


tar xfv ffmpeg-0.8.15.tar.bz2
cd ffmpeg-0.8.15/
./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default

Rujukan teknis untuk instalasi ffmpeg bisa Anda baca pada referensi nomor [5].

3. Menginstal OpenCV


tar -xvf OpenCV-2.3.1a.tar.bz2
cd OpenCV-2.3.1/
mkdir build/
cd build/
cmake -D CMAKE_BUILD_TYPE=RELEASE ..
make
sudo make install

Rujukan teknis untuk instalasi OpenCV dengan make install bisa Anda baca pada referensi nomor [6].

Hasil

1. Cek Instalasi x264 (dpkg -l x264)

mari-menggunakan-kde-5-95

2. Cek Instalasi ffmpeg 0.8.15 (dpkg -l ffmpeg)

mari-menggunakan-kde-5-96

3. Cek Instalasi OpenCV 2.3.1a (dpkg -l *opencv*)

mari-menggunakan-kde-5-97

4. Kode Sumber Program

4.1 Video Berformat AVI

// latihan_2_video.cpp
// Wednesday, September 17, 2014 09:27 AM
// Ade Malsasa Akbar <http://malsasa.wordpress.com>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
int main()
{
	cvNamedWindow( "Video AVI", CV_WINDOW_AUTOSIZE );
	CvCapture* capture = cvCreateFileCapture( "martabakmanis.avi" );
	IplImage* frame;
	while(1) {
		frame = cvQueryFrame( capture );
		if( !frame ) break;
		cvShowImage( "Video AVI", frame );
		char c = cvWaitKey(33);
		if( c == 27 ) break;
	}
	cvReleaseCapture( &capture );
	cvDestroyWindow( "Video AVI" );
	return 0;
}

mari-menggunakan-kde-5-100

4.2 Video Berformat MP4

// latihan_2_video.cpp
// Wednesday, September 17, 2014 09:27 AM
// Ade Malsasa Akbar <http://malsasa.wordpress.com>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
int main()
{
	cvNamedWindow( "Video AVI", CV_WINDOW_AUTOSIZE );
	CvCapture* capture = cvCreateFileCapture( "kueterangbulan.mp4" );
	IplImage* frame;
	while(1) {
		frame = cvQueryFrame( capture );
		if( !frame ) break;
		cvShowImage( "Video AVI", frame );
		char c = cvWaitKey(33);
		if( c == 27 ) break;
	}
	cvReleaseCapture( &capture );
	cvDestroyWindow( "Video AVI" );
	return 0;
}

mari-menggunakan-kde-5-99

Kesimpulan

  1. Kompilasi dan instalasi program dari kode sumber tetap memerlukan koneksi internet untuk mengunduh dahulu semua dependensinya sebelum instalasi dilakukan.
  2. Kompilasi dan instalasi OpenCV memerlukan dukungan ffmpeg untuk dapat memutar video di dalam program yang dibuat dengan OpenCV nantinya.
  3. Kompilasi ulang OpenCV bersama ffmpeg yang sudah dikonfigurasi diperlukan untuk poin 2.

Referensi


[1] https://help.ubuntu.com/community/CompilingSoftware

[2] https://help.ubuntu.com/community/CompilingEasyHowTo

[3] http://en.wikipedia.org/wiki/GNU_build_system

[4] https://help.ubuntu.com/community/OpenCV

[5] http://askubuntu.com/questions/148554/unknown-option-enable-libfaad-error-libfaac-not-found-while-configuring-f

[6] http://jayrambhia.wordpress.com/2012/06/20/install-opencv-2-4-in-ubuntu-12-04-precise-pangolin/

3 respons untuk ‘Instalasi OpenCV 2.3.1a dan ffmpeg 0.8.15 di Ubuntu 12.04 dengan Kompilasi Manual

    • Akang benar. Ini (saya kira) bug dari SyntaxHighlighter yang dipasang di WordPress.com untuk melayani tab . Di seluruh browser pun sama seperti itu. Saya harus memformat ulang, dan yang seperti ini sangat sering terjadi kalau kita berurusan dengan penulisan kode sumber di WordPress.com.

      Saya mengucapkan terima kasih banyak. Karena komentar akan, saya jadi bisa melakukan perbaikan.

Mohon jangan gunakan emotikon: