Articles of video编码

如何实现语音和video聊天

我正在开发一个Android应用程序,我必须在其中实现点对点语音聊天。 我在android中发现这可能在API级别12或更高级别,因为Google在API级别12中添加了android.net.rtp包。通过使用此包,我们可以实现点对点语音聊天和video聊天。 但我需要为API级别8实现此function。现在我的问题是: 我如何为API级别8实现此对等语音聊天。 是Jmf(java媒体框架)与android兼容。 是否有任何其他API可供Android实现此想法。

如何在各种设备上可靠地捕获Android上的低分辨率video?

你好Androidvideo专家:) 我正在开发一个Android应用程序,它允许用户捕获video并将其上传到远程服务器(它比这更复杂,但应用程序的其余部分并不重要)。 由于上传要求,video的大小合理,因此不是超高分辨率。 假设最大为680×480或10Mb /分钟。 这在Apple设备上没问题。 我曾经有过一个完全噩梦,试图在一系列Android设备上以可靠的低比特率捕获video。 据我了解,有两种方法可以在Android上捕获video: 1)使用Media Recorder / Camera API 2)使用Intent打开摄像机video捕获应用程序 选项1)提供了最大的灵活性,使我们可以轻松更改捕获分辨率。 然而,Android Camera API在各种设备上都不可靠,而且我有很好的信息(包括那些在这个问题上与Google联系的人),如果你使用这个API捕获video,那么它会在50%的那里的设备。 Zoom Camera FX使用Intent进行video捕获是有原因的。 变焦相机(不同的应用程序)似乎使用媒体记录器,但有很多坏评论video崩溃或不工作。 选项2)适用于各种设备,因为它使用设备上的内置应用程序。 问题是你无法控制分辨率,Intent上有质量提示,但相机应用通常会忽略这一点。 我的三星Galaxy S3默认以约2Mb / s的速度录制video。 这是太高的分辨率。 内置应用程序当然可以改变分辨率,但这依赖于用户难以控制的动作。 我知道我可以使用诸如ffmpeg之类的库来在捕获后更改video的分辨率。 然而,这需要我为Android编译库,而且我也被告知,为了在设备上合法使用解码/编码编解码器,您必须支付每个应用程序副本大约1美元的许可费。 由于此应用程序可以免费使用,因此不能选择。 这就是我所处的位置。 我已经搜索了很长时间以获得答案,但我无法弄清楚如何使用Android可靠地捕获低分辨率video。 任何帮助非常感谢! 马修

Unity – 如何在RawImage上使用VideoPlayer API播放旋转和全屏video

由于MovieTexture在Unity 5.6.0b1之后已被弃用,我使用VideoPlayer Api在RawImage for Android上播放video,参考此处 。 我正在尝试添加一个切换按钮,从RawImage Texture上播放的video的初始大小切换到全屏,并在video停止后返回原始状态。 我有一个完美播放的video,到目前为止,我可以使用此代码将video转换更改为全屏。 void Update () { if (Input.GetButtonDown(“Jump”)) { image.rectTransform.offsetMax = Vector2.Lerp(Vector2.up, Vector2.down, 100); image.rectTransform.offsetMin = Vector2.Lerp(Vector2.left, Vector2.right, 100); image.rectTransform.rotation = Quaternion.AngleAxis(Mathf.Lerp(0f, 90f, 50), Vector3.forward); } } if块内的前两行能够全屏显示播放video的RawImage 效果,如图2的第2部分所示 。 这是Vector2的文档。 对于第三行轮换代码,我参考了Unity论坛上的这个讨论 ,但我仍然没有得到我想要的效果, 结果在第3节 。 我想旋转RawImage的内容,但我正在旋转RawImage本身,这可能是因为引用没有描述旋转内容。 任何人都可以帮我find解决方法。 如果它帮助我使用的Unity版本是Unity 5.6.0b11 Beta,并且如果要在您的设备上测试,请下载示例项目。 Unity Video Player.zip 18.33MB您也可以在YouTube上关注新的VideoPlayervideo教程 。 更新1 到目前为止,我唯一得到的是,我只尝试使用旋转代码并通过删除内部的前两行if块,我能够旋转video,但是当我尝试拉伸RawImage时,它是拉伸到外面的屏幕。 请看这里的图像 […]

在对话框android中播放video

我想在单击图像时出现的对话框中播放video。 video无法播放,应用程序崩溃。 这是我的代码: image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // custom dialog final Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.introvid); dialog.show(); WindowManager.LayoutParams lp = new WindowManager.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp.copyFrom(dialog.getWindow().getAttributes()); dialog.getWindow().setAttributes(lp); final VideoView videoview = (VideoView) findViewById(R.id.surface_view); Uri uri = Uri.parse(“android.resource://”+getPackageName()+”/”+R.raw.introvideo); videoview.setVideoURI(uri); videoview.start(); } }); 我的video位于res / raw文件夹中。 […]

将图像序列转换为video文件android java

我知道这是一个老问题,我已经研究了很多,但似乎没有适当的解决方案。 我有一些方法可以做到这一点,例如: 使用FFmpeg(但它取决于本机代码所以不适合我) Xuggler API(与上面相同的原因) 我正在寻找解决方案甚至建议,可以将多个图像(drawables或bitmaps或其他任何东西)转换成可以在Android手机中播放的video文件。 我已经坚持了3天,并急于寻找解决方案。 我也在为我的问题寻找替代解决方案,而不是将图像转换为video,是否有可能捕获并记录Android手机屏幕,实际上我的应用程序中的屏幕分开? (请不要使用USB线插入计算机或类似的东西。我研究过的时候看到了很多这些,这不是我想要的)。 任何帮助都会对我的英语感激和抱歉,这不是我的母语。

从图像创建video

有没有办法从Android上的一系列图像创建video? 也许是一种扩展MediaRecorder并能够将图像作为输入的方法。 我尝试真正创建video并存储它(例如,作为mpeg4文件)。 谢谢你的任何建议。

当video中没有音频流时,速度更改命令失败 – ffmpeg

我试图通过下面的命令改变不包含音频流的video的速度 String[]{“ffmpeg”, “-y”, “-i”, orginalFile, “-threads”, “5”, “-preset”, “ultrafast”, “-strict”, “experimental”, “-filter_complex”, “[0:v]setpts=0.50*PTS[v];[0:a]atempo=2.0[a]”, “-map”, “[v]”, “-map”, “[a]”, “-b”, “2097k”, “-ab”, “48000”, “-ac”, “2”, “-ar”, “22050”, “-vcodec”, “mpeg4”, destinationFile}; 命令失败,表明video没有音频流 。 那么,我是否需要检查video中是否存在音频流,或者在这种情况下我能做些什么?

Android Media Codecvideo解码

这是我的第一个问题,如果我错过了什么,请告诉我! 使用Android API 16的新媒体编解码器实现来尝试解码video,以便我可以发送帧作为纹理应用(纹理部分已经完成)。 所以我在堆栈的帮助下得到了以下代码,但是在runOutputBuffer()我的outputBufIndex返回-1 (或者在无限循环中,因为我提供了-1作为超时)任何人都可以帮助这个,和/或提供有关去哪里的建议? 感谢您的帮助,这是我的代码: public MediaDecoder( BPRenderView bpview ) { surface = bpview; extractor = new MediaExtractor( ); extractor.setDataSource( filePath ); format = extractor.getTrackFormat( 0 ); mime = format.getString( MediaFormat.KEY_MIME ); createDecoder( ); runInputBuffer( ); } public void createDecoder( ) { codec = MediaCodec.createDecoderByType( “video/avc” ); // format =extractor.getTrackFormat( 0 ); Log.d( […]

Android mediarecorder停止失败

我遇到了一个非常奇怪的行为:有时我的mediarecorder崩溃并出现错误“停止失败”,有时它工作正常。 是我的错还是系统的错误? 我不知道出了什么问题。 private void stopRecording(){ ticker.cancel(); ticker.purge(); recorder.stop(); startBtn.setText(“Start”); recordInProcess = false; markList = locWriteTask.getMarkArray(); mCamera.lock(); recorder.release(); } private void startRecording(){ startBtn.setText(“Stop”); recordInProcess = true; recorder = new MediaRecorder(); mCamera.unlock(); recorder.setCamera(mCamera); recorder.setPreviewDisplay(mSurfaceHolder.getSurface()); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); recorder.setMaxDuration((int) 10000000); recorder.setVideoSize(320, 240); recorder.setVideoFrameRate(15); recorder.setOutputFile(FULL_PATH_TO_LOCAL_FILE + counter + MP4); try{ recorder.prepare(); } catch (Exception e){ finish(); […]

Android VideoView无法播放videomp4

我使用Android VideoView通过HTTP播放video文件。 我的问题是我的手机提示“无法播放video抱歉,此video无法播放”。 从HTTP播放mp4文件时。 但是播放另一个mp4video文件时可以。 当在较新的手机中使用时,如三星Galaxy S,我的程序可以成功播放来自HTTP的mp4video文件。 我的手机: Samsung GT-S5830 Android version: 2.3.4 Display: 320×480. Video file 1 (OK): Video Codec: H.264 Resolution: 640×360 Others: 16:9, 340kbps, 29.92fps Audio Codec: AAC, 44kHz 96kbps Stereo. Video file 2 (Fail): Video Codec: H.264 Resolution: 640×360 Others: 16:9, 993kbps, 25fps Audio Codec: AAC 44kHz 125kbps Stereo. 下面是我的代码,硬编码成功播放video文件1。 public […]