title: Android audio/video Streaming is not working for Wowza server
body: <p>I want to implement video streaming using the Wowza server. So, is there any tutorial that how Wowza works for Android devices? </p>
  
  <p>Videos are stored at server side. So, to fetch video using URL and play it on Android. I tried some examples, but I got error, "Sorry, this video can not be played". I am using URL <code>enter code here</code>definst/mp4:amazons3/XXX/XXX_42u9Ug_MP4Akon-Beautifulft.ColbyO%27Donis%2CKardinalOffishall(1).mp4/manifest.f4m">http://XXXX.amazonaws.com/vods3/<em>definst</em>/mp4:amazons3/XXX/XXX_42u9Ug_MP4Akon-Beautifulft.ColbyO%27Donis%2CKardinalOffishall(1).mp4/manifest.f4m.</p>
  
  <p>Below is the source code.</p>
  
  <pre><code>@Override
  public void onCreate(Bundle icicle) {
      super.onCreate(icicle);
      setContentView(R.layout.main);
      mVideoView = (VideoView) findViewById(R.id.surface_view);
  
      mPath = (EditText) findViewById(R.id.path);
      mPath.setText("http://XXXX.amazonaws.com/vods3/_definst_/mp4:amazons3/XXX/XXXX_42u9Ug_MP4Akon-Beautifulft.ColbyO%27Donis%2CKardinalOffishall(1).mp4/manifest.f4m");
  
      mPlay = (ImageButton) findViewById(R.id.play);
      mPause = (ImageButton) findViewById(R.id.pause);
      mReset = (ImageButton) findViewById(R.id.reset);
      mStop = (ImageButton) findViewById(R.id.stop);
  
      mPlay.setOnClickListener(new OnClickListener() {
          public void onClick(View view) {
              playVideo();
          }
      });
      mPause.setOnClickListener(new OnClickListener() {
          public void onClick(View view) {
              if (mVideoView != null) {
                  mVideoView.pause();
              }
          }
      });
      mReset.setOnClickListener(new OnClickListener() {
          public void onClick(View view) {
              if (mVideoView != null) {
                  mVideoView.seekTo(0);
              }
          }
      });
      mStop.setOnClickListener(new OnClickListener() {
          public void onClick(View view) {
              if (mVideoView != null) {
                  current = null;
                  mVideoView.stopPlayback();
              }
          }
      });
      runOnUiThread(new Runnable() {
          public void run() {
              playVideo();
  
          }
  
      });
  }
  
  private void playVideo() {
      try {
          final String path = mPath.getText().toString();
          Log.v(TAG, "path: " + path);
          if (path == null || path.length() == 0) {
              Toast.makeText(VideoStreamingDemo.this,
                      "File URL/path is empty", Toast.LENGTH_LONG).show();
  
          } else {
              // If the path has not changed, just start the media player
              if (path.equals(current) &amp;&amp; mVideoView != null) {
                  mVideoView.start();
                  mVideoView.requestFocus();
                  return;
              }
              current = path;
              mVideoView.setVideoPath(getDataSource(path));
              mVideoView.start();
              mVideoView.requestFocus();
  
          }
      } catch (Exception e) {
          Log.e(TAG, "error: " + e.getMessage(), e);
          if (mVideoView != null) {
              mVideoView.stopPlayback();
          }
      }
  }
  
  private String getDataSource(String path) throws IOException {
      if (!URLUtil.isNetworkUrl(path)) {
          return path;
      } else {
          URL url = new URL(path);
          URLConnection cn = url.openConnection();
          cn.connect();
          InputStream stream = cn.getInputStream();
          if (stream == null)
              throw new RuntimeException("stream is null");
          File temp = File.createTempFile("mediaplayertmp", "dat");
          temp.deleteOnExit();
          String tempPath = temp.getAbsolutePath();
          FileOutputStream out = new FileOutputStream(temp);
          byte buf[] = new byte[128];
          do {
              int numread = stream.read(buf);
              if (numread &lt;= 0)
                  break;
              out.write(buf, 0, numread);
          } while (true);
          try {
              stream.close();
          } catch (IOException ex) {
              Log.e(TAG, "error: " + ex.getMessage(), ex);
          }
          return tempPath;
      }
  }
  </code></pre>