Android视频对流媒体无效

Android视频对流媒体无效,android,video-streaming,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.on

我正在尝试以下代码播放视频

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
[流]

索引=0

编解码器名称=h263

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

编解码器类型=视频

编解码器时间基数=1001/30000

编解码器\标签\字符串=s263

编解码器标签=0x33363273

宽度=176

高度=144

具有_b_帧=0

样品长宽比=12:11

显示纵横比=4:3

pix_fmt=yuv420p

帧速率=25/1

平均帧速率=25/1

时间基数=1/25

语言=und

开始时间=0.000000

持续时间=180.040000

nb_框架=4501

标记:language=und

[/STREAM]

[流]

索引=1

编解码器名称=amrnb

编解码器\u long\u name=自适应多速率窄带

编解码器类型=音频

编解码器\u时间\u基数=0/1

编解码器\标签\字符串=samr

编解码器标签=0x726d6173

抽样率=8000.000000

通道=1

每个样本的位=0

帧速率=0/0

平均帧速率=0/0

时间基数=1/8000

语言=und

开始时间=0.000000

持续时间=180.000000

nb_框架=9000

标记:language=und

[/STREAM]


试试这个::

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


试试这个::

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


请阅读此文档:。 仅使用
h263
进行编码是不够的,因为Android中的流媒体格式是有效的

分辨率必须为:
176 x 144 px
480 x 360 px
,并且在文档底部说明:

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

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

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


请阅读此文档:。 仅使用
h263
进行编码是不够的,因为Android中的流媒体格式是有效的

分辨率必须为:
176 x 144 px
480 x 360 px
,并且在文档底部说明:

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

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

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


您是在使用真实的设备还是在模拟器上进行测试?这可能就是问题所在。由于仿真器的性能降低,您应该在一些真实的设备上试用,它们应该可以工作。我也有类似的问题。你是在使用真实的设备还是在模拟器上测试?这可能就是问题所在。由于仿真器的性能降低,您应该在一些真实的设备上试用,它们应该可以工作。我也有类似的问题。