Articles of android mediarecorder

Android:从Fragment调用Activity

我在活动中使用片段。 我正在使用MediaRecorder进行录音。 我有两项活动。 1st本身是将列出录制文件的Activity。 在它的右侧,当一个选择记录新文件时,将调用AudioRecording Activity。 当选择任何列出的文件时,我使用AudioPlayer播放录制的文件。 我在这里能够将Activity转换为片段,但是当我按下Stop时,它终止了应用程序。 请有人可以回答。 当我将它用作简单的活动时,我的audiorecorder工作正常。 任何解决方案,如果我可以在该片段中调用该活动或类似的东西。? 如果有人知道,请帮助我。

为什么在textureview中的相机预览比在surfaceview中更模糊?

我发现当使用textureview而不是surfaceview作为相机预览(两者都通过mediarecorder连接到相机)时,预览更加模糊。 模糊的意思是在纹理视图中你可以看到像素,特别是在缩放时。 使用surfaceview时不是这种情况。 为什么会这样?

Android MediaRecorder stop()未被调用

我有一个非常奇怪的错误,我的一些代码没有被调用,但看起来没有任何理由为什么它不会被调用。 onFinishedRecording并标记”Finished recording.” 被注销,但之后的代码根本没有被调用。 当mMediaRecorder.stop();时,所有代码都停止被调用mMediaRecorder.stop(); 叫做。 它也没有进入catch块。 为什么会这样? 我认为它可能与不同的线程有关,但我检查了所有的线程名称,它们都在同一个主线程上运行。 另外,我的相机预览设置可能有问题吗? 当我尝试播放video时,它已损坏且无法播放。 除了上述问题,我的后退按钮在应用程序中没有任何作用。 不完全说明为什么或如何与我实现的代码相关。 MyLibrary类(库模块类) public class MyLibrary implements PreciseCountdownTimer.PreciseCountdownTimerCallback { private static final String TAG = AngryOtter.class.getSimpleName(); private static final long MAX_RECORD_TIME_MILLIS = 3000; private static final long INTERVAL_MILLIS = 1000; private static MyLibrary mInstance; private Activity mActivity; private CameraInitListener mCallback; private int mCameraId = […]

从Android Media Recorder流式传输后修复3GP文件

我试图通过本地unix socket从android摄像头流式传输video,并将文件从流写入sdcard。 一切正常,除了文件不能播放任何播放器。 这是因为Android没有填补文件中的一些空白,因为socket不可寻找。 据我了解,我需要在video流结束后进行一些修改。 我在这里 , 这里和这里阅读了几篇文章,但没有一篇文章对我有所帮助。 我正在使用hex编辑器来学习如何手动完成它,所以之后在Android代码中执行相同操作将是微不足道的。 以下是从流中保存的示例文件: https : //dl.dropbox.com/u/17510473/sample_not_playable.3gp 任何人都可以修复它使它可玩并告诉他是如何做到的? 编辑:我擦除3gp文件的标题,并编写新的文件,如下所示: 00 00 00 18 66 74 79 70 33 67 70 34 00 00 03 00 33 67 70 34 33 67 70 36 00 00 00 00 然后我用以下命令findmdat和moov atoms的起始位置: grep -aobE “ftyp|mdat|moov” sample_not_playable.3gp 它给了我以下输出: 4:ftyp 28:mdat 1414676:moov 然后制作1414676 – […]

流Android屏幕

我试图让Truiton ScreenCapture示例,以便使用MediaProjection记录设备屏幕 保存录音时,它可以正常工作 mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); String localFilePath = getLocalFilePath(); mMediaRecorder.setOutputFile(localFilePath); mMediaRecorder.setVideoSize(DISPLAY_WIDTH, DISPLAY_HEIGHT); mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); mMediaRecorder.setVideoFrameRate(30); mMediaRecorder.prepare(); 然而,当改变使用FileDescriptor时,它不是 mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); String hostname = “10.26.100.18”; int port = 2007; Socket socket = new Socket(InetAddress.getByName(hostname), port); ParcelFileDescriptor fileDescriptor = ParcelFileDescriptor.fromSocket(socket); LocalServerSocket localServerSocket = new LocalServerSocket(fileDescriptor.getFileDescriptor()); mMediaRecorder.setOutputFile(localServerSocket.getFileDescriptor()); mMediaRecorder.setVideoSize(DISPLAY_WIDTH, DISPLAY_HEIGHT); mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); mMediaRecorder.setVideoFrameRate(30); mMediaRecorder.prepare(); 如果不使用LocalServerSocket,则mMediaRecorder.prepare()抛出exception,现在我正在使用它,在mMediaRecorder.getSurface()中的以下方法中获取exception private VirtualDisplay createVirtualDisplay() { return mMediaProjection.createVirtualDisplay(“MainActivity”, DISPLAY_WIDTH, […]

Android捕捉慢动作video

如何在我的应用中捕捉慢动作video? 我试过用 mMediaRecorder.setVideoFrameRate(100); 但如果我使用IllegalStateException设置值20或更多,应用程序崩溃。 我研究了很多。正常video在24到30 fps之间。要看慢动作video,我们需要捕获100-120 fps但设备不允许这样。但是我看到设备中的默认摄像头有一个慢动作选项。游戏商店中的应用程序也很少允许创建慢动作video。我也尝试设置更高的setCaptureRate() ,但也可以捕获普通模式video。在少数地方提到慢动作电影可以通过OpenCV/JavaCV完成库,但我不明白如何使用这些库来捕获Android中的慢动作video?

Android Media Recorder不在Google Glass上录制长video

我已经为Google Glass编写了一个开源摄像头 ,但是一些使用它的人报告说,录制的video无法正确保存以供长video使用。 我无法在Android文档中find有关任何此类限制的信息 因此,在检查后,我发现对于超过26 minutes的video,video文件保存在Glass中,其大小约为2.7 GB但持续时间为0:00 。 它无法使用任何video播放器播放。 所以我想知道为什么会这样? 为什么video会在duration < 26 minutes被正确录制,并且会导致较长时间的video混乱。 启动video录制的代码是 /** * Initialize video recorder to record video */ private void initRecorder() { try { File dir = new File(Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_PICTURES + File.separator + “My Videos”); if (!dir.exists()) { dir.mkdirs(); } videofile = new File(dir, “video.mp4”); recorder.setCamera(mCamera); […]

如何在三星设备android上录制特定宽度和高度的video?

您好我正在制作一个Android应用程序,其中我使用自定义摄像头录制摄像头。我在三星设备上有问题。我无法将媒体记录器的配置文件设置为CamcorderProfile.get(cameraid, CamcorderProfile.QUALITY_HIGH) 也试着用 profile = CamcorderProfile.get(cameraid, CamcorderProfile.QUALITY_LOW); profile.videoFrameHeight=360; profile.videoFrameWidth=640; 然后我的应用程序正在处理某些设备,但在许多设备上崩溃。任何types的帮助都会很明显。谢谢提前请检查代码 Camera.Parameters param = mCamera.getParameters(); param.set( “cam_mode”, 1 ); // Enable video stabilization. Convenience methods not available in API // level <= 14 String vstabSupported = param.get("video-stabilization-supported"); if ("true".equals(vstabSupported)) { param.set("video-stabilization", "true"); } List sizes = mCamera.getParameters() .getSupportedVideoSizes(); mCamera.setParameters( param ); mMediaRecorder = new MediaRecorder(); // […]

如何在video录制中添加文字?

我搜索很多但没有find任何解决方案。 我的问题是如何在录制时向video添加文字,这样我们就可以在看到video时获得相同的文字。 当我看到捕捉video时,我想要这样的东西。 目前我正在分时间和video。 所以问题是如何结合它。任何一种帮助将不胜感激。谢谢你提前..

Android Mediarecorder录制的video时长与预期持续时间不同

我用android Mediarecorder录制了一个video。 (主要问题:我需要知道video的确切startTime [系统时间]和endTime [系统时间],[endTime – startTime]必须与实际video的持续时间相匹配) MediaRecorder.start startTime = System.currentTimeMillis() then on stop MediaRecorder.stop endTime = System.currentTimeMillis() 我期待video有这段时间 expected_duration =(endTime – startTime) 但是,那 expected_duration总是超过video的实际持续时间。 我怀疑MediaRecorder.start很慢,它实际上开始将帧写入video需要一些时间。 那么现在,当MediaRecorder开始将第一帧写入video时,是否有通知? 或者有什么方法可以找出video实际开始录制时的确切系统开始时间。 感谢阅读,并感谢任何意见,建议或意见。 ^^