CCTV ๋ง๋ค๊ธฐ with Android
๐ก ์ด๊ธฐ ์ค์ (OS ์ค์น, ์ค์ ๋ฑ)์ ๋์ด ์๋ค๋ ๊ฐ์ ํ์ ์์ฑํ์์ต๋๋ค.
์ค๋น๋ฌผ
- ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด3 B+
- ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ํธํ ์นด๋ฉ๋ผ ๋ชจ๋ (5MP ์ฌ์ฉ)
- Android Studio
- (์ ํ) ํ ์คํธ ๊ธฐ๊ธฐ
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ์นด๋ฉ๋ผ ์ค์
pi@raspberrypi:~ $ sudo raspi-config
5 Interfacing Options
์ ํ
P1 Camera
> enable
๋ก ์ค์ ํ๋ค๋ฉด ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ฅผ ์ฌ๋ถํ
ํ๋ค.
pi@raspberrypi:~ $ sudo reboot
์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ์นด๋ฉ๋ผ ์ฐ๊ฒฐ์ด ์ ๋๋ก ๋์ด์๋ ์ง ํ์ธํ ์ ์๋ค.
pi@raspberrypi:~ $ vcgencmd get_camera
# ์นด๋ฉ๋ผ ์ฐ๊ฒฐ ๋ถ๋
supported=1 detected=0
# ์นด๋ฉ๋ผ ์ฐ๊ฒฐ ์ฑ๊ณต
supported=1 detected=1
์นด๋ฉ๋ผ๋ฅผ ํตํด ์ฌ์ง์ ์ฐ์ผ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค. ํ์ฌ ํฐ๋ฏธ๋์ด ์์นํ ๊ฒฝ๋ก์ screen.jpg
๋ผ๋ ์ด๋ฆ์ผ๋ก ์บก์ณ๋ฅผ ํ๋ค.
pi@raspberrypi:~ $ raspistill -o screen.jpg
์นด๋ฉ๋ผ๊ฐ ์ ์ ์๋ํ๋ ๊ฒ์ ํ์ธํ๋ค. ์ด์ mjpg-streamer
๋ฅผ ์ด์ฉํด ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ ์ฐ๊ฒฐ๋ ์นด๋ฉ๋ผ ์์์ ์น์์ ์คํธ๋ฆฌ๋ฐํ ๊ฒ์ด๋ค.
mjpg-streamer ์ค์
๋จผ์ mjpg-streamer
๋ฅผ ์ค์นํ๊ธฐ ์ํด git
์ ์ค์นํด์ผํ๋ค.
pi@raspberrypi:~ $ sudo apt-get install git
pi@raspberrypi:~ $ git clone https://github.com/jacksonliam/mjpg-streamer.git
pi@raspberrypi:~ $ sudo apt-get install cmake python-pil libjpeg-dev build-essential
โ ๋๋ถ๋ถ์ ๋ธ๋ก๊ทธ์์๋
python-imaging
์ ์ค์นํ๋ค. ๊ทธ๋์ ๋๊ฐ์ด ๋ฐ๋ผ์ ํด๋ดค๋๋ฐpython-pil
๋ก ๋์ฒด๋์ด์ ์ค์น๊ฐ ์๋๋ค๋ ๋ฌธ๊ตฌ๊ฐ ๋ด๋ค. ๋นํฉํ์ง ๋ง๊ณpython-pil
๋ก ์ค์นํ๋ฉด ๋๋ค.
ํ์ํ ํจํค์ง๋ฅผ ์ ๋ถ ๋ค์ด ๋ฐ์๋ค๋ฉด mjpg-streamer
๋ฅผ ์ค์นํ๋ค.
pi@raspberrypi:~ $ cd mjpg-streamer/mjpg-streamer-experimental
pi@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $ make
pi@raspberrypi:~ $ sudo make install
ํ ๋๋ ํ ๋ฆฌ๋ก ๋์๊ฐ ๋ค์์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค. ์ ์์ ์ผ๋ก ๋์ํ๋ค๋ฉด
http://localhost:8090 ์์ ํ์ธํ ์ ์๋ค. (ํน์ localhost
๋์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ์์ดํผ๋ก ์ ์)
pi@raspberrypi:~ $ mjpg_streamer -i "input_raspicam.so -vf" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www/"
์ฐธ๊ณ : https://webnautes.tistory.com/1261
์ฌ๊ธฐ๊น์ง ๋์๋ค๋ฉด ์ด์ ์๋๋ก์ด๋์์ WebView
๋ฅผ ํตํด ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ฅผ CCTV๋ก ์ฌ์ฉํ ์ ์๋ค.
์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ
in Android Studio
- ์๋ก์ด ์กํฐ๋นํฐ ์์ฑ
- Empty Activity๋ฅผ ์ ํ (CameraActivity)
activity_camera.xml
์ WebView๋ฅผ ์ถ๊ฐCameraActivity.java
์ ์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐ- ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ์์ดํผ ์์ฑ
์ถ์ฒ: https://web-inf.tistory.com/34import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class CameraActivity extends AppCompatActivity { private WebView mWebView; // ์น๋ทฐ ์ ์ธ private WebSettings mWebSettings; //์น๋ทฐ์ธํ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera); mWebView = (WebView) findViewById(R.id.webView); mWebView.setWebViewClient(new WebViewClient()); // ํด๋ฆญ์ ์์ฐฝ ์๋จ๊ฒ mWebSettings = mWebView.getSettings(); //์ธ๋ถ ์ธํ ๋ฑ๋ก mWebSettings.setJavaScriptEnabled(true); // ์นํ์ด์ง ์๋ฐ์คํด๋นํธ ํ์ฉ ์ฌ๋ถ mWebSettings.setSupportMultipleWindows(false); // ์์ฐฝ ๋์ฐ๊ธฐ ํ์ฉ ์ฌ๋ถ mWebSettings.setJavaScriptCanOpenWindowsAutomatically(false); // ์๋ฐ์คํฌ๋ฆฝํธ ์์ฐฝ ๋์ฐ๊ธฐ(๋ฉํฐ๋ทฐ) ํ์ฉ ์ฌ๋ถ mWebSettings.setLoadWithOverviewMode(true); // ๋ฉํํ๊ทธ ํ์ฉ ์ฌ๋ถ mWebSettings.setUseWideViewPort(true); // ํ๋ฉด ์ฌ์ด์ฆ ๋ง์ถ๊ธฐ ํ์ฉ ์ฌ๋ถ mWebSettings.setSupportZoom(false); // ํ๋ฉด ์ค ํ์ฉ ์ฌ๋ถ mWebSettings.setBuiltInZoomControls(false); // ํ๋ฉด ํ๋ ์ถ์ ํ์ฉ ์ฌ๋ถ mWebSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // ์ปจํ ์ธ ์ฌ์ด์ฆ ๋ง์ถ๊ธฐ mWebSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); // ๋ธ๋ผ์ฐ์ ์บ์ ํ์ฉ ์ฌ๋ถ mWebSettings.setDomStorageEnabled(true); // ๋ก์ปฌ์ ์ฅ์ ํ์ฉ ์ฌ๋ถ mWebView.loadUrl("http://localhost:8090/?action=stream"); // ์น๋ทฐ์ ํ์ํ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ์ฃผ์, ์น๋ทฐ ์์ } }
- ์ธ๋ถ์์(๋์ผํ ์ธํฐ๋ท์ด ์๋ ๊ฒฝ์ฐ) ๋ณด๋ ค๋ฉด ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ ๊ณ ์ IP๋ฅผ ํ ๋นํด์ฃผ๊ณ ์๋ ์ฝ๋ ๊ฐ์ฅ ํ๋จ์
localhost
๋์ ์ธ๋ถIP๋ฅผ ๊ธฐ์ ํ๋ฉด ๋๋ค.
ํฌ๊ฒ ๊ฑด๋ค์ผ ๊ฒ ์๋ ์ธํ ์ด๋ผ ๊ทธ๋ฅ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค.
๋ง์ง๋ง์ผ๋ก ์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์
์ ํตํด ์ธํฐ๋ท์ ์ ์ํ๋ ค๋ฉด Manifest
ํ์ผ์์ ๊ถํ์ ์์ฒญํด์ผํ๋ค. Manifest
ํ์ผ์ ์ด์ด ๋ค์์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERNET" />
-
์๋ ์ ๋ ธ์ ์ผ๋ก ์์ฑํ๋ ๋ฌธ์๋ฅผ ๋ธ๋ก๊ทธ๋ก ์ฎ๊น.
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote