2016-10-04 7 views
0

мне удается играть живой поток из URL, такие как этотЗагрузка RTSP поток играть локально

rtsp://192.168.0.18:554/user=admin&password=&channel=1&stream=0.sdp?

Но я хочу, чтобы загрузить этот поток во временный файл, а затем воспроизводить его на месте, так что я может показаться, что время буферизации короткое (возможно, может быть около 2-4 секунд)

Можно ли это сделать с помощью rtsp? или я должен использовать http? Потому что этот URL работает только на rtsp протокола

Если это так, немного, например помогло бы мне много

Пример моих кодов

cA.mPlayer1 = new MediaPlayer(); 
    try { 
    cA.mPlayer1.setDataSource("rtsp://192.168.0.18:554/user=admin&password=&channel=1&stream=0.sdp?"); 
    cA.mPlayer1.prepareAsync(); 
    cA.mPlayer1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mediaPlayer) { 
     cA.mPlayer1.start(); 
     Toast.makeText(getBaseContext(), "Connecting...", Toast.LENGTH_LONG).show(); 
     } 
    }); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    cA.mCallback1 = new SurfaceHolder.Callback() { 
    @Override 
    public void surfaceCreated(SurfaceHolder surfaceHolder) { 

     cA.mPlayer1.setDisplay(surfaceHolder); 

    } 
    @Override 
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) { 
    } 
    @Override 
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) { 
    } 
    }; 

final SurfaceView surfaceView1 = 
     (SurfaceView) findViewById(R.id.surfaceView1); 
// Configure the Surface View. 
surfaceView1.setKeepScreenOn(true); 
// Configure the Surface Holder and register the callback. 
SurfaceHolder holder1 = surfaceView1.getHolder(); 
holder1.addCallback(cA.mCallback1); 
holder1.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

ответ

0

вы не можете использовать MediaPlayer, чтобы сохранить исходный поток в файле. Вы можете использовать один из них:

1- Захват или декодирование RAW-кадров из реального потока и передача их в ffmpeg и сохранение их на SD-карте в формате .h264.

2- Затем снова выберите файл .h264 и расшифруйте файл, используя ffmpeg, и сохраните файл с расширением .mp4 в SD-карту.

3- удалите файл .h264 программно и сохраните только .mp4 или какой формат вы хотите. Попробуйте воспроизведение .mp4.

https://stackoverflow.com/a/24586256/6502368

 Смежные вопросы

  • Нет связанных вопросов^_^