Articles of video编码

Android 2.2 VideoView问题

我想从我的SD卡上播放一部电影。 我尝试使用以下代码: VideoView videoView = (VideoView) findViewById(R.id.videoView); final String MEDIA_PATH = new String(“/sdcard/robot.avi”); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); videoView.setVideoPath(MEDIA_PATH); videoView.setMediaController(mediaController); videoView.start(); 但是当我试图播放文件时,我收到一条错误消息。 “video未find”或类似的东西。 当我尝试从网络流媒体时,video工作但非常迟钝。 什么是在我的应用程序中播放video的最佳方式? 谢谢

如何在Android上确定video宽度和高度

我有一个video文件,我想获得video的宽度和高度。 我不想玩它,只是为了获得尺寸。 我试过使用MediaPlayer: MediaPlayer mp = new MediaPlayer(); mp.setDataSource(uriString); mp.prepare(); int width = mp.getVideoWidth(); int height = mp.getVideoHeight(); 但它的宽度和高度返回0,因为VideoSizeChangedEvent尚未触发。 如何获得video的宽度和高度? UPD:我需要API版本7

Android记录广场video

我目前正在尝试使用MediaRecorder和相机录制video。 但对于我的应用程序,我需要以方形格式录制video,如Instagram与图片一样,以独立于设备方向。 有没有办法自动裁剪和预览广场重拍(fi 800×800)或我必须手动裁剪video(我在Android设备上有FFMPEG)?

Android前置摄像头正在录制7.5到8.0之间的video – setVideoFrameRate不起作用 – 三星galaxy s2

我正在尝试使用前置摄像头录制video,以下是代码片段,我将setVideoFrameRate设置为29,但录制的video的fps介于7.5和8之间。我需要录制video的videofps 29。 recorder.setPreviewDisplay(holder.getSurface()); recorder.setOnInfoListener(this); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setVideoFrameRate(29); recorder.setVideoSize(640,480); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); recorder.setOutputFile(“/sdcard/recordvideooutput.mp4”); recorder.setMaxDuration(16*1000);

使用三星手机时,流式传输到VideoView只能在Wifi上播放

我使用以下库将YouTubevideo流式传输到Android应用程序。 http://code.google.com/p/android-youtube-player/source/browse/trunk/OpenYouTubeActivity/src/com/keyes/youtube/OpenYouTubePlayerActivity.java?r=3 我成功地通过3G和Wifi在HTC和摩托罗拉手机上播放video。 但是,在三星Galaxy(Epic 4G)和三星Galaxy II手机上,我只能使用Wifi播放。 3G给了我这个错误:“无法播放video。抱歉,此video无法播放。” 我试过强制低质量的YouTube流媒体,但这没有帮助。 我在我的日志中看到在两种情况下都调用了Start() (3G / Wifi)。 这是VideoView的问题吗? 有解决方法吗? 编辑2 这些video来自YouTube API。 我尝试使用嵌入式和普通流,以及可用的最低质量流(每个video不同)。 此外,我不认为这是一个编码问题,因为相同的video使用Wifi正确播放。 编辑1 无论是使用Wifi还是不使用3G,我都会收到以下输出。 01-30 15:22:38.305: E/MediaPlayer(3831): error (1, -1) 01-30 15:22:38.305: E/MediaPlayer(3831): callback application 01-30 15:22:38.305: E/MediaPlayer(3831): back from callback 01-30 15:22:38.309: E/MediaPlayer(3831): Error (1,-1) 根据此链接 ,这些错误意味着以下(我认为): /* Definition of first error event in range (not an […]

Android MediaCodec:减少mp4video大小

我正在寻找一种“压缩”mp4video的方法。 为此,我想降低video的分辨率和/或降低FPS。 经过长时间的研究,我认为这样做的方法是使用MediaCodec和相关的API,如下所示: – > MediaExtractor从mp4文件中提取编码的媒体数据。 – > MediaCodec(解码器):解码每个帧以供以后处理。 – > MediaCodec(编码器):此时,我猜我们应该在哪里建立MediaFormat参数,例如video分辨率,这应该有助于我们减少mp4文件的最终大小。 – > MediaMuxer用于生成mp4文件(MinSDK 18,这可能是一个问题,但现在……好的)。 我不想使用SurfaceView / TextureView。 关于音频,我不想处理它以降低质量。 我一直在看这里的所有例子: http : //bigflake.com/mediacodec/ 我也看过CTS源代码模块。 我一直在研究以下几个项目: https : //github.com/vecio/MediaCodecDemo/blob/master/src/io/vec/demo/mediacodec/DecodeActivity.java 当然,我已经在stackoverflow上阅读了几十篇post。 问题是我还没有find任何适合这个porpuse的代码示例。 我尝试将各种代码片段放在一起放在一个项目中,但实际上并没有用。 谢谢。

在Android中返回video播放活动时出现黑屏

我正在开发Android应用程序ServeStream,我遇到了我无法修复的问题。 我的应用程序将使用android MediaPlayer类流式传输音乐和video。 我在以下示例中find了我的课程模型: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html 这个例子和我自己的代码之间的区别是我的MediaPlayer在一个服务中运行,允许它在后台继续播放。 示例android代码的问题是如果我正在观看video并且我离开当前窗口/活动(即按菜单按钮等)并返回到回放活动我得到黑屏但仍然从video接收音频那是在玩。 最初创建播放活动时,将执行下面显示的代码。 此代码实际上创建了用于播放的视图,然后将其绑定到媒体播放器: setContentView(R.layout.mediaplayer_2); mPreview = (SurfaceView) findViewById(R.id.surface); holder = mPreview.getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); … mMediaPlayer.setDisplay(holder); 重要的一行是mMediaPlayer.setDisplay(holder),因为它将当前视图/显示绑定到媒体播放器。 离开活动时,视图(“持有者”)将被销毁。 返回活动并重新创建视图后,再次执行mMediaPlayer.setDisplay(holder)似乎不会重新附加新创建的视图。 显示黑屏而不是video。 有没有人有解决此问题的解决方法或解决方案。 我将不胜感激任何帮助或建议。

Androidvideofilter

我正在尝试创建一个应用程序,我可以在录制的video中添加filter。 基本上,我想复制Instagramvideo或Viddy中存在的function。 我做过研究,我不能把它拼凑起来。 我已经研究过使用GLSurfaceView播放录制的video,我知道我可以使用NDK进行像素操作并将其发送回SurfaceView或以某种方式保存。 问题是,我不知道如何发送像素数据,因为似乎没有访问它的function。 这个想法来自Camera函数“onPreviewFrame”。 该函数返回一个字节数组,允许我操纵像素并显示它。 另一个想法是使用GLSurfaceView并使用OpenGL来渲染filter。 GLSurfaceView有一个你可以设置的渲染器,但我对OpenGL不是很熟悉。 但同样,这又回到了实际获取每个video帧的像素。 我还读到了将每个帧作为纹理进行翻录,然后在OpenGL中操作纹理,但我遇到的答案并不十分详细。 最后,我研究了JavaCV。 试图使用FFmpegFrameGrabber,但我也没有多少。 我想只抓一帧,但是当我尝试将帧的ByteBuffer写入ImageView时,我得到一个“不足以容纳像素的缓冲区”错误。 任何指导都会很棒。

在webview中播放本地video

我想在人行横道webview中播放本地video。 我正在通过打开我的活动的意图获取video路径,因此它可以存储在内部或存储在SD卡上。 使用此url file:///storage/emulated/0/Download/movies/movie.mp4我Failed to load resource: net::ERR_ACCESS_DENIED 。 使用带有URL.createObjectURL(file);输入文件对话框URL.createObjectURL(file); 有用。 但因为我知道路径,我不想再手动选择它。 禁止设置输入文件的值。 使用路径创建URL也是不可能的,因为它需要文件或blob。 由于可能存在大文件大小,因此无法将其临时复制到SD卡。 这给我找不到文件错误: @Override public WebResourceResponse shouldInterceptLoadRequest(XWalkView view, String url) { if(url.contains(“file:///storage”)){ try { return new WebResourceResponse(“video/*”, “UTF-8”, new FileInputStream(url)); } catch (FileNotFoundException e) { e.printStackTrace(); } } return super.shouldInterceptLoadRequest(view, url); } 我也定义了 有关stackoverflow要求访问资产的其他问题,所以我创建了这个新问题

android:在设备或模拟器上捕获video

是否有可能在设备本身或模拟器上捕获Android屏幕上正在发生的video? 谢谢!