Android: не может изменить размер видео кодировки и как кодировать h.264 - PullRequest
0 голосов
/ 11 августа 2011

У меня 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)

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Я написал небольшое приложение (на уровне API 7) для записи видео с кодеком H264 и сохранения его на SD-карте. в моем случае можно было установить кодек H264 на медиа-рекордер:

    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

наконец я скопировал записанный файл на свой ноутбук и проверил кодек с помощью vlc player. я все еще был кодеком H264 в деталях кодека vlc.

Я запустил приложение по желанию HTC с Android 2.2 (Froyo). я не знаю почему, но, по моему мнению, Android 2.2+ поддерживает кодирование h264.

1 голос
/ 11 августа 2011

Согласно этой ссылке вы не можете сделать это в 2.1 (только в 3.0+).Это просто невозможно сделать.

...