android 播放视频文件格式,安卓播放exe视频,如何将exe格式视频转换成常用格式视频...

专注实拍 监控 风景 各类视频

申请入群加微信: neimu500

因为专注 所以专业!

我们只发优质实拍视频,群管理专业、规范,确保群的视频质量以及秩序!无水印可下载可分享.

知道吗?EXE格式的视频,是我在上大学的时候才知道的一种视频格式(可能是小编太孤陋寡闻了哈哈),这种格式的视频图标看起来很像一个录影机有木有?小编曾经下载过这种格式的视频,结果发现利用这种视频进行视频编辑还是挺不习惯的,有时候还无法在手机播放,扎心了。不过现在不必担心了,因为接下来的教程可以利用exe视频格式转换器将它转换成MP4格式,听起来是不是很高大上呢?

废话少说,接下来为你介绍exe视频格式转换教程。首先,需要下载并安装好EXE视频格式转换器,还没安装这款软件的狸友可以点击上面链接进行下载(里面有软件和注 册详细步骤)好啦,安装完成之后我们可以看到如下图所示的软件界面。首次安装会弹出一个向导窗口,点击关闭就可以了。

9b98e89962f86b80ac411d471f8185a2.png

好啦,找到工具栏的转换工具(T),然后再选择EXE/LXE转成AVI(E),如下图所示。点开转换工具后可以看得到下面有很多种格式可以转换,EXE格式转换成flash、flv、wmv、avi等等。虽然这里有提示EXE直接可以转换成MP4格式,但小编不建议如此操作,因为复杂得很。

这里重点主要介绍EXE转换AVI格式为主,再利用狸窝转换器再由avi转换成MP4。

f3e29aceaf2c536d82d04b513f434adb.png

接下来,这里会弹出一个EXE转成AVI的对话框,单击预览按钮,则会弹出一个打开的对话框,再找到exe格式视频素材所在的位置,选择视频素材,最后点击打开按钮。

067f7b9ded4d2e0b1377d21b4c96c289.png

操作完上面的步骤之后,会直接回到原来的EXE转成AVI对话框,这时我们就可以看到浏览按钮左边的路径信息啦,这就是我们刚刚打开的素材文件所在的路径,素材添加完成后点击转换按钮(Z)。然后会跳转到保存对话框,这里我把文件保存到桌面,主要是为了转换之后方便找到我们视频文件,点击保存。

d5a915e5c5a3636dd3d2b9ca96409b55.png

点击保存按钮后,会弹出一个视频压缩对话框,没有要求的话默认选择,再点击确定。这时会出现一个正在处理的对话框,当帧数处理完毕之后,会弹出下图所示的转换成功对话框,点击OK搞定了。

7a4826b4c1c60c435435c80ff7197eee.png

这时我们已经成功得将EXE格式视频转换成AVI格式的视频了,接下来再利用狸窝全能视频转换器将两种常见的格式互转,即AVI转换成MP4。其实狸窝视频转换器或者格式工厂都可以,这里我以狸窝视频转换器为例,添加视频后可以看到输出格式变成MP4格式了,这时我们直接点击转换。

a9a8b89bdc66ea2574c02b48a72a61ae.png

大功告成,这时我们已经成功的把视频素材转换成MP4格式了,转换之后的时候可以进行视频剪辑,也可以拿到我们的手机上进行播放啦。是不是感觉自己又变得很厉害了呢。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,将 mp4 视频文件加载进来,可以使用 Android 系统提供的 MediaPlayer 类来实现。 ```java MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(videoFilePath); mediaPlayer.prepare(); mediaPlayer.start(); ``` 然后,创建一个 SurfaceView 用于显示视频画面,同时获取该 SurfaceView 的 SurfaceHolder 对象,以及该 SurfaceView 的宽高信息。 ```java SurfaceView surfaceView = new SurfaceView(context); SurfaceHolder surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { mediaPlayer.setDisplay(holder); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 获取 SurfaceView 的宽高信息 } @Override public void surfaceDestroyed(SurfaceHolder holder) { } }); ``` 接下来,创建一个 OpenGL ES 的上下文环境,并初始化纹理、着色器等信息。 ```java EGLContext eglContext = EGL14.eglGetCurrentContext(); EGLDisplay eglDisplay = EGL14.eglGetCurrentDisplay(); EGLSurface eglSurface = EGL14.eglGetCurrentSurface(EGL14.EGL_DRAW); int[] attribList = { EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT, EGL14.EGL_SURFACE_TYPE, EGL14.EGL_PBUFFER_BIT, EGL14.EGL_RED_SIZE, 8, EGL14.EGL_GREEN_SIZE, 8, EGL14.EGL_BLUE_SIZE, 8, EGL14.EGL_ALPHA_SIZE, 8, EGL14.EGL_NONE }; EGLConfig[] configs = new EGLConfig[1]; int[] numConfigs = new int[1]; EGL14.eglChooseConfig(eglDisplay, attribList, 0, configs, 0, configs.length, numConfigs, 0); int[] attribList2 = { EGL14.EGL_WIDTH, surfaceWidth, EGL14.EGL_HEIGHT, surfaceHeight, EGL14.EGL_NONE }; EGLSurface eglSurface2 = EGL14.eglCreatePbufferSurface(eglDisplay, configs[0], attribList2, 0); EGL14.eglMakeCurrent(eglDisplay, eglSurface2, eglSurface2, eglContext); int[] textureIds = new int[1]; GLES20.glGenTextures(1, textureIds, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureIds[0]); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); ``` 接着,通过 MediaPlayer 的 onFrameAvailableListener 回调函数获取视频的每一帧数据,并将其转换为 RGB 图像。 ```java mediaPlayer.setSurface(surfaceHolder.getSurface()); mediaPlayer.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() { @Override public void onVideoSizeChanged(MediaPlayer mp, int width, int height) { // 更新视频宽高信息 } }); mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() { @Override public void onSeekComplete(MediaPlayer mp) { // 重新开始播放视频 mediaPlayer.start(); } }); final float[] textureTransformMatrix = new float[16]; SurfaceTexture surfaceTexture = new SurfaceTexture(textureIds[0]); surfaceTexture.setDefaultBufferSize(videoWidth, videoHeight); surfaceTexture.setOnFrameAvailableListener(new SurfaceTexture.OnFrameAvailableListener() { @Override public void onFrameAvailable(SurfaceTexture surfaceTexture) { surfaceTexture.getTransformMatrix(textureTransformMatrix); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureIds[0]); surfaceTexture.updateTexImage(); ByteBuffer pixelBuffer = ByteBuffer.allocateDirect(videoWidth * videoHeight * 4); pixelBuffer.order(ByteOrder.LITTLE_ENDIAN); GLES20.glReadPixels(0, 0, videoWidth, videoHeight, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, pixelBuffer); pixelBuffer.rewind(); byte[] pixelArray = new byte[videoWidth * videoHeight * 3]; int index = 0; while (pixelBuffer.hasRemaining()) { pixelArray[index++] = pixelBuffer.get(); pixelArray[index++] = pixelBuffer.get(); pixelArray[index++] = pixelBuffer.get(); pixelBuffer.get(); } // 处理 RGB 图像数据 } }); ``` 最后,需要在程序退出时释放资源。 ```java surfaceTexture.release(); EGL14.eglMakeCurrent(eglDisplay, EGL14.EGL_NO_SURFACE, EGL14.EGL_NO_SURFACE, EGL14.EGL_NO_CONTEXT); EGL14.eglDestroySurface(eglDisplay, eglSurface2); EGL14.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext); GLES20.glDeleteTextures(1, textureIds, 0); mediaPlayer.stop(); mediaPlayer.release(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值