Sunday, 14 February 2016

How to Make Website Responsive for mobile devices?

How to Make Website Responsive for mobile devices?

Question: Why Responsive Web Design is the compulsary for websites?
  1. Recommended By Google: Google have higher Preference for Responsive design as compare to Non-Responsive.
  2. One Website, Many Devices: Single website can be viewable in desktop, laptop, ipad, different sizes of mobile.
  3. Good for SEO
  4. Responsive Website have more page views as compare to non-responsive.
  5. It looks always better in different resolution.

Question: How to check website is responsive OR Not?
https://www.google.com/webmasters/tools/mobile-friendly/


Question: How can i make a existing website responsive?
You can make any website responsive. Just follow the simple steps.

  1. Add Following code in head tag.
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  2. Create a responsive.css file and include in all the pages.
  3. Add Following code in responsive.css
    /* Smaller Resolution Desktops and Laptops */
    @media (max-width: 800px) {
           
           
    }
    /* Smaller devices like Ipad*/
    @media (max-width: 650px) {
    
           
    }
    /* Even Smaller devices like Mobile*/
    @media (max-width: 450px) {
    
           
    }
    /* Smallest Mobile devices */
    @media only screen and (min-device-width: 300px) and (max-device-width: 480px) {
           
           
    }
  4. Now structure is ready, you just need to add css according to devices.
  5. Note: In Responsive design you need to hide extra information of websit



Friday, 12 February 2016

PHP HTML5 video streaming examples

PHP HTML5 video streaming examples

Today, HTML5 video player is being popular. It stream with a given video, If you need to control the streaming from your server script to provide additional facility like ACL/Auth, resume support, sending small videos etc. You can do all with PHP.
Following are PlayVideoStream class, Which you can use
class PlayVideoStream
{
    /** set the private data members **/
    private $path = "";
    private $stream = "";
    private $buffer = 1024000;
    private $start  = -1;
    private $end    = -1;
    private $size   = 0;
    /** set the private data members **/
    
    /** Set the video file path in while creating the object **/
     function __construct($filePath) 
    {
        $this->path = $filePath;
    }
     
    /**
     * Open the file in read mode
     */
    private function open()
    {
        if (!($this->stream = fopen($this->path, 'rb'))) {
            die('Not able to read the file i.e '.$this->path);
        }
         
    }
     
    /**
     * Set  header to serve the video play
     * Here we are getting the mime type dynamically, for this you must enable php_fileinfo extension
     */
    private function setHeader()
    {
        ob_get_clean();
        $result = new finfo();
        $videoType= $result->file($this->path, FILEINFO_MIME_TYPE);  //Get the correct video type
        header("Content-Type: ".$videoType);
        header("Cache-Control: max-age=2592000, public");
        header("Expires: ".gmdate('D, d M Y H:i:s', time()+2592000) . ' GMT');
        header("Last-Modified: ".gmdate('D, d M Y H:i:s', @filemtime($this->path)) . ' GMT' );
        $this->start = 0;
        $this->size  = filesize($this->path);
        $this->end   = $this->size - 1;
        header("Accept-Ranges: 0-".$this->end);
         
        if (isset($_SERVER['HTTP_RANGE'])) {
  
            $c_start = $this->start;
            $c_end = $this->end;
 
            list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
            if (strpos($range, ',') !== false) {
                header('HTTP/1.1 416 Requested Range Not Satisfiable');
                header("Content-Range: bytes $this->start-$this->end/$this->size");
                exit;
            }
            if ($range == '-') {
                $c_start = $this->size - substr($range, 1);
            }else{
                $range = explode('-', $range);
                $c_start = $range[0];
                 
                $c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $c_end;
            }
            $c_end = ($c_end > $this->end) ? $this->end : $c_end;
            if ($c_start > $c_end || $c_start > $this->size - 1 || $c_end >= $this->size) {
                header('HTTP/1.1 416 Requested Range Not valid');
                header("Content-Range: bytes $this->start-$this->end/$this->size");
                exit;
            }
            $this->start = $c_start;
            $this->end = $c_end;
            $length = $this->end - $this->start + 1;
            fseek($this->stream, $this->start);
            header('HTTP/1.1 206 Partial Content');
            header("Content-Length: ".$length);
            header("Content-Range: bytes $this->start-$this->end/".$this->size);
        }
        else
        {
            header("Content-Length: ".$this->size);
        }  
         
    }
    
    /**
     * close curretly opened stream
     */
    private function end()
    {
        fclose($this->stream);        die;
    }
     
    /**
     * perform the streaming of calculated range
     */
    private function stream()
    {
        $i = $this->start;
        set_time_limit(0);
        while(!feof($this->stream) && $i <= $this->end) {
            $bytesToRead = $this->buffer;
            if(($i+$bytesToRead) > $this->end) {
                $bytesToRead = $this->end - $i + 1;
            }
            $data = fread($this->stream, $bytesToRead);
            echo $data;
            flush();
            $i += $bytesToRead;
        }
    }
     
    /**
     * Start streaming video content
     */
    function start()
    {
        $this->open();
        $this->setHeader();
        $this->stream();
        $this->end();
    }
}



Question: How to play video with above class?
$filePath='c://wamp/www/project/public_html/videos/myvideoFile.mp4';
//$filePath='c://wamp/www/project/public_html/videos/myvideoFile1.mp3';
//$filePath='c://wamp/www/project/public_html/videos/myvideoFile2.mp4';
//$filePath='c://wamp/www/project/public_html/videos/myvideoFile3.3gp';
$stream = new PlayVideoStream($filePath);
$stream->start();