从URL下载SD卡上的视频 [英] Download Video on SDCard from url

查看:227
本文介绍了从URL下载SD卡上的视频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序从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

我是通过解析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 FileOutputStreams.

编辑:

而不是下载该文件,查看它直接使用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();
}

和不要忘记提及在互联网权限的Andr​​oidManifest.xml

And dont forget to mention the internet permission in androidmanifest.xml:

<uses-permission android:name="android.permission.INTERNET" />

这篇关于从URL下载SD卡上的视频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆