As of 2016-02-26, there will be no more posts for this blog. s/blog/pba/
Showing posts with label YouTube. Show all posts


Because I wrote a super long description for this video, I had to split this part out and put it on my blog, or YouTube would tell me my description is too long, which I totally agreed.

1   Making the video

Normally, this is the last one, but for the video, I bumped it up to first.

  1. My record scripts


      Setting up terminal window for 1280x720 recording region, and adjust my primarily tmux window, so they wont overlay one on another, but this one for Raincat doesnt need a terminal window.


      It records the video. I will choose the FPS, sometimes I need to change the size.

    • and records raw images if not with audio, so the raw video needs to be re-encoded before uploading to YouTube. If I record multiple parts, I need to merge them into one.

    • grabbing a screenshot for video thumbnail, typically the title screen if any.

  2. Writing the description

    • titling the video
    • collecting information about the project, the version, programming language and major dependencies, author, license, etc
    • checking out links, RTFM again, etc.
    • putting all stuff together and write
  3. Making a thumbnail

    If the screenshot already has the title in it, then just use it; if not, put a text overlay on it.

  4. Uploading the video

    • tagging the video
    • adding to appropriate playlists
    • turning on monetization, set up record date
    • re-reading my description
    • double checking everything
    • pushing the publish button
    • checking YouTube video manager, just to be sure

2   Choosing one to make

There are good and suitable projects, but sometimes I dont have one in my queue list. It normally would be one I like and it has good and necessary stuff to show on video.

3   Searching for new projects

I mostly search in GitHub:

  1. it searches GitHub trending projects within the programming languages that I am interested in.
  2. search results with my user script and user style for GitHub. I search for specific keywords every day, with help from my user script and style, I can quickly go through without clicking on things I wont be interested or already checked.

I also search with Google Image.

Really nothing to write about today, not a thing really worthy writing.

This morning, I watched two videos of Teslas new model that can park itself into or pull out of garage, including openiing and closing the garage door. This reminds me of a car that can park roadside, but you have to align first. I can be amazed by self-driving vehicle, but this seems to tell me we human are simply too lazy, although I do believe it can park better than human. No. I am sure it can.

This afternoon, I reported a YouTube channel that is polluting gardening search results. It is really annoying since that channel posts video logging videos, so it pops up really often, even several in the same page. Its videos all have many unrelated tags, and none of those I have seen any even remotely gardening. Thats just not the only channel, lots of unrelated videos show up in search results.

This evening, I ate an instant noodles which had three sachets and one main course packet. One chili, one seasoning, one oil, and one packs gingko (Ginkgo biloba) nuts, mushroom, and tofu stuff. Some high-end noodles, just like some non-vegetarian, which packs with real meat, well, made of real meat, whose texture is far from normally cooked meat. I am impressed for such vegetarian instant noodles, but unfortunately, it has a lot of ingredients that I cant pronounce, too.

Thought about skipping a day, now clearly, I dont need to.

I believe its some time in this year, the HD quality options, thats 720p and 1080p, were missing, and not only those, actually I only got 360p of all options.

Currently, as of 2015-12-05, I am using Firefox ESR 38.4.0. In fact, I have found the solution much earlier even though this official YouTube Help gives absolutely zero help at all but never bothered writing it, but now I have decided to write a post.

From what I can check with about:config.

If I turn on:

  • media.fragmented-mp4.ffmpeg.enabled

I will get 720p HD with video/mp4; codecs="avc1.64001F, mp4a.40.2". Thats just 360p and 720p for now.

If I also turn on:

  • media.mediasource.enabled

I will also get 1080p HD, 144p, 240p, and 480p. The 720p is video/mp4; codecs="avc1.4d401f". Now its the full set as before.

The Feed tab (or drop-down option, cant remember) has been gone for long time, but I didnt care much. The only thing I did think I get it right is the Post was now Discussion tab, that is completely wrong. They are entirely different things.

To get to the feed tab again, simply appending /feed to a channel or user URL:

I just used it for first time since its announcement two years ago for my channels About information. Now come to think to it, only two years, its already semi-removed, what a shame.

I believe that eventually this page will be removed, this kind of subtle action has been employed by Google and its companies many times. They quietly remove something, but if you still get a URL, you still can use it, then one day, its all gone. The question is for how long?

Its like they dont have the guts to do what they want and give out an explanation, cant take voices from users, so they do a trick like this. If you are gonna do it, just do it at one go.

If you are a user of Pentadactyl, you might have noticed whenever you press y on a video of YouTube, you always gets the shortlink. It's been a few months since I first noticed this nice feature.

Recently, I wanted to learn about it, before I dug into codes to find out this fantastic feature is from, I always assumed that's somehow YouTube's effort. I thought there must be some way to intercept URL copying in address bar. Some hook, I supposed. But I was wrong totally, however, gladly, I didn't dive into those minified JavaScript codes.

I first discovered YouTube have a shortlink relation in its HTML,
<link rel="shortlink" href="">
This really gave me a hint, so I read Pentadactyl's changes and saw this addition:

Added 'yankshort' option. [b8]

 It is all clear to me now. By default,
:set yankshort
--- Options ---,
There seems no options to disable shortlink yanking unless you remove the site from yankshort option, if you really need the full URL and don't want to copy from address bar or statueline. A quick resolution is to map a new key to yank full URL:
map Y :yank gBrowser.contentDocument.location.href<CR>
I really have no idea why I thought YouTube did that. Anyway, I think browsers should provide a link copying button or menu item with shortlink as an option, I saw none in Firefox. I guess this is the reason that YouTube provides shortened link option in share panel.

Once again, Earth Hour is coming up (or already arrived) at 8:30pm on March 31 this year. I was part of it (and Lights Out Day), a few years back, even posted a post for it.

No doubt, it's intention is to bring up awareness in us. But over the years, I've realized and an hour of whole year really is not much. (1 hr) / (24 hr * 366) = 0.000113843352 = 0.011% for this year. It is not entire 0.011% of energy saved, because during the hour you still consume energy. Please don't try to multiply with world population, the globally saved energy is still at 0.011% roughly.

I even tried to go dark in every program I ran, but it was not easy and I hadn't insisted that for a while. However, I still maintained to maximize the amount of programs which I could turn into a dark-themed ones.

Don't do it just for Earth Hour as YouTube does:

Every year, during this period, YouTube will re-install that switch. I know not all people like white background and why not just convert it into a new option?

Google and those companies it owns always give us a sense of caring of everything, shaping themselves as a great companies which can't care much more about the world, people, policy, and so on. They are not the only companies or people.

0.011% of a year could be enough or not, that is really not a point here but who finally understands the Earth Hour is for. Unfortunately, it's like YouTube, it is just one-hour event for each region across the world. It is not really 60 hours (the logo seems to imply, I am not sure, only UTC-12UTC+14 timezones in this world, that's 27 timezones (per hour basis) basically) for each individual, only an hour for each individual or the whole world.

If you are new to Earth Hour or you will be part of it again, then please:

Don't do it for occasions, do it for life.

Don't just say it once a while, live it.

If you don't know there is an option for dark theme on this blog for more than a year, it's located at top-left corner, try it out.

I believe no developers have fully used their own creations. I do mean using not testing.

I recently wanted to watch Mass Effect 1/2 walkthrough, because I wanted to understand the storyline. So, I searched for playlists for those two series, but soon that reminded me of an annoying situation I had already seen and forgot.

The default quality is either 360p or 480p (if you enlarge the player and have set auto option in account playback settings). If you watch without fullscreen, then there is not problem at all, but if you switch to fullscreen, two annoyances are waiting for you.

First, the auto option will switch to 720p for you (if you have checked the checkbox for HD quality), which is great and that's what I want to have. But after this point, you need to try not to exit fullscreen mode. Once you do, exiting fullscreen mode, two things come along:
  1. Page will be reloaded (only happens after player plays other videos from playlist, which definitely will happen, that's the reason why you watch videos from playlist). Which actually make sense, the page has not yet updated even player has played other videos. Although this can be annoying, but I can let this one go.
  2. The side effect from #1, the video's buffer is cleaned and rebuffered since page reloaded, because the default quality is 360p or 480p, which is different than 720p, therefore rebuffering is required and wasted. I was watching 720p and I want to continue watching in 720p.
There are some related questions on help forums, I didn't look into those. Because there is no need, or this kind of annoyance had already been resolved.

If you have used playlist for real, I mean watching a playlist with 50+ videos, then you can understand. But the chance to watch such playlist is not very often.

The introduction of auto switching of video quality is meant to save bandwidth, I believe, only loading higher quality stream when is requested. But think about this case, the video is fully buffered, then player exits fullscreen. The 720p buffer is wasted, because it gets cleaned, if page reload also occurs.

There are some Firefox Addons about HD, I don't know if that will help or not, or if that is possible for me to append a parameter in the URL to force HD quality. Like I said, it's not often and I have survived watching those videos without exiting fullscreen too many times before I wrote this post.

I would call it stupid, just I don't think the dev has thought about it. If they did, then it's the worst, they don't care.

For a long time, I can't figure out why 480p or 640x480 videos are stretched by YouTube. The output resolution is still the same but they seems to be rescaled in Y-axis. This should be much problem for your daily life video, but it is for screencasting. They looks like 90s homemade video in analogy, just terrible.

You can see an example in my previous video like this one. I used the following command to record:
~/p/x11grabr/x11grabr -b -s 640x480 | ffmpeg -f rawvideo -pix_fmt bgra -s 640x480 -r 25 -i - -vcodec libx264 -vpre lossless_ultrafast -strict experimental -threads 0 test.mkv

 ~ $ mediainfo test.mkv 
Unique ID                                : 107803120395874480459111442715539922352 (0x511A2032421B3E79424266CB5EDBDDB0)
Complete name                            : test.mkv
Format                                   : Matroska
Format version                           : Version 2
File size                                : 584 KiB
Duration                                 : 2s 480ms
Overall bit rate                         : 1 929 Kbps
Writing application                      : Lavf52.111.0
Writing library                          : Lavf52.111.0

ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High 4:4:4 Predictive@L3.0
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 2s 480ms
Bit rate                                 : 1 891 Kbps
Width                                    : 640 pixels
Height                                   : 480 pixels
Display aspect ratio                     : 4:3
Frame rate mode                          : Variable
Frame rate                               : 25.000 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.246
Stream size                              : 572 KiB (98%)
Writing library                          : x264 core 115
Encoding settings                        : cabac=0 / ref=1 / deblock=1:0:0 / analyse=0x1:0 / me=dia / subme=0 / psy=0 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=0 / threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc=cqp / mbtree=0 / qp=0
Language                                 : English
Default                                  : Yes
Forced                                   : No
Today I finally found a way to get around the problem by using WebM:
~/p/x11grabr/x11grabr -b -s 640x480 | ffmpeg -f rawvideo -pix_fmt bgra -s 640x480 -r 25 -i - test.webm

 ~ $ mediainfo test.webm 
Unique ID                                : 162746949293301742131061222707439175632 (0x7A6FEC1BDD11DE98A5F24CEB620587D0)
Complete name                            : test.webm
Format                                   : WebM
Format version                           : Version 2
File size                                : 203 KiB
Duration                                 : 2s 40ms
Overall bit rate                         : 815 Kbps
Writing application                      : Lavf52.111.0
Writing library                          : Lavf52.111.0

ID                                       : 1
Format                                   : VP8
Codec ID                                 : V_VP8
Duration                                 : 2s 40ms
Bit rate                                 : 776 Kbps
Width                                    : 640 pixels
Height                                   : 480 pixels
Display aspect ratio                     : 4:3
Frame rate                               : 25.000 fps
Compression mode                         : Lossy
Bits/(Pixel*Frame)                       : 0.101
Stream size                              : 193 KiB (95%)
Language                                 : English
Default                                  : Yes
Forced                                   : No
The quality is poorer because it needs to tune a bit, but at least YouTube won't mess it up, here is an example output.

The strange thing is 720p is fine, I don't understand what's going on and I won't bother to post in help forums because I doubt their engineer will read my question. YouTube Guru in forums? (Not sure about what YouTube staff name those volunteers) No offense, nah, but thanks anyway.
YouTube never mentioned problem with the video codec, no issue was reported except the file didn't have audio codec it recognizes. To YouTube: some videos are meant to have no audio tracks.

Anyway, if you know anything about the issue which I can still use AVC, please let me know. I am guessing it could be those encoding setting, but it's a long list and 99.999% of them I have no idea what they are for.

Few days ago, I noticed some mass strange hits on this blog, I thought its an attack. Earlier, the mass hits came again right after I posted Lightweight YouTube Player Loader. Its pretty clear to me, YouTube is the trigger. It could be post title or label name. The only issue is I still dont know who makes the mass request. Just one or a group of bots? Where did they get the published data. The requests came really just after I hit Publish button.

Blogger Stats tab doesnt provide raw access log. Google Analytics cant help with this case, because those requests are not come from web browsers, therefore the script isnt executed, and definitely not from human. Hundreds of requests, who would have such time to hit reload button? They must be made by bots.

I have thought if I change DNS record to other server, which I could see the detail with, the IPs. I do know they are from US, thats Blogger Stats tells me. I want to know if its one IP or many IPs, and who owns the IP. But that would affect too much, even its just a short period. Besides, I cant do anything, Blogger doesnt allow you to filter out unwanted data. They cant even classify those requests as bots even if there is a Bot tab, because those bots disguise themselves as Firefox and on Other Unix OSes.

To me its like my stats data is being contaminated but this kind of data is still useful but not so much for a blogger if you cant have any means to deal with. I dont think its spamming like fake referrer spamming (or the spammer forgets to add HTTP Referrer?), at least not intent to spam Blogger bloggers, because it would know we cant know any detail except the number of hits, the fake user agent and the OS.

In my conclusion, there is nothing I could do. I believe I will get another mass hits in just about a second once more.


This project is dead and some links are removed from this post. (2015-12-01T23:24:44Z)

Lightweight YouTube Player Loader is a way to reducing resource usage on client-side. Its written for bloggers mainly because some may embed many YouTube videos in just one post. This loader doesnt load Flash player by default, which is loaded currently default YouTube embed. It accesses YouTube API and shows thumbnail as well as the title and author. This is a continued work after I posted about the loading time of YouTube player. A quick test of five 720p videos in one page, the video quality isnt matter since no video is loaded after YouTube player loaded. The YouTube players take 2+ seconds, this loader only takes 0.8 seconds. The memory usage in Chromium 9, YouTube player uses less than 20MB but 70+ for Flash player. This loader uses ~30MB, only one third.

1   Current Status

Experimental. Unexpected errors may occur, they should be seen as blank page. Please report if you encounter one.

2   Features

  • Showing thumbnail and slideshows of three thumbnails when cursor stays on iframe.
  • Providing title and author information and a direct link to YouTube video page.
  • All features of new YouTube iframe embed code will still work.
  • Supports HTTPS mode.

3   How to Use

Whatever the new code is, e.g.

<iframe title="YouTube video player" width="853" height="510" src="[VIDEO_ID]?rel=0" frameborder="0" allowfullscreen></iframe>

You simply replace with or,

<iframe title="YouTube video player" width="853" height="510" src="[VIDEO_ID]?rel=0" frameborder="0" allowfullscreen></iframe>
<!-- or -->
<iframe title="YouTube video player" width="853" height="510" src="[VIDEO_ID]?rel=0" frameborder="0" allowfullscreen></iframe>

If its a HTTPS mode, then you can only use at this moment,

<iframe title="YouTube video player" width="853" height="510" src="[VIDEO_ID]?rel=0" frameborder="0" allowfullscreen></iframe>

4   How This Works

The loader reads the link and extract the video ID, then accesses API for video information. Title, author, link, and thumbnails. It will show the default thumbnail and render the title and author, also a link to video page on YouTube. If user clicks, then the loader put the original YouTube embed code on, then removes itself. When cursor stays on the loader for a while, it will change the thumbnail every a few seconds, so user can see some snapshots.

5   Source Code

You can view the source code (New BSD License) on GitHub.

6   Support

If you need troubleshooting help, please post to discussion group. Any idea or feedback also are welcome to post as well. If you find bugs or want to request a feature, please use issue tracker, instead. In any case, please prefix the subject of your post or issue with [g-yt-embed]. Unless its general to any video, say broken for any video, you must supply a YouTube video page URL which is affected, or your post or issue will be deleted and ignored.

You probably have noticed (really, you have already?) that if you click using any mouse button or using Enter, then the link will be highlighted with a blue background.


This blog is no longer using this, nor is YouTube. (2015-12-25T05:11:08Z)

The idea came from YouTubes new designed homepage, I noticed the link feature when its still experimental. I feel its a nice idea, especially you are watching video from a list selectively in new tab. You will know the position of the one you just finish watching, then you can move on.

I stole the idea but not the code, I didnt even use tool to read the code, JavaScript or CSS, its simple stuff. You only need to have I get an idea! And thats what I didnt have.

The code I made you can read the diffs, JavaScript diff and CSS diff. If you know them code, its simple code as I said. The only special thing I want to mention is margin compensates the extra space, which padding uses. The reason of adding padding is the edge of text will be touching the edge of the blue box if you dont use it.

Here are sample link styles with padding and without padding.

Since its possible to open a link using mouse or keyboard, so two events need to be handle.

My originally modified idea is having an indicator flying to new link where user just clicks. Indicator takes off from previous click, then flies to new link, but that seems to be too much and overdo. How about a simple background color fade in and out? Using CSS transition?

Try to press right mouse button with any link, like it?

After I published the method using Vimperator, I found out it wont work if user switch to other tab before the page is loaded. The emulated keypress will be only emulated the currently active tab, and that may not be YouTube or Google Groups. Since Google Groups started the new interface, I removed that part of code from my Vimperator configuration, Google Groups doesnt steal focus anymore. Instead, I even enable Pass Through mode for Google Groups.

A while earlier, I was seeking if there is a way I could open a link from commandline and Firefox does not raise its window. I havent found an answer for that but I accidentally stumbled on an answer on Super User and later I found how to disable form focusing on MozillaZine Knowledge Base.

1Quick Solution

It seems spammers are trying everything they can think to get more expose, not just simply using a website. They are using media as well.

The screenshot above shows a YouTube videos referrers, on top of that, in that blue box, its a screenshot from this blogs referrers. The YouTube video link links to that video, which is about casino. From YouTube stats, you can see there were 4+23=27 visitors from, I believe they are all targeted Blogger bloggers. When I first saw that referrer in Stats tab of dashboard, 99.999% I was sure its faked since no way anyone would link my blog in their videos descriptions or comments. But I still clicked on it to check it out. You can also see it has 303 likes and I bet they are all faked, too, but those 5 dislikes, I am certain that they are real ratings.

I was thinking to flag that video, but I couldnt. There is no suitable option to file an complaint, it makes sense. Someone might use this to attack normal video, in other words, we have to take this kind of spamming. Too bad, there is no Spam folder as in Gmail.

I have to quote this:

Spam will be a thing of the past in two years time. Bill Gates.

I really wish he was right. That was in 2004. Six years later, they are still around. Currently, if you dont see, they are just being hidden by algorithm. They are detected and put into spam folder. Thats sad, because what needs to be done is to find who sends not to write some sophisticated program to detect, those companies fight back in wrong direction. They keep saying how many they have done. The truth is they dont, they just cover our eyes.

Collecting evidence and help to charge those spams. Say one spam mail for just one minute community service, that would definitely be enough.

I don't have a brilliant brain like Einstein's, but I think this idea is great, an intro clip.

Like TV shows, many YouTube publishers put an intro clip in every video they make. I just watched an intro clip of 30+ seconds of a ~6 minutes video. That video was a recommendation and I had watched same intro before, didn't subscribe to that channel.

That's about 8% of the video size and it's a significant waste in current development of Internet. It's significant because they can reduce it easily.

Such thing has already existed, but in reverse direction, the video ads is an example. Some video streaming websites show you an ad before the video you request, you have to watch it.

If YouTube adds a new field, which allows publisher to choose one as intro clip. The player will play intro clip first, then the main video. Viewer can decide if they want to skip intro.

Of course, there are some new settings. You can always skip intros, or always show intros, etc. Even you decide to show intros every time, as long as the intro clip in cache, you don't need to waste more bandwidth to transfer same content again and again.

It's not all about bandwidth, I just simply want to get into the point, mostly.

But, as usual, wgasa to my idea?

For a long time, YouTube and Google Groups always make me groan. I often ended up with searching something like o gm, I was opening Gmail actually.

Their search boxes steal my precious control. If you are using that slow mouse&mdash;point, point, and click, you probably have never noticed that YouTube and Google Groups kindly help you enter the search box, they thought its convenient for users. Wrong! When most of sites dont help users with thatand why they dont? Think, YouTube and Google Groups! you are only creating burden for users.

Luckily, its easy to fix with Vimperator:

" Get my damn focus back
autocmd PageLoad (www\\.youtube|\\.com :normal &lt;Esc&gt;

I use autocmd to emulate a keypress of Escape to exiting Input mode.

A side note if you are also using Gmails and Readers shortcut keys a lot, the following command let you enter Pass through mode automatically:

" Enter passthrough mode automatically in Gmail, Reader
autocmd LocationChange .* js modes.passAllKeys = /(mail\.google\.com|www\.google\.com\/reader\/)/.test(buffer.URL)

I was hoping I could find a way to re-map a and A because I usually have to re-add bookmark after I wanted to Mark all as read using A, its a removal of bookmark. I couldnt find any, but the method above is acceptable.

I just knew Gnash is 100% of all YouTube videos should work, its true. Also true for Flash Ads. I dont know if its about my hardware, drivers, or libraries, its performance is worse than Adobe Flash 64-bit. Yes, you can spank me, I am still using Adobe Flash 64-bit. I was aware Adobe decided to hold their support for 64-bit and I did not try to switch to 32-bit with nspluginwrappers help. I was risking myself.

Anyway, I had tried everything I could with ~/.gnashrc. I had tried every combination for hwaccel and render. I even tried vaapi, even I knew its purely meaningless since my ATI X1400 is not supported, I was desperate.

Here is some numbers. YouTube 480p using Adobe Flash 10.0 r45: 20-25%, 40-45% in fullscreen. My processor is a dual-core, so 45% means it uses almost one cores processing power. 360p using Gnash 0.8.8: 40%, nearly 100% and very laggy in fullscreen. If I use xv in mplayer for a 720p video, its around 20-25% in fullscreen.

This is my second try of Gnash, first time was probably a year ago, it didnt work out last time. Next time I try Gnash, it will be version 1.0.

I hope its just configuration thing, though I dont think so, but if you have same video card and it works smoothly for you, please tell me about your settings.

YouTube provides few predefined sizes of embedded code, but usually that won't fit perfectly for your blogs. I wrote a simple script to calculator based on the width that you want, it will give you what proportion you should set.

As of writing, the control panel, at bottom of video, is 25 pixels high. If you have set border on, that will increase 20 pixels on both width and height.

A sample embedded code looks like:
<object width="width" height="height">
<param name="movie" value=""></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src=";hl=en&fs=1&rel=0"
type="application/x-shockwave-flash" allowscriptaccess="always"
allowfullscreen="true" width="width" height="height"></embed>

You need to replace proportion in two places, which are marked in red.