Android Video Stream upload to php server?

懵懂的女人 提交于 2019-12-10 11:26:50

问题


HI,

Anyone suggest some sample and idea to post the video data to server.I want to playback the video later as stream video from the server directly.Anyone suggest me how to upload the stream video to php server and playback it as stream video from server.


回答1:


muniir@msn.com wrote:

public class SocialHTTPPost 
{ 
    public static byte[] getCapturedImageStream(Context ctx, Intent data)
    {
        String fileName = ((MainActivity) ctx).mCaptureImageHMap.get("name").toString();
        int mid= fileName.lastIndexOf(".");
        String ext=fileName.substring(mid+1,fileName.length());

        Bundle b = data.getExtras();
        Bitmap bmp = (Bitmap) b.get("data");
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        if(ext.equalsIgnoreCase("png"))
            bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
        else if(ext.equalsIgnoreCase("jpg") || ext.equalsIgnoreCase("jpeg"))
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] bytes = stream.toByteArray();        
        return bytes;
    }

    public static void postImage(Context ctx, byte[] ba)
    {       
        String sid = ((MainActivity) ctx).mCaptureImageHMap.get("sid").toString();

        String ba1=Base64.encode(ba);
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("image",ba1));

        for (Iterator iter = ((MainActivity) ctx).mCaptureImageHMap.entrySet().iterator(); iter.hasNext();) 
        {
            Map.Entry entry = (Map.Entry) iter.next();
            String key = (String)entry.getKey();
            String value = (String)entry.getValue();
            nameValuePairs.add(new BasicNameValuePair(key, value));
        }

        try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(Config.MEDIA_IMAGE_PATH + "?AddFile=AddFile&SessionId=" + sid);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            //is = entity.getContent();
        }
        catch(Exception e)
        {
            CommonFunctions.writeLOG(ctx.getClass().toString(), e.toString());
            CommonFunctions.showToast(ctx, "Unable to post captured image file: " + e.toString());
        }       
    }

    public static byte[] getCapturedVideoStream(Context ctx, Intent data)
    {       
        try 
        {
            AssetFileDescriptor videoAsset = ctx.getContentResolver().openAssetFileDescriptor(data.getData(), "r");
            FileInputStream fis = videoAsset.createInputStream();
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] buf = new byte[1024];
            try 
            {
                for (int readNum; (readNum = fis.read(buf)) != -1;)                
                    bos.write(buf, 0, readNum);
            } 
            catch (IOException e) 
            {
                CommonFunctions.writeLOG(CacheImagesManager.class.getClass().toString(), e.toString());
            }
            byte[] bytes = bos.toByteArray();
            return bytes;
        } 
        catch (IOException e) 
        {
            CommonFunctions.writeLOG(CacheImagesManager.class.getClass().toString(), e.toString());
            return null;
        }       
    }

    public static void postVideo(Context ctx, byte[] ba)
    {       
        String sid = ((MainActivity) ctx).mCaptureVideoHMap.get("sid").toString();

        String ba1=Base64.encode(ba);
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("video",ba1));

        for (Iterator iter = ((MainActivity) ctx).mCaptureVideoHMap.entrySet().iterator(); iter.hasNext();) 
        {
            Map.Entry entry = (Map.Entry) iter.next();
            String key = (String)entry.getKey();
            String value = (String)entry.getValue();
            nameValuePairs.add(new BasicNameValuePair(key, value));
        }

        try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(Config.MEDIA_VIDEO_PATH + "?AddFile=AddFile&SessionId=" + sid);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            //HttpEntity entity = response.getEntity();
        }
        catch(Exception e)
        {
            CommonFunctions.writeLOG(ctx.getClass().toString(), e.toString());
            CommonFunctions.showToast(ctx, "Unable to post captured video file: "  + e.toString());
        }       
    }

    //  //////////////////////////////////////////  SAMPLE TEST START FOR READING WRITING IMAGES AND VIDEO BINARY

    public static boolean writeCaptureVideo(Context ctx, Intent data)
    {       
        String fileName = ((MainActivity) ctx).mCaptureImageHMap.get("name").toString();
        String sid = ((MainActivity) ctx).mCaptureImageHMap.get("sid").toString();
        String path = ""; //((MainActivity) ctx).mMediaPath;

        try 
        {
            AssetFileDescriptor videoAsset = ctx.getContentResolver().openAssetFileDescriptor(data.getData(), "r");
            FileInputStream fis = videoAsset.createInputStream();           
            File tmpFile = new File(path, fileName); 
            FileOutputStream fos = new FileOutputStream(tmpFile);
            byte[] buf = new byte[1024];
            int len;
            while ((len = fis.read(buf)) > 0) 
            {
                fos.write(buf, 0, len);
            }       
            fis.close();
            fos.close();
            return true;
        } 
        catch (IOException e) 
        {
            CommonFunctions.writeLOG(CacheImagesManager.class.getClass().toString(), e.toString());
            return false;
        }       
    }

    public static boolean writeCaptureImage(Context ctx, Intent data)
    {
        String fileName = ((MainActivity) ctx).mCaptureImageHMap.get("name").toString();
        String path = ""; //((MainActivity) ctx).mMediaPath;

        int mid= fileName.lastIndexOf(".");
        String ext=fileName.substring(mid+1,fileName.length());
        File file = new File(path, fileName);
        Uri outputFileUri = Uri.fromFile( file );
        Bundle b = data.getExtras();
        Bitmap bm = (Bitmap) b.get("data");

        try 
        {               
            if(ext.equalsIgnoreCase("png"))
                bm.compress(CompressFormat.PNG, 100, new FileOutputStream(file));
            else if(ext.equalsIgnoreCase("jpg") || ext.equalsIgnoreCase("jpeg"))
                bm.compress(CompressFormat.JPEG, 100, new FileOutputStream(file));
            try {
                Runtime.getRuntime().exec("chmod 777 " + path + "/" + fileName);
            } catch (IOException e1){}

            return true;
        } 
        catch (FileNotFoundException e) 
        {
            CommonFunctions.writeLOG(CacheImagesManager.class.getClass().toString(), e.toString());
            return false;
        }       
    }

    public static void postImage2(Context ctx)
    {
        //help site:    http://blog.sptechnolab.com/2011/03/09/android/android-upload-image-to-server/
        String fileName = ((MainActivity) ctx).mCaptureImageHMap.get("name").toString();
        String sid = ((MainActivity) ctx).mCaptureImageHMap.get("sid").toString();
        String path = ""; //((MainActivity) ctx).mMediaPath;

        int mid= fileName.lastIndexOf(".");             
        String ext=fileName.substring(mid+1,fileName.length());

        //InputStream is;
        Bitmap bitmapOrg = BitmapFactory.decodeFile(path + "/" + fileName);
        ByteArrayOutputStream bao = new ByteArrayOutputStream();

        if(ext.equalsIgnoreCase("png"))
            bitmapOrg.compress(Bitmap.CompressFormat.PNG, 100, bao);
        else if(ext.equalsIgnoreCase("jpg") || ext.equalsIgnoreCase("jpeg"))
            bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 100, bao);

        byte [] ba = bao.toByteArray();
        String ba1=Base64.encode(ba);
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("image",ba1));

        for (Iterator iter = ((MainActivity) ctx).mCaptureImageHMap.entrySet().iterator(); iter.hasNext();) 
        {
            Map.Entry entry = (Map.Entry) iter.next();
            String key = (String)entry.getKey();
            String value = (String)entry.getValue();
            nameValuePairs.add(new BasicNameValuePair(key, value));
        }       

        try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(Config.MEDIA_IMAGE_PATH + "?AddFile=AddFile&SessionId=" + sid );
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            //is = entity.getContent();
        }
        catch(Exception e)
        {
            CommonFunctions.writeLOG(ctx.getClass().toString(), e.toString());
            CommonFunctions.showToast(ctx, "Unable to post captured image file: " + fileName);
        }       
    }

    //  //////////////////////////////////////////  SAMPLE TEST END
}


来源:https://stackoverflow.com/questions/5076870/android-video-stream-upload-to-php-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!