【问题标题】:android : cannot change encoding video size & how to encoding h.264android:无法更改编码视频大小以及如何编码 h.264
【发布时间】:2011-08-30 20:04:25
【问题描述】:

我有一个 HTC Desire(Android 2.3.3,API 级别 9)。我正在尝试编写一个程序来录制 320x240 h.263 视频。没有任何设置,代码运行良好,输出分辨率为 177x144。但是当我设置视频大小时它总是崩溃。而且我发现只有android 3.0+支持编码h.264,我想知道如何在android 2.1+上做到这一点?我将不胜感激任何一个问题的解决方案。这是我正在做的事情和日志

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioChannels(1);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
recorder.setVideoEncodingBitRate(141000);
recorder.setVideoSize(320,240);
recorder.setMaxDuration(30000);

有日志

08-11 21:57:32.048: ERROR/AndroidRuntime(9546): FATAL EXCEPTION: main
08-11 21:57:32.048: ERROR/AndroidRuntime(9546): java.lang.IllegalStateException
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.media.MediaRecorder.start(Native Method)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at com.mobvcasting.camcorder.CamcorderView.startRecording(CamcorderView.java:75)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at com.mobvcasting.camcorder.Camcorder.onKeyDown(Camcorder.java:36)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.view.KeyEvent.dispatch(KeyEvent.java:1256)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.app.Activity.dispatchKeyEvent(Activity.java:2102)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1666)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2574)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2549)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1881)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.os.Looper.loop(Looper.java:130)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at android.app.ActivityThread.main(ActivityThread.java:3694)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at java.lang.reflect.Method.invokeNative(Native Method)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at java.lang.reflect.Method.invoke(Method.java:507)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
08-11 21:57:32.048: ERROR/AndroidRuntime(9546):     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android h.264 video-encoding


    【解决方案1】:

    根据this 链接,您无法在 2.1 中执行此操作(仅在 3.0+ 中)。根本做不到。

    【讨论】:

    • 我知道android的api是做不到的。但是我想知道是否有第三方来完成这个任务;-)
    【解决方案2】:

    我编写了一个小应用程序(在 api 级别 7 上)来使用 H264 编解码器录制视频并将它们存储在 sd 卡上。 在我的情况下,可以将 H264 编解码器设置为媒体记录器:

        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    

    最后我将录制的文件复制到我的笔记本电脑并使用 vlc 播放器检查了编解码器。 在vlc的编解码器细节上我还是H264编解码器。

    我已经使用 android 2.2 (froyo) 在 htc 上运行了应用程序。 我不知道为什么,但在我看来,android 2.2+ 似乎支持 h264 编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 2012-11-23
      • 1970-01-01
      • 2011-10-30
      • 2013-06-06
      • 2016-08-21
      相关资源
      最近更新 更多