| itag Code | Container | Content | Resolution | Bitrate | Range | VR / 3D |
|---|---|---|---|---|---|---|
| 5 | flv | audio/video | 240p | - | - | - |
| 6 | flv | audio/video | 270p | - | - | - |
| 17 | 3gp | audio/video | 144p | - | - | - |
| 18 | mp4 | audio/video | 360p | - | - | - |
| 22 | mp4 | audio/video | 720p | - | - | - |
| package com.example.tobibur.videodemo; | |
| import android.net.Uri; | |
| import android.os.Handler; | |
| import android.support.v7.app.AppCompatActivity; | |
| import android.os.Bundle; | |
| import com.google.android.exoplayer2.C; | |
| import com.google.android.exoplayer2.ExoPlayerFactory; | |
| import com.google.android.exoplayer2.Format; | |
| import com.google.android.exoplayer2.SimpleExoPlayer; |
| 'use strict'; | |
| const puppeteer = require('puppeteer'); | |
| (async () => { | |
| /* PRECONDITION: | |
| 0. download ublock, I used https://github.com/gorhill/uBlock/releases/download/1.14.19b5/uBlock0.chromium.zip | |
| 1. run $PATH_TO_CHROME --user-data-dir=/some/empty/directory --load-extension=/location/of/ublock | |
| 2. enable block lists you want to use | |
| */ |
| function convertMS( milliseconds ) { | |
| var day, hour, minute, seconds; | |
| seconds = Math.floor(milliseconds / 1000); | |
| minute = Math.floor(seconds / 60); | |
| seconds = seconds % 60; | |
| hour = Math.floor(minute / 60); | |
| minute = minute % 60; | |
| day = Math.floor(hour / 24); | |
| hour = hour % 24; | |
| return { |
about:config settings to harden the Firefox browser. Privacy and performance enhancements.
To change these settings type 'about:config' in the url bar.
Then search the setting you would like to change and modify the value. Some settings may break certain websites from functioning and
rendering normally. Some settings may also make firefox unstable.
I am not liable for any damages/loss of data.
Not all these changes are necessary and will be dependent upon your usage and hardware. Do some research on settings if you don't understand what they do. These settings are best combined with your standard privacy extensions
(HTTPS Everywhere No longer required: Enable HTTPS-Only Mode, NoScript/Request Policy, uBlock origin, agent spoofing, Privacy Badger etc), and all plugins set to "Ask To Activate".
The standard way of understanding the HTTP protocol is via the request reply pattern. Each HTTP transaction consists of a finitely bounded HTTP request and a finitely bounded HTTP response.
However it's also possible for both parts of an HTTP 1.1 transaction to stream their possibly infinitely bounded data. The advantages is that the sender can send data that is beyond the sender's memory limit, and the receiver can act on
All rules and guidelines in this document apply to PHP files unless otherwise noted. References to PHP/HTML files can be interpreted as files that primarily contain HTML, but use PHP for templating purposes.
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
Most sections are broken up into two parts:
- Overview of all rules with a quick example
- Each rule called out with examples of do's and don'ts
| var http = require('http') | |
| ffmpeg = require('fluent-ffmpeg'); | |
| http.createServer(function (req, res) { | |
| res.writeHead(200, {'Content-Type': 'video/x-flv'}); | |
| var pathToMovie = '/public/video.mp4'; | |
| var proc = new ffmpeg({ source: pathToMovie, logger: true, nolog: false }) | |
| .toFormat('flv') | |
| .updateFlvMetadata() | |
| .withSize('320x?') |
| var http = require('http') | |
| var fs = require('fs') | |
| var argv = require('optimist').argv | |
| var rxVideoID = /v=([\]\[!"#$%'()*+,.\/:;<=>?@\^_`{|}~-\w]*)/ | |
| var link = argv._.toString() | |
| var videoID = link.match(rxVideoID)[1] | |
| http.get("http://www.youtube.com/get_video_info?video_id="+videoID, function(res) { | |
| var chunks = [] |