当我通过MediaRecorder录制视频时,它始终以横向模式录制,无论实际的设备方向如何.如何强制MediaRecorder/Camera使用真正的方向?
我是服务器端开发的新手.我想处理一个应用程序,我需要通过我的应用程序从我的Android设备上录制Helix Server上的视频.我在Windows Server PC上安装了Helix Server.
在Android应用程序中,我正在尝试在Helix服务器上传录制的视频.我已经实现了在SD卡上录制视频的应用程序,但我想直接在Helix Server上录制并保存该视频.我已经实现了我的Android应用程序如下:
public class NewRecordingVideo extends Activity implements SurfaceHolder.Callback {
private MediaRecorder recorder;
boolean flag = false;
boolean startedRecording = false;
boolean stoppedRecording = false;
SurfaceHolder mHolder;
SurfaceView videoSView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_main);
recorder = new MediaRecorder();
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
videoSView = ((SurfaceView)findViewById(R.id.surfaceView1));
mHolder=videoSView.getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
((Button)findViewById(R.id.startBtn)).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View arg0) {
if(startedRecording == false) {
recorder.start();
startedRecording = true;
Toast.makeText(NewRecordingVideo.this,
"Your video …
Run Code Online (Sandbox Code Playgroud) 尝试捕获视频并使用本地套接字将其保存为Mp4/3gp格式的SD卡.能够按字节写入sd卡,但视频文件不可播放.我已经经历了很多例子:
https://github.com/fyhertz/spydroid-ipcamera
https://github.com/mconf/sipdroid
还有很多.我注意到有人建议这可能是文件头的问题.我试图从标题跳过那些"mdat"数据:
private void skipHeader() throws IOException {
// Skip all atoms preceding mdat atom
byte[] buffer = new byte[3];
while (true) {
while (mReceiver.getInputStream().read() != 'm');
mReceiver.getInputStream().read(buffer,0,3);
if (buffer[0] == 'd' && buffer[1] == 'a' && buffer[2] == 't') break;
}
}
Run Code Online (Sandbox Code Playgroud)
最后没有什么对我有用.我需要做些什么来使这些视频文件可以使用Local Socket播放
我正在使用我正在构建的移动网络应用程序的文件录制功能:
<input id="file-camcorder" type="file" name="camcorder" accept="video/*" capture="camcorder"></input>
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法以某种方式限制录制的视频长度,或者以某种方式通知用户他们的录制时间过长.问题是,当您选择在移动设备上录制时,您将被从Web应用程序中删除,因此我不知道在用户使用手机的本机录制应用程序时与用户进行任何交互.
如果有人有任何想法,那就太好了.谢谢!
嗨,我正在开发一个带有视频录制功能的应用程序.我遇到了两个插件,能够捕获/保存图像作为文件与颤振:
Camera v0.0.2和Image_picker v0.2.1,它们运行良好,是官方的扑动插件.
从本质上讲,我想构建一个具有抖动视频录制功能的迷你相机插件,可以无缝地与iOS和Android配合使用.
任何建议,方向,升级这些插件的方法都是受欢迎的.
谢谢你!
我发现以纵向模式录制的视频将旋转90度.因此,当我设置mediaRecorder时,我使用以下代码来旋转它:
if (this.getResources().getConfiguration().orientation !=Configuration.ORIENTATION_LANDSCAPE)
{
mediaRecorder.setOrientationHint(270);
}
else
{
mediaRecorder.setOrientationHint(0);
}
mediaRecorder.setOutputFile(file_name);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
Run Code Online (Sandbox Code Playgroud)
由于我在surfaceCreated方法中使用了以下代码,因此预览也是正确的方向:
Camera.Parameters params = camera.getParameters();
if (this.getResources().getConfiguration().orientation
!=Configuration.ORIENTATION_LANDSCAPE)
{
camera.setDisplayOrientation(90);
}
else
{
camera.setDisplayOrientation(0);
}
params.setRotation(90);
camera.setParameters(params);
Run Code Online (Sandbox Code Playgroud)
这样,在设备上播放时,录制的视频方向正确.然而,在上传到互联网后,视频仍然可以旋转90度.有没有人对此提出建议?非常感谢.
目前在直播上做项目,我成功播放了直播视频.现在我的下一个任务是录制正在VideoView中播放的视频.我曾经搜索过,能够找到捕获视频但是有表面(相机),但在VideoView中我没有任何表面.
任何帮助赞赏
我试图从终端创建一个视频,但我不能成功.它像这样给终端带来错误.
adb shell screenrecord /sdcard/screenshotyyyy.mp4
ERROR: unable to create encoder input surface (err=-38)
WARNING: failed at 320x480, retrying at 720x1280
ERROR: unable to create encoder input surface (err=-38)
Run Code Online (Sandbox Code Playgroud) android video-streaming adb video-recording android-4.4-kitkat
在我的应用程序中,我录制了一段视频然后播放.为了录制视频,我使用了以下代码
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
File MyMedia=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),"Directory");
mediaRecorder.setOutputFile(MyMedia.getAbsolutePath()+"/filename.mp4");
Run Code Online (Sandbox Code Playgroud)
它工作正常,但与本机录像机录制的另一个视频相比,视频清晰度有点低.请告诉我如何设置与本机录像机相同的视频清晰度的解决方案.
video-recording ×10
android ×7
adb ×1
autorotate ×1
buffer ×1
camera ×1
file ×1
fileapi ×1
flutter ×1
helix-server ×1
javascript ×1
localsocket ×1
mobile ×1
mp4 ×1
plugins ×1
upload ×1
video ×1
xcode9-beta ×1