2013-10-26 2 views
3

Борьба за лучшее качество для G-Box, реализовав библиотеку Vitamio для трансляции в прямом эфире.Качество видео Android Video так плохо на ТВ-боксе, используя библиотеку Vitamio

В коде используется примерный URL-адрес видео, имеющий видео в формате .mp4. но когда мы проигрываем его в Media Player после загрузки, это прекрасно работает, и когда я пытаюсь использовать его в режиме онлайн, качество становится очень низким.

следующее - код для воспроизведения видео на видео.

public class VideoViewDemo extends Activity { 

/** 
* TODO: Set the path variable to a streaming video URL or a local media file 
* path. 
*/ 
private String path = ""; 
private VideoView mVideoView; 
private ProgressDialog progDailog; 
ProgressDialog progressDialog=null; 

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    if (!LibsChecker.checkVitamioLibs(this)) 
     return; 
    setContentView(R.layout.videoview); 
    mVideoView = (VideoView) findViewById(R.id.surface_view); 
    path = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"; 
    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(); 
     return; 
    } else { 
     /* 
     * Alternatively,for streaming media you can use 
     * mVideoView.setVideoURI(Uri.parse(URLstring)); 
     */ 
     mVideoView.setVideoPath(path); 
     mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH); 
     mVideoView.setMediaController(new MediaController(this)); 
     mVideoView.requestFocus(); 

     progDailog = ProgressDialog.show(this, "Please wait ...", 
      "Retrieving data ...", true); 
     progDailog.setCancelable(true); 


     mVideoView.setOnPreparedListener(
       new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mediaPlayer) { 
       // optional need Vitamio 4.0 
       //mediaPlayer.setPlaybackSpeed(1.0f); 
        progDailog.dismiss(); 
      } 
     }); 

     mVideoView.setOnBufferingUpdateListener(
        new OnBufferingUpdateListener() { 
      @Override 
      public void onBufferingUpdate(MediaPlayer arg0, int arg1) { 

      } 
     }); 
     //mediaPlayer.setPlaybackSpeed(1.0f); 
    } 

} 
@Override 
protected void onPause() { 
    mVideoView.pause(); 
    super.onPause(); 
} 

@Override 
protected void onResume() { 
    mVideoView.resume(); 
    progDailog.show(); 
    super.onResume(); 

} 
    } 

Ваш непосредственный ответ поможет мне много

ответ

2

Без сомнения Vitamio очень хорошая библиотека, охватывающая все ошибки, связанные с потоковым видео.

Извините, но я очень разочарован командой поддержки Vitamio. Я разместил вопрос на форуме, но не получил и не вернулся. Наконец-то я нахожу решение своей проблемы, просто сделав изменение шахтера на предоставленном источнике.

enter code [email protected] 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
    WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    if (!LibsChecker.checkVitamioLibs(this)) 
     return; 
    setContentView(R.layout.mediaplayer_2); 
    mPreview = (SurfaceView) findViewById(R.id.surface); 
    holder = mPreview.getHolder(); 
    holder.addCallback(this); 
    //holder.setFormat(PixelFormat.RGBA_8888); 
    holder.setFormat(PixelFormat.RGBX_8888); 
    extras = getIntent().getExtras(); 
} 

private void playVideo(Integer Media) { 
    doCleanUp(); 
    Log.e(TAG, "Value Received: " + Media); 
    try { 

     switch (Media) { 
     case LOCAL_VIDEO: 
      /* 
      * TODO: Set the path variable to a local media file path. 
      */ 
      path = ""; 
path = Environment.getExternalStorageDirectory() + "/big_buck_bunny.mp4"; 
      Log.e(TAG, "PATH = : " + path); 
      if (path == "") { 
       // Tell the user to provide a media file URL. 
Toast.makeText(MediaPlayerDemo_Video.this, "Please edit MediaPlayerDemo_Video 
    Activity, " + "and set the path variable to your media file path." 
    + " Your media file must be stored on sdcard.", Toast.LENGTH_LONG).show(); 
       return; 
      } 
      break; 
     case STREAM_VIDEO: 
      /* 
      * TODO: Set path variable to progressive streamable mp4 or 
      * 3gpp format URL. Http protocol should be used. 
      * Mediaplayer can only play "progressive streamable 
     * contents" which basically means: 1. the movie atom has to 
      * precede all the media data atoms. 2. The clip has to be 
      * reasonably interleaved. 
      * 
      */ 
      path = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"; 
      if (path == "") { 
       // Tell the user to provide a media file URL. 
Toast.makeText(MediaPlayerDemo_Video.this, "Please edit MediaPlayerDemo_Video 
    Activity," + " and set the path variable to your media file URL.", 
    Toast.LENGTH_LONG).show(); 
       return; 
      } 

      break; 

     } 
     // Create a new media player and set the listeners 

     mMediaPlayer = new MediaPlayer(this); 
mMediaPlayer.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);    
     mMediaPlayer.setDataSource(path); 
     mMediaPlayer.setDisplay(holder); 
    mMediaPlayer.prepare();       
     mMediaPlayer.setOnBufferingUpdateListener(this); 
     mMediaPlayer.setOnCompletionListener(this); 
     mMediaPlayer.setOnPreparedListener(this); 
     mMediaPlayer.setOnVideoSizeChangedListener(this); 
     mMediaPlayer.getMetadata(); 
     setVolumeControlStream 
(AudioManager.STREAM_MUSIC);   
     //mMediaPlayer.setVideoQuality 
(io.vov.vitamio.MediaPlayer.VIDEOQUALITY_HIGH); 


    } catch (Exception e) { 
     Log.e(TAG, "error: " + e.getMessage(), e); 
    } 
} 

Существует файл в исходном образце с именем «MediaPlayerDemo_Video.java» Заменить следующую строку holder.setFormat (PixelFormat.RGBA_8888);

со следующими

holder.setFormat (PixelFormat.RGBX_8888);

Это решит всю проблему.

+0

Здравствуйте, Не могли бы вы обновить полный код? –

2

Я использовал эту видео качество видео низкое видео и воспроизведение размытого видео. Теперь я использовал ниже метод в своем классе видеопроигрывателя. Вы можете использовать этот метод после загрузки URL-адресов видео.

public void init() { 
    load = (ProgressBar) this.findViewById(R.id.load); 
    empty = (TextView) this.findViewById(R.id.empty); 

    mVideoView = (VideoView) this.findViewById(R.id.surface_view); 
    mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH); 

    holder = mVideoView.getHolder(); 
    holder.setFormat(PixelFormat.RGBX_8888); 

    mVideoView.setMediaController(new MediaController(this)); 
    mVideoView.setOnCompletionListener(this); 
    mVideoView.setOnPreparedListener(this); 
    mVideoView.setOnErrorListener(this); 

    Uri videoUri = Uri.parse(url); 

    mVideoView.setVideoURI(videoUri); 
    mVideoView.requestFocus(); 

    loading(); 
}