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)