标签: video-recording

android mediarecoder保存空文件

这是我用来以MP4格式记录来自Android设备的视频的代码.正在创建文件,但大小为0字节.我似乎不明白出了什么问题.任何帮助将不胜感激.

                if(mCamera == null) {
        mCamera = Camera.open();
        mCamera.unlock();
    }

    if(mediaRecorder == null)
        mediaRecorder = new MediaRecorder();


    mediaRecorder.setCamera(mCamera);

    mediaRecorder.setCamera(mCamera);
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

    mediaRecorder.setMaxDuration(maxDurationInMs);


    mediaRecorder.setOutputFile("/sdcard/1.mp4");

    mediaRecorder.setVideoFrameRate(videoFramesPerSecond);
    mediaRecorder.setVideoSize(176,144);

    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);

    mediaRecorder.setPreviewDisplay(surface);

    mediaRecorder.setMaxFileSize(maxFileSizeInBytes);

                mediaRecorder.prepare();        
    try {
        mediaRecorder.prepare();
    } catch (IllegalStateException e) {
        // This is thrown if the previous calls are not called with the 
        // proper order
        e.printStackTrace();
    }

            mediaRecorder.start();
Run Code Online (Sandbox Code Playgroud)

android video-recording android-mediarecorder

7
推荐指数
2
解决办法
4680
查看次数

如何在录制视频时显示实时过滤后的摄像头预览?

我想在使用媒体录制器录制视频时显示已过滤的相机预览.要过滤预览,我需要正常的帧,我可以从onPreviewFrame()函数获得,但在使用媒体记录器录制视频时,onPreviewFrame()函数不会被调用.所以我想知道的是,有没有其他方法可以让这些帧进行过滤,然后在修改后显示它们?我查看了Google Play中的一些应用,例如Videocam Illusion.它在录制视频时显示预览效果.我想做类似的事情,但没有提示如何这样做.所以我将非常感谢有关该问题的任何帮助/提示/代码/示例.谢谢.

camera android frames live-preview video-recording

6
推荐指数
1
解决办法
6566
查看次数

视频兼容性问题:Android录制的视频无法在iphone中播放

我正在这样的Android录制视频

List<Camera.Size> list =  myCamera.getParameters().getSupportedPictureSizes();
            Parameters parameters = myCamera.getParameters();
            parameters.setColorEffect(coloreffects.get(index_color_effect));
            myCamera.setParameters(parameters);
            mediaRecorder = new MediaRecorder();
            myCamera.unlock();
            mediaRecorder.setCamera(myCamera);
                mediaRecorder.setOrientationHint(90);
            mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
            mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
            mediaRecorder.setAudioEncoder(AudioEncoder.HE_AAC);
            mediaRecorder.setVideoEncoder(VideoEncoder.H264);
            mediaRecorder.setOutputFile(Constants.videourl);
            mediaRecorder.setMaxDuration(30000); // Set max duration 60 sec.
            mediaRecorder.setVideoFrameRate(24);
             mediaRecorder.setVideoFrameRate(30);
             mediaRecorder.setVideoSize(720, 480);
            mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder().getSurface());
Run Code Online (Sandbox Code Playgroud)

这个录制的视频,能够在Android上播放,但无法在iPhone上播放.

如果使用此代码进行录制

         // work two
         {
         mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
         mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

         mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
         mediaRecorder.setOutputFile(videourl);
         mediaRecorder.setMaxDuration(30000); // Set max duration 60 sec.
         }
Run Code Online (Sandbox Code Playgroud)

这与iphone记录视频兼容.但是这会在三星note2上录制30秒左右的视频大约47 mbs.

有帮助吗?

iphone video compatibility android video-recording

6
推荐指数
1
解决办法
1955
查看次数

暂停.....选项,如默认的相机应用程序?

我一直在努力寻找更好的解决方案来暂停和恢复视频录制.据我所知,Media Recorder类不允许在Android 4.3或更低版本的录制期间暂停.

我发现mp4parser库可以将多个视频文件合并为一个视频文件.我正在使用以下罐子:

aspectjrt-1.7.3.jar

isoparser-1.0.6.jar

问题是将它们合并在一起需要太长时间.例如,总共约5分钟的2-3个视频文件需要至少2分钟才能合并它们!

我的Galaxy S3和Note 2附带的默认Camera应用程序,在视频录制中有暂停选项.他们暂停的视频只需不到1秒即可完成合并.

有人可以告诉我这里我做错了什么吗?

我使用下面的代码合并视频文件:

for (ArrayList<String> PathList : VideoList) {
            VideoPathList = PathList;
        }

        for (String mMovie : VideoPathList) {
            Movie movie = MovieCreator.build(mMovie);
            MovieList.add(movie);
        }

        List<Track> videoTracks = new LinkedList<Track>();
        List<Track> audioTracks = new LinkedList<Track>();
        for (Movie mMovie : MovieList) {
            for (Track t : mMovie.getTracks()) {
                if (t.getHandler().equals("soun")) {
                    audioTracks.add(t);
                }
                if (t.getHandler().equals("vide")) {
                    videoTracks.add(t);
                }
            }
        }

          Movie result = new Movie();

          if(audioTracks.size() > 0) {
             result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()]))); …
Run Code Online (Sandbox Code Playgroud)

android video-recording mediarecorder android-mediarecorder

6
推荐指数
1
解决办法
462
查看次数

在ios中录制视频时添加叠加层的方法

在录制视频时是否有任何方法可以添加叠加,这样当我从相机胶卷播放视频时,我可以看到叠加.

objective-c video-recording ios camera-roll

6
推荐指数
1
解决办法
941
查看次数

如何在流媒体中录制 HLS?

我创建了 android 应用程序,其中有m3u8流链接。现在我希望用户在视频播放期间的任何阶段录制视频,并且也可以在我想要的地方停止。但是我用谷歌搜索了它,堆栈溢出和其他 android 帮助站点没有可用的解决方案。我是本节的新手请尽快帮助我。现在我被困在这个部分。我得到一个链接但没有帮助

如何从 IP Cam 录制 http 直播流

我把它做成了一个自定义的m3u8媒体播放器,我只是给了那个媒体播放器的链接,它使用安卓的默认媒体播放器播放

  <FrameLayout
            android:id="@+id/videoSurfaceContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/videoplayer_title">

            <SurfaceView
                android:id="@+id/videoSurface"
                android:background="@android:color/transparent"
                android:layout_width="match_parent"
                android:layout_below="@+id/videoplayer_title"
                android:layout_height="200dp"
                />

            <ImageView
                android:id="@+id/videoplayer_icon"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:background="@android:color/transparent"
                android:visibility="gone"
                />

            <ProgressBar
                android:id="@+id/progressbar"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_gravity="center"
                android:layout_below="@+id/videoplayer_title"
                android:background="@android:color/transparent"
                android:visibility="gone"
                />
            <LinearLayout

                android:id="@+id/ll_controls_layout"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:background="@drawable/media_controls_bg"
                android:orientation="vertical"
                android:layout_gravity="bottom"
                android:visibility="visible">

                <RelativeLayout

                    android:layout_width="match_parent"
                    android:layout_height="40dp"


                    >

                    <ImageButton
                        android:id="@+id/pause"
                        android:layout_width="35dp"
                        android:layout_height="35dp"
                        android:layout_centerVertical="true"
                        android:layout_marginLeft="5dp"
                        android:background="@android:color/transparent"
                        android:src="@drawable/pause_btn" />


                    <SeekBar
                        android:id="@+id/mediacontroller_progress"
                        android:layout_width="match_parent"
                        android:minHeight="6dip"
                        android:layout_toRightOf="@+id/pause"
                        android:maxHeight="6dip"
                        android:thumb="@drawable/abc_switch_thumb_material"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:progressDrawable="@drawable/styled_progress"
                        android:paddingLeft="15dp"
                        android:paddingRight="15dp"
                        android:layout_toLeftOf="@+id/time_current"
                        android:layout_marginLeft="3dp"
                        android:indeterminate="false" …
Run Code Online (Sandbox Code Playgroud)

android video-capture video-streaming video-recording android-mediaplayer

6
推荐指数
0
解决办法
2111
查看次数

通过相机录制视频,无需镜像,就像快照聊天一样

我正在研究社交移动应用.它可以选择录制个人资料视频.我的刻录机的问题是它反映了实际的视频.我知道这是默认行为,但希望它像sanpchat一样工作.

预习

预览时视频

录制和播放后

录制和播放后

这是我的代码

// return camera instance when activity open first time
private Camera getCameraInstance() {
    // TODO Auto-generated method stub
    releaseCamera();
    releaseMediaRecorder();
    Camera c = null;
    try {
        cameraId = findFrontFacingCamera();
        if (cameraId < 0) {
            cameraId = findBackFacingCamera();
        }
        c = Camera.open(cameraId);

        // setCameraDisplayOrientation(this,cameraId,c);
        //setCameraDisplayOrientation(this, cameraId, c);
        c.setDisplayOrientation(90);
    } catch (Exception e) {
        // Camera is not available (in use or does not exist)
    }
    return c; // returns null if camera is unavailable
}
// return …
Run Code Online (Sandbox Code Playgroud)

android video-recording android-camera android-mediaplayer android-mediarecorder

6
推荐指数
1
解决办法
1187
查看次数

在 swift 中以自定义设计的布局保存多个视频

我在ios中开发了一个双摄像头应用程序。它有这样的布局。在开发过程中,我遇到了以这种特定布局保存视频的挑战。我想不出任何其他方式来录制视频,所以我想出了录制整个屏幕并将其另存为视频的解决方案。但最近我看到一些应用程序不记录屏幕,但它们能够以自定义布局保存视频。此类应用程序的一个示例是这样的。现在我无法弄清楚如何制作视频并将其保存在自定义布局中而无需屏幕录制(因为它不是完美的解决方案)。因此,在这方面的任何帮助将不胜感激。

camera video-recording ios swift

6
推荐指数
0
解决办法
170
查看次数

FLutter:未处理的异常:CameraException(INVALID_PATH,平台“TargetPlatform.android”

我最近开始使用 flutter,在我的项目中我必须用计时器录制视频。当我单击停止按钮停止视频录制时,出现此错误。我尝试显示路径并得到了路径

I/flutter (19037): Video recorded to /data/user/0/app.package/cache/REC8929992591965700575.mp4


I/flutter (19037): Error: INVALID_PATH
I/flutter (19037): Error Message: The platform "TargetPlatform.android" did not return a path while reporting success. The platform should always return a valid path or report an error.

I/flutter (21723): Video recorded to /data/user/0/app.package/cache/REC4634449859696013797.mp4
E/flutter (21723): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: CameraException(INVALID_PATH, The platform "TargetPlatform.android" did not return a path while reporting success. The platform should always return a valid path or report an error.)
Run Code Online (Sandbox Code Playgroud)

使用这个插件:

  camera: ^0.9.4+5
  video_player: ^2.2.10
Run Code Online (Sandbox Code Playgroud)

我的代码: …

video camera android video-recording flutter

6
推荐指数
1
解决办法
1185
查看次数

JavaScript MediaRecorder 不同浏览器之间的视频格式兼容性

介绍

在浏览器上使用MediaRecorder录制视频流时,根据浏览器(Chrome、Safari 或 Firefox),MediaRecorder 可以以特定格式录制视频。

下表显示了 MediaRecorder 可以在每个浏览器中录制的视频格式/容器(我通过使用 isTypeSupported静态方法获得此信息)。本文还使用 isTypeSupported 方法显示了不同浏览器上所有支持的 MediaRecorder 格式的表格。

浏览器 录音格式
铬合金 .WEBM、.MKV
歌剧 .WEBM、.MKV
边缘 .WEBM、.MKV
火狐浏览器 .WEBM
苹果浏览器 .MP4

当您想播放视频时,并非所有浏览器都支持相同的格式。下表显示了每个浏览器可以播放的视频格式(可能不准确)。

浏览器 可以播放视频格式
铬合金 .MP4、.WEBM、.MKV
歌剧 .MP4、.WEBM、.MKV
边缘 .MP4、.WEBM、.MKV
火狐浏览器 .MP4、.WEBM
苹果浏览器 .MP4

问题

我有一个网络应用程序,用户可以在他/她的浏览器上录制视频,然后将该视频上传到数据库。

之后,其他用户可以访问该网站并在其浏览器上观看该视频。如果用户在Safari浏览器上录制视频,则录制的视频格式为所有浏览器支持(MP4),但如果用户使用Chrome或Firefox,则录制的视频格式为除Safari之外的所有浏览器支持(WEBM)。

有没有办法以可以在所有浏览器上播放的格式录制视频(例如 MP4)?

  1. 我尝试使用video.js npm 包但没有成功。
  2. 我还尝试使用 FFMPEG 在客户端转换视频,但与网站相比,处理量巨大,并且需要很长时间。

我正在寻找一种只能在浏览器上完成而无需转换视频格式的解决方案。

javascript cross-browser video-recording web web-mediarecorder

6
推荐指数
1
解决办法
889
查看次数