Anaglyph 3d Video Player For Android -
본문 바로가기

TECH/Programs

Anaglyph 3d Video Player For Android -

Anaglyph 3d Video Player For Android -

Before we dive into the software, let’s clarify the terminology. Anaglyph 3D is the process of encoding two slightly offset images (one for the left eye, one for the right) into a single movie file using color filters—usually red and cyan.

When you watch a standard 3D movie (Side-by-Side or Over-Under format) on a regular 2D screen, it looks like two blurry, overlapping images. A dedicated anaglyph 3D video player for Android solves this by:

You can easily modify the shader for top-bottom or full-SBS formats. anaglyph 3d video player for android


Rating: 4.2/5 | Price: Free

As the name suggests, this is a minimalist app. If you hate bloatware, this is for you. It launches immediately, asks for a file, and plays it in anaglyph red/cyan. No library, no thumbnails, just playback. Before we dive into the software, let’s clarify

Here's a bare-bones implementation that plays an SBS video as anaglyph:

MainActivity.java (complete):

public class MainActivity extends AppCompatActivity 
    private ExoPlayer player;
    private GLSurfaceView glView;
    private int currentMode = 0; // 0=SBS, 1=TB
@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
glView = findViewById(R.id.gl_view);
    glView.setEGLContextClientVersion(2);
    glView.setRenderer(new AnaglyphRenderer());
    glView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
// Request storage permission
    ActivityCompat.requestPermissions(this, 
        new String[]Manifest.permission.READ_EXTERNAL_STORAGE, 1);
findViewById(R.id.btn_open).setOnClickListener(v -> openFilePicker());
private void openFilePicker() 
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("video/*");
    startActivityForResult(intent, 100);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 100 && resultCode == RESULT_OK) 
        Uri uri = data.getData();
        playVideo(uri);
private void playVideo(Uri uri) 
    player = new ExoPlayer.Builder(this).build();
    player.setMediaItem(MediaItem.fromUri(uri));
    player.prepare();
    player.play();
// Update GL view with frames (simplified - actual implementation
    // would need a custom renderer to intercept frames)