目前日期文章:201506 (4)

瀏覽方式: 標題列表 簡短摘要

攝影機預覽錄影 - 使用 MediaCodec input surface 與 MediaMuxer 中, 錄製的影像來源為攝影機的輸出影像, 無法錄製 OpenGL ES Fragment shader 處理後的影像. 本文建立兩個 EGL Surafce, 一為預覽用, 一為錄製用.

<<修改步驟>>

實作 GLSurfaceView.EGLContextFactory 為了取得 EGL Context.

private class SampleContextFactory implements GLSurfaceView.EGLContextFactory {
private int EGL_CONTEXT_CLIENT_VERSION = 0x3098;

public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig config) {
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, mEGLContextClientVersion,
EGL10.EGL_NONE };

文章標籤

版大 發表在 痞客邦 留言(0) 人氣()

本文實作 V4L2 視訊裝置影像讀取與 JPEG 檔儲存. 作業環境為 Ubuntu 14.04 LTS 與 libjepg-dev 套件.

<< libjepg-dev 套件安裝>>

$ sudo apt-get install libjpeg-dev

<<原始碼下載與編譯>>

$ git clone https://github.com/ArtisteHsu/SampleV4L2.git
$ cd SampleV4L2
$ gcc samplev4l2.c -ljpeg -o samplev4l2

 <<步驟>>

步驟 1. 開啟視訊裝置 /dev/video0

fd = open(dev_name, O_RDWR | O_NONBLOCK, 0);

文章標籤

版大 發表在 痞客邦 留言(0) 人氣()

攝影機預覽實作 - android.hardware.camera2  加入錄影功能. 使用 MediaCodec 與 MediaMuxer 實作錄影功能.

MediaCodec 將輸入影像編碼, MediaMuxer 將編碼後資料寫入檔案.

<<建立 MediaCodec 與 MediaMuxer>>

將 MediaCodec 輸入影像格式設定為 COLOR_FormatSurface 並呼叫 MediaCodec.createInputSurface() 建立 Surface.

 
final int COLOR_FORMAT = CodecCapabilities.COLOR_FormatSurface;

public
Surface init() {
// Set up encode format
MediaFormat encodeFormat = MediaFormat.createVideoFormat(MINE_TYPE, WIDTH, HEIGHT);
encodeFormat.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE);
encodeFormat.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE);
文章標籤

版大 發表在 痞客邦 留言(0) 人氣()

以 影像播放器實作 - 使用 OpenGL, MediaCodec 與 SurfaceTexture 為基礎, 加入 android.hardware.camera2 實作攝影機預覽功能.

<<預覽建立流程>>

步驟 1: 建立 GLSurfaceView, 這是 camera2 所需的 EGL 環境

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Step 1: Create GLSurfaceView for camera2 required EGL environment
GLSurfaceView glSurfaceView;
glSurfaceView = new GLSurfaceView(this);
glSurfaceView.setEGLContextClientVersion(2);
文章標籤

版大 發表在 痞客邦 留言(0) 人氣()