在ICS中运行RTSP实时流时出错

时间:2013-03-12 07:46:39

标签: android media-player inputstream rtsp

我尝试通过VideoViewMediaPlayer播放RTSP直播...我能够获得AAC音频和H264视频流。但是在15-20分钟之后,RTSP堆栈变得越来越大,而且我的应用程序和平板电脑也崩溃了......那么是否有任何增加Android源代码中RTSP堆栈大小的解决方案? (我有完整的AOSP ICS代码)。任何形式的帮助都很明显。

@Ganesh请在下面找到应用程序源代码。

package com.example.testvideo;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.widget.VideoView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        VideoView videoDisplay = (VideoView) findViewById(R.id.videoview);
        videoDisplay.setVideoPath("rtsp://192.168.2.160:554/live/av0?user=admin&passwd=admin");
        videoDisplay.start();

        /*VideoView videoDisplay2 = (VideoView) findViewById(R.id.videoview2);
        videoDisplay2.setVideoPath("rtsp://192.168.2.160:554/live/av1?user=admin&passwd=admin");
        //videoDisplay2.start();
*/      

        try {
              File filename = new File(Environment.getExternalStorageDirectory()+"/Sample_log_file.txt");
              filename.createNewFile();
              String cmd = "logcat -d -f "+filename.getAbsolutePath();
              Runtime.getRuntime().exec(cmd);
           } catch (IOException e) {
              e.printStackTrace();
            } 
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

1 个答案:

答案 0 :(得分:0)

从附带的here日志中,我观察到以下内容:

Line no. 4060: F/libc    ( 1203): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)

这意味着您的代码崩溃了。进一步在日志中,

Line no. 4084: I/DEBUG   (   83): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000

从崩溃日志的堆栈跟踪中

I/DEBUG   (   83):          #00  pc 0000db2c  /system/lib/libc.so (memcpy)
I/DEBUG   (   83):          #01  pc 000710ec  /system/lib/libCedarX.so (rtsp_demux_read)
I/DEBUG   (   83):          #02  pc 000636dc  /system/lib/libCedarX.so
I/DEBUG   (   83):          #03  pc 00012be4  /system/lib/libc.so (__thread_entry)
I/DEBUG   (   83):          #04  pc 00012738  /system/lib/libc.so (pthread_create)

<强>结论:

从这些观点来看,我得出结论,在rtsp_demux_read函数中,有一个memcpy调用。当程序崩溃时,您已将NULL指针作为目标传递给memcpy函数。您需要进一步调试代码,了解为什么会发生这种情况。