【问题标题】:Android video not valid for streamingAndroid 视频不适用于流式传输
【发布时间】:2011-09-20 06:51:03
【问题描述】:

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

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

codec_name=h263

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

codec_type=视频

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

语言=und

开始时间=0.000000

持续时间=180.040000

nb_frames=4501

标签:语言=und

[/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=1/8000

语言=und

开始时间=0.000000

持续时间=180.000000

nb_frames=9000

标签:语言=und

[/STREAM]

【问题讨论】:

    标签: android video-streaming


    【解决方案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 容器,对应于相同时间偏移的音频和视频样本之间的间隔可能不超过 500 KB。为了尽量减少这种音频/视频漂移,请考虑以较小的块大小交错音频和视频。

    【讨论】:

    • 您是在使用真机还是在模拟器上测试?
    • 这可能是问题所在。由于模拟器的性能降低,您应该尝试一些真实设备,它们应该可以工作。我也有类似的问题。
    【解决方案2】:

    试试这个 ::

       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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多