在我的应用程序中,我具有计时器驱动的视频录制功能。当相机处于录制模式时,如果我单击屏幕上任意位置的按钮,则录制应暂停。我应该能够在再次单击时继续记录。
但在许多android设备中都没有暂停录制视频的动作。
还有其他方法吗?我找到了此链接,但没有给我任何希望。
有谁能够帮助我?
我想编写一个服务,该服务在服务启动时在后台记录,并在服务停止时停止记录.
我在这里找到了一些关于它的板子,但没有一个可行.
谁能帮我?感谢您的帮助!
谢谢!!
我刚来这地方。
我在 android 中有一个应用程序,可以通过网络流式传输相机,并有一个 SurfaceView 组件来显示预览(我正在流式传输的内容)。
我想记录我在预览(surfaceview)中看到的内容而不重新打开相机,因为它刚刚从流中打开。
在棒棒糖中,我看到您可以使用 MediaRecorder api 进行录制并将视频源设置为 SURFACE。
我如何记录简单地添加一个从表面记录的新 MediaRecorder 对象。假设您已完成所有内容设置,应用程序可以正常工作并进行流式传输,并在 SurfaceView 组件中显示预览。我想定义一个新的记录器,并将源设置为表面视图。
谢谢
编辑:
您好,我尝试使用以下代码进行记录:
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setOutputFile(getVideoFile(activity, true).getAbsolutePath());
mMediaRecorder.setVideoEncodingBitRate(10000000);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoSize(mVideoSize.getWidth(), mVideoSize.getHeight());
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
int orientation = ORIENTATIONS.get(rotation);
mMediaRecorder.setOrientationHint(orientation);
mMediaRecorder.prepare();
Run Code Online (Sandbox Code Playgroud)
假设您有一个应用程序可以打开相机并流出网络并在 SurfaceView 中显示预览。我想添加一个新的媒体记录器来记录表面视图中的内容。
我对 zeranoe 的最新 ffmpeg 有问题。\n每 13h14m ffmpeg 就会停止录制。
\n\nffmpeg started on 2017-09-28 at 10:36:49\nReport written to "ffmpeg-20170928-103649.log"\nCommand line:\n"D:\\\\ffmpeg\\\\ffmpeg.exe" -report\nffmpeg version N-87353-g183fd30 Copyright (c) 2000-2017 the FFmpeg developers\n built with gcc 7.2.0 (GCC)\n configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs …Run Code Online (Sandbox Code Playgroud) 我正在通过命令行使用 FFmpeg 3.3.4 版(通过 brew 安装)在我的 macOS Sierra (10.12.6) 上进行一些自动化测试期间记录我的桌面。
我只想记录屏幕的特定部分,但不幸的是,我无法在文档中找到合适的选项来实现我的目标。
根据avfoundation的FFmpeg 文档,这是我使用的命令:
ffmpeg
-f avfoundation // avfoundation
-pix_fmt uyvy422 // pixel format
-i 1 // input: desktop
-r 30 // framerate for output
[PATH]/test.mp4 // filename
Run Code Online (Sandbox Code Playgroud)
当我运行此命令时,我有以下输出:
ffmpeg version 3.3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.37)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.4 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-ffplay --enable-frei0r --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librtmp --enable-libschroedinger …Run Code Online (Sandbox Code Playgroud) 我想只用android4格式录制视频.我希望容器和编解码器是MPEG4.所以这就是我为此所做的.
Thread video = new Thread(new Runnable() {
public void run() {
videoRecorder = new MediaRecorder();
videoRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
videoRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
videoRecorder.setVideoEncodingBitRate(56 * 8 * 1024);
videoRecorder.setVideoSize(176, 144);
videoRecorder.setVideoFrameRate(12);
videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
videoRecorder.setOutputFile("/sdcard/video.m4e");
try {
videoRecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
videoRecorder.start();
}
});
video.start();
Run Code Online (Sandbox Code Playgroud)
现在,录制完成后,我将视频录制到video.m4e文件中.但是当我检查它的信息时,我得到了以下信息:

同时我使用以下内容录制音频:
Thread audio = new Thread(new Runnable() {
public void run() {
audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
audioRecorder.setOutputFile("/sdcard/audio.amr");
try {
audioRecorder.prepare();
} catch (IllegalStateException e) { …Run Code Online (Sandbox Code Playgroud) 我正在开发一个桌面应用程序,它要求我连接到网络摄像头并以MPEG,AVI,MP4和WMV格式录制(保存)视频并刻录到CD/DVD中.该应用程序是在Win Forms中.我只是在寻找免费或开源的解决方案或控件.
我已经使用Aforge.Net将AVI保存为AVI,但它需要更多的尺寸来保存(例如15sce 320x240视频的60-100MB).我预计10秒会有1MB.这是代码:
using System;
using System.Drawing;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Video.VFW;
namespace Aforge_Web_Cam
{
public partial class VideoForm : Form
{
private FilterInfoCollection VideoCaptureDevices;
private VideoCaptureDevice FinalVideo = null;
private VideoCaptureDeviceForm captureDevice;
private Bitmap video;
private AVIWriter AVIwriter = new AVIWriter();
private SaveFileDialog saveAvi;
public VideoForm()
{
InitializeComponent();
}
private void VideoForm_Load(object sender, EventArgs e)
{
VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
captureDevice = new VideoCaptureDeviceForm();
}
private void butStart_Click(object sender, EventArgs e)
{
if (captureDevice.ShowDialog(this) == …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用AVFoundation. 这有效。我还尝试向视频添加叠加层,例如包含日期的文本标签。
例如:保存的视频不仅是相机看到的,还有时间戳。
这是我保存视频的方式:
func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {
saveVideo(toURL: movieURL!)
}
private func saveVideo(toURL url: URL) {
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: url)
}) { (success, error) in
if(success) {
print("Video saved to Camera Roll.")
} else {
print("Video failed to save.")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个movieOuput是一个AVCaptureMovieFileOutput。我的预览图层不包含任何子图层。我尝试将时间戳标签的图层添加到 previewLayer,但这没有成功。
我已经尝试过Ray Wenderlich 的例子以及这个堆栈溢出问题。最后,我也尝试了这个教程,所有这些都无济于事。
如何为相机胶卷中保存的视频中的视频添加叠加层?
xcode avfoundation video-recording avcapturemoviefileoutput swift