从URL下载SD卡上的视频 [英] Download Video on SDCard from url
问题描述
我有一个应用程序从URL下载视频的SD卡。我指的这个<一href="http://stackoverflow.com/questions/3692252/android-how-do-i-download-a-video-file-to-sd-card/3692492#3692492">link.但这个链接中包含的网址为.MP4格式。我要下载新闻提要视频。我的格式不.MP4格式。这将是主要的.swf。 我的网址是,
I am having an application to download video on sdcard from url. I refer this link. But this link contains the url as .mp4 format. I have to download news feed videos. My format is not .mp4 format. It will be mostly .swf. The url of mine is,
<$c$c>http://cdnapi.kaltura.com/index.php/kwidget/wid/_483511/uiconf_id/5590821/entry_id/0_cf39ej0c$c$c>
我是通过解析RSS订阅(新闻供稿)获得此URL。
I was getting this url by parsing rss feed( news feed).
我的code是:
public class MainActivity extends Activity {
public final String TAG = "MainActivity";
private final String PATH = "/sdcard/downloadVideo/";
private final int TIMEOUT_CONNECTION = 5000;// 5sec
private final int TIMEOUT_SOCKET = 300000;// 30sec
//public final String imageURL = "http://www.cbsnews.com/video/watch/?id=50149183n&tag=api";
public final String imageURL = "http://cdnapi.kaltura.com/index.php/kwidget/wid/_483511/uiconf_id/5590821/entry_id/0_cf39ej0c";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadFromUrl(imageURL, PATH);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void DownloadFromUrl(String VideoURL, String fileName) { // this is
// the
// downloader
// method
try {
URL url = new URL(VideoURL);
long startTime = System.currentTimeMillis();
Log.i(TAG, "image download beginning: " + VideoURL);
// Open a connection to that URL.
URLConnection ucon = url.openConnection();
// this timeout affects how long it takes for the app to realize
// there's a connection problem
ucon.setReadTimeout(TIMEOUT_CONNECTION);
ucon.setConnectTimeout(TIMEOUT_SOCKET);
// Define InputStreams to read from the URLConnection.
// uses 3KB download buffer
InputStream is = ucon.getInputStream();
BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5);
FileOutputStream outStream = new FileOutputStream(fileName);
byte[] buff = new byte[5 * 1024];
// Read bytes (and store them) until there is nothing more to
// read(-1)
int len;
while ((len = inStream.read(buff)) != -1) {
outStream.write(buff, 0, len);
}
// clean up
outStream.flush();
outStream.close();
inStream.close();
Log.i(TAG, "download completed in "
+ ((System.currentTimeMillis() - startTime) / 1000)
+ " sec");
} catch (IOException e) {
Log.d("VideoManager", "Error: " + e);
}
}
}
但我不能得到这个视频?
But I couldn't get this video?
其实我想实现视频流。但我不知道该怎么做。
Actually I am trying to achieve video streaming. But I don't know that how to do it.
我在做什么错误在我的code?
Am i doing any wrong in my code?
请给你的建议,以实现上述。
Please give your suggestion to achieve the above.
感谢你在前进!
推荐答案
试试这个:
取代手工定义到SD卡的路径,用
Instead of defining the path to the SD card manually, use
String Path = Environment.getExternalStorageDirectory().getPath();
并添加一个文件名后面,像
and add a file name behind that, like
String filename = Path + "/filename.mp4"
和传递这些文件名
串到你的的FileOutputStream
秒。
and pass these filename
strings to your FileOutputStream
s.
编辑:
而不是下载该文件,查看它直接使用VideoView,用code是这样的:
Instead of downloading the file, view it directly using VideoView, with code like this:
VideoView mVideoView;
MediaController mcon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.videoplay);
mVideoView = (VideoView) findViewById(R.id.videoview);
String videourl="http://cdnapi.kaltura.com/index.php/kwidget/wid/_483511/uiconf_id/5590821/entry_id/0_cf39ej0c";
mcon.setMediaPlayer(mVideoView); // add this line
mcon = new MediaController(this);
mVideoView.setMediaController(mcon);
mVideoView.requestFocus();
mVideoView.setVideoURI(Uri.parse(videourl));
mcon.show();
mVideoView.start();
}
和不要忘记提及在互联网权限的AndroidManifest.xml
:
And dont forget to mention the internet permission in androidmanifest.xml
:
<uses-permission android:name="android.permission.INTERNET" />
这篇关于从URL下载SD卡上的视频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!