Android-видео не подходит для потоковой передачи - PullRequest
1 голос
/ 20 сентября 2011

я пытаюсь использовать следующий код для воспроизведения видео.

public class VidplayerActivity extends Activity {

    private MediaController mc;
    String LINK = "http://***/test.3gp"; // 5 mb 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        try {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            VideoView vd = (VideoView) findViewById(R.id.delta);

            Uri uri = Uri.parse(LINK);

            mc = new MediaController(this);
            vd.setMediaController(mc);

            vd.setVideoURI(uri);
            vd.start();
        }
        catch(Exception e) {
            System.out.println(e.getStackTrace());
        }
    }

}

показывает «Извините, это видео не подходит для потоковой передачи на это устройство» в android 1.5 и 1.6.И детали видео ниже

РЕДАКТИРОВАТЬ:

Вход # 0, MOV, MP4, M4A, 3GP, 3G2, MJ2, из '/ дома /cvbcvb / Desktop / test.3gp ':

Метаданные:

major_brand     : 3gp4

minor_version   : 512

compatible_brands: isomiso23gp4

Продолжительность: 00: 03: 00.04, начало: 0,000000, битрейт: 150 кбит / с

Stream #0.0(und): Video: h263, yuv420p, 176x144 [PAR 12:11 DAR

4: 3], 138 кбит / с, 25 к / с, 25 тбр, 25 тбн, 29,97 тбк

Stream #0.1(und): Audio: amrnb, 8000 Hz, 1 channels, flt, 8 kb/s

[STREAM]

index = 0

codec_name = h263

codec_long_name = H.263 / H.263-1996, H.263 + / H.263-1998 / H.263 версия 2

codec_type = video

codec_time_base = 1001/30000

codec_tag_string = s263

codec_tag = 0x33363273

ширина = 176

высота = 144

has_b_frames = 0

sample_aspect_ratio = 12: 11

display_aspect_ratio = 4: 3

pix_fmt = yuv420p

r_frame_rate = 25/1

avg_frame_rate = 25/1

time_base = 1/25

language = und

start_time = 0.000000

продолжительность = 180.040000

nb_frames = 4501

TAG: language = und

[/ STREAM]

[STREAM]

index = 1

codec_name = amrnb

codec_long_name = Adaptive Multi-Rate NarrowBand

codec_type = audio

codec_time_base = 0/1

codec_tag_string = samr

codec_tag = 0x726d6173*

sample_rate = 8000.000000

каналов = 1

bits_per_sample = 0

r_frame_rate = 0/0

avg_frame_rate = 0/0

time_base = 1/8000

language = und

start_time = 0.000000

duration = 180.000000

nb_frames = 9000

TAG: язык = и

[/ STREAM]

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

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

Разрешения должны быть: 176 x 144 px или 480 x 360 px, а также в нижней части документации указано:

Для видеоконтента, передаваемого по HTTP или RTSP, существуют дополнительные требования:

Для контейнеров 3GPP и MPEG-4 атом moov должен предшествовать любым атомам mdat.

Для контейнеров 3GPP, MPEG-4 и WebM сэмплы аудио и видео, соответствующие одному и тому же смещению по времени, могут находиться на расстоянии не более 500 КБ. Чтобы минимизировать этот аудио / видео дрейф, рассмотрите возможность чередования аудио и видео в меньших размерах фрагментов.

0 голосов
/ 20 сентября 2011

попробуйте это ::

   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 {


            mVideoView.setVideoPath(path);
            mVideoView.setMediaController(new MediaController(this));
            mVideoView.requestFocus();

videoview.xml

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

А также просмотреть это

...