как воспроизвести видеофайл .3GP в Android

Привет, я хочу воспроизвести видеофайл .3GP на телефоне Android. я попробовал код ниже, но он показывает, что не могу воспроизвести видео. поэтому, пожалуйста, скажите мне, что я буду делать

это мой код

 public class VideoPlay extends Activity {

private String path ;
private VideoView mVideoView;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.videoplay);
    path="http://www.boodang.com/api/videobb/101009_Pure.3gp";
    mVideoView = (VideoView) findViewById(R.id.video);

    if (path == "") {
        // Tell the user to provide a media file URL/path.
        Toast.makeText(
                VideoPlay.this,
                "Please edit VideoViewDemo Activity, and set path"
                        + " variable to your media file URL/path",
                Toast.LENGTH_LONG).show();

    } else {

        /*
         * Alternatively,for streaming media you can use
         * mVideoView.setVideoURI(Uri.parse(URLstring));
         */
        mVideoView.setVideoPath(path);
        mVideoView.setMediaController(new MediaController(this));
        mVideoView.requestFocus();

    }
}
}

XML-макет

  <?xml version="1.0" encoding="utf-8"?>
  <FrameLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
  <VideoView
  android:id="@+id/video"
   android:layout_width="320px"
   android:layout_height="240px">
   </VideoView>
   </FrameLayout>

person Ramakrishna    schedule 27.01.2011    source источник


Ответы (3)


Проверьте следующий код, который есть в демо-версии Android SDK.

package com.example.android.apis.media;

import com.example.android.apis.R;

import android.app.Activity;

import android.os.Bundle;

import android.widget.MediaController;

import android.widget.Toast;

import android.widget.VideoView;

public class VideoViewDemo extends Activity {

    /**
     * TODO: Set the path variable to a streaming video URL or a local media
     * file path.
     */
    private String path = "";
    private VideoView mVideoView;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.videoview);
        mVideoView = (VideoView) findViewById(R.id.surface_view);

        if (path == "") {
            // Tell the user to provide a media file URL/path.
            Toast.makeText(
                    VideoViewDemo.this,
                    "Please edit VideoViewDemo Activity, and set path"
                            + " variable to your media file URL/path",
                    Toast.LENGTH_LONG).show();

        } else {

            /*
             * Alternatively,for streaming media you can use
             * mVideoView.setVideoURI(Uri.parse(URLstring));
             */
            mVideoView.setVideoPath(path);
            mVideoView.setMediaController(new MediaController(this));
            mVideoView.requestFocus();

        }
    }
}

видеопросмотр.xml

<VideoView 
    android:id="@+id/surface_view" 
    android:layout_width="320px"
    android:layout_height="240px"
/>

person chiranjib    schedule 27.01.2011
comment
в чем именно ошибка? также попробуйте другой файл .3gp - person chiranjib; 27.01.2011
comment
01-27 21:04:32.952: ERROR/PlayerDriver(31): Команда PLAYER_INIT завершена с ошибкой или информацией UNKNOWN PVMFStatus 01-27 21:04:32.952: ERROR/MediaPlayer(1559): ошибка (200, -32) 01 -27 21:04:32.952: ОШИБКА/MediaPlayer(1559): Ошибка (200,-32) - person Ramakrishna; 27.01.2011
comment
Android воспроизводит файлы 3gp и mp4, если нет проблем с частотой кадров/битрейтом. Пришлите мне свой код, если хотите, я проверю, является ли проблема кодом или вашим видеофайлом. - person chiranjib; 27.01.2011
comment
я вставил свой код выше, пожалуйста, проверьте приведенный выше код и сообщите мне решение - person Ramakrishna; 27.01.2011
comment
кажется, проблема с URL-адресом ... попробуйте использовать этот образец URL-адреса daily3gp.com/vids/747.3gp . Он должен работать - person chiranjib; 27.01.2011
comment
Убедитесь, что вы добавили в файл манифеста Android разрешение ‹uses-permission android:name=android.permission.INTERNET /› - person chiranjib; 27.01.2011
comment
могут быть проблемы с вашим подключением ... сделайте одну вещь .. просто скопируйте и вставьте оба URL-адреса в свой интернет-браузер и проверьте, воспроизводятся ли они или нет ..... если возможно, пришлите мне свой проект на мой почтовый идентификатор. Я свяжусь с вами .. Идентификатор почты: [email protected] - person chiranjib; 27.01.2011

В этой статье приведен код, аналогичный вашему образцу, хотя есть некоторые отличия, особенно с video.start а в вашем образце полностью отсутствует MediaController.show.

Я предлагаю немного почистить ваш код и попробовать предложения, найденные в упомянутой статье. В обсуждениях статей также есть хорошие отзывы.

person Peter Lillevold    schedule 27.01.2011
comment
Спасибо за ответ. я попробовал вашу ссылку, она показывает, что не могу воспроизвести это видео, это только для mp4link? я хочу воспроизвести файл .3GP - person Ramakrishna; 27.01.2011
comment
Люди в обсуждении предлагают код, который также показывает файлы .3gp. - person Peter Lillevold; 27.01.2011

Как предлагает @Peter Lillevold, вам следует сначала попробовать эталонную реализацию видеоплеера. Вот несколько ссылок:

Попробуйте эти проигрыватели с известным рабочим видеофайлом, ссылка на некоторые из них есть в этот пост. Если вы реализуете плеер, и эти референсные видео работают, а ваше .3gp видео нет, то проблема может заключаться в том, что сам видеофайл не закодирован по стандартам.

person dave.c    schedule 27.01.2011