Я пишу приложение, которое может записывать видео 3GP.Я пробовал как MMAPI, так и Invoke API.Но есть следующие проблемы:
Использование MMAPI:
- Когда я записываю в поток, он записывает видео в потоковом формате RIMM.при попытке воспроизвести это видео проигрыватель выдает ошибку
"Unsupported media format."
- при записи в файл.Он создаст файл размером 0.
Используя Invoke API:
- В режиме MMS он не позволяет записывать видео более 30 секунд.
- В обычном режиме размер файла очень велик.
- После запуска приложения камеры у меня больше нет контроля над приложением.
Вот мой исходный код:
_player = javax.microedition.media.Manager
.createPlayer("capture://video?encoding=video/3gpp&mode=mms");
// Я пробовал каждую кодировку, возвращаемую из метода System.getProperty ("video.encodings")
_player.realize();
_videoControl = (VideoControl) _player.getControl("VideoControl");
_recordControl = (RecordControl) _player.getControl("RecordControl");
_volumeControl = (VolumeControl) _player.getControl("VolumeControl");
String videoPath = System.getProperty("fileconn.dir.videos");
if (videoPath == null) {
videoPath = "file:///store/home/user/videos/";
}
_recordControl.setRecordLocation(videoPath + "RecordedVideo.3gp");
_player.addPlayerListener(this);
Field videoField = (Field) _videoControl.initDisplayMode(
VideoControl.USE_GUI_PRIMITIVE,
"net.rim.device.api.ui.Field");
_videoControl.setVisible(true);
add(videoField);
_player.start();
ВКЛ. Пункт меню Пуск Выбор:
try {
_recordControl.startRecord();
} catch (Exception e) {
_player.close();
showAlert(e.getClass() + " " + e.getMessage());
}
В меню «Стоп» Выбор элемента:
try {
_recordControl.commit();
} catch (Exception e) {
_player.close();
showAlert(e.getClass() + " " + e.getMessage());
}
Пожалуйста, дайте мне знать, если я делаю что-то не так.