Android视频无法用于流式传输

时间:2011-09-20 06:51:03

标签: android video-streaming

我正在尝试播放代码播放视频。

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,来自   '/home/cvbcvb/Desktop/test.3gp':

     

元数据:

major_brand     : 3gp4

minor_version   : 512

compatible_brands: isomiso23gp4
     

持续时间:00:03:00.04,开始:0.000000,比特率:150 kb / s

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

4:3],138 kb / s,25 fps,25 tbr,25 tbn,29.97 tbc

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

[STREAM]

     

索引= 0

     

codec_name = H263

     

codec_long_name = H.263 / H.263-1996,H.263 + / H.263-1998 / H.263   第2版​​

     

codec_type =视频

     

codec_time_base =三万分之一千○一

     

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 =25分之1

     

语言= UND

     

start_time = 0.000000

     

持续时间= 180.040000

     

nb_frames = 4501

     

标签:语言= UND

     

[/ STREAM]

     

[STREAM]

     

索引= 1

     

codec_name = amrnb

     

codec_long_name =自适应多速率窄带

     

codec_type =音频

     

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 =8000分之1

     

语言= UND

     

start_time = 0.000000

     

持续时间= 180.000000

     

nb_frames = 9000

     

标签:语言= UND

     

[/ STREAM]

2 个答案:

答案 0 :(得分:1)

请阅读本文件:Android Supported Media Formats。 仅使用H 263进行编码仅限于在Android中使用有效的流式传输格式。

决议必须是:176 x 144 px480 x 360 px,并且在文档的底部也有说明:

  

对于通过HTTP或RTSP流式传输的视频内容,还有其他要求:

     

对于3GPP和MPEG-4容器,moov原子必须在任何mdat原子之前。

     

对于3GPP,MPEG-4和WebM容器,对应于相同时间偏移的音频和视频样本可以相隔不超过500KB。为了最大限度地减少音频/视频漂移,请考虑以较小的块大小交错音频和视频。

答案 1 :(得分:0)

试试这个::

   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"
/>

And also view this