Sunday, May 22, 2016

How to set Contact Ringtone in Android Marshmallow (6)

I'm pretty good with these things, but this took me much longer than I expected.

Copy your (cropped to 30 seconds, with audacity or something) song clip to your phone's "Internal Storage > Ringtones" folder. You can use a file manger (not included -- I like ES File Manager -- and copy from your downloads or a network share or something) or do it by connecting your phone to your computer using a USB cable.

Open Contacts App > select contact > select pencil [edit] icon > select overflow menu (three vertical dots) > select "Set ringtone" > find your song clip!

In my defense

In all previous versions (up to 4.4.4, anyway, that I've experienced), it wasn't necessary to select 'edit' once viewing a contact to be shown the 'set ringtone' option. And, since ringtone wasn't one of the listed fields showing information about the contact, I didn't imagine that selecting 'edit' would show a 'set ringtone' option. It does. Now I know.

Thursday, May 19, 2016

Compress Your Home Videos Without Noticeable Quality Loss

While working on a project to allow video uploads from family members to my home server, I realized that my home videos were obnoxiously large. I took a three-minute video of my son acting crazy and it weighted in at 250MB. 15 years ago, I remember watching reasonable-looking, 2-hour long, movies that only took up 700MB. BluRay full-resolution (1080p) backups often look pretty good encoded to sizes between 1 and 2 gigabytes -- something is very wrong here!

I decided to perform a little research and conduct some tests to try and get my file sizes under control. I'd used Handbrake and ffmpeg in the past successfully, so decided to stick with those for this experiment.

The Short Version

Using the High Profile setting on Handbrake, setting Constant Quality (this is NOT the same as Constant Bit-Rate [CBR] and is actually a type of Variable Bit-Rate) to 22 and other default settings, I was able to encode a sample set of videos from multiple different recording devices ranging from low-light, flash-lit smartphone videos to sunlit family moments at a zoo taken on consumer recording devices to a much smaller file size! After deciding on h.264/AVC and trying a few constant quality settings, I settled on cq22 which reduced the size of the collection of files from 496MB to 132MB with no resolution change (resizing) and minimal visual quality loss (obviously, this is subjective). Success!

The Long Version

I can't help myself -- I have to research things to make sure I'm doing them the best possible way...especially if lossy encoding/compression is in the picture. As fast as technology changes, this must be done every few years and the best practice often heavily depends on the intended use.

Before you start...

Storage is cheap. If you have the room, you may want to just keep the original files (to negate the risk of losing data). If you have streaming needs such as myself, a second version for streaming may be a good idea to save your server and users some bandwidth at minimal quality cost. Also, for full disclosure, employing lossy compression (such as the method described here) does cost you "data." The thing to consider is whether the data lost is consequential, can be perceived, and could be valuable in the future. Additionally, is potential storage space gained is worth your time.

This can take a while! Especially if you want to perform some tests yourself to ensure my recommendations work for your video or that your eyes aren't more or less discerning than mine. Hopefully, you can figure out how to batch this process and put your computer to work at night or during long periods of, otherwise, non use. Using the Normal Handbrake profile will probably speed up the process notably, though I'm not sure what the resulting file size or quality trade-off will be.

My findings

I've compared the various containers and codecs in the past and, though I like free and open (vp8/ogg in a Matroska container) codecs and containers, I decided to go with tried and true for this test as I was interested in streaming home videos. My understanding is that using h.264/AVC and aac codecs in a mp4 (m4v) container is the most trouble-free way to prepare files for streaming using modern methods (html5) without the need for flash or multiple file encodes.

At first, I thought 2-pass encoding was supposed to be the best option based on some research I'd done in the past. That turned out to be a misunderstanding on my part. 2-pass is helpful when a specified file size is targeted (when your encoded movie has to fit on a CD/DVD, etc.), but not especially useful otherwise. For this project, Constant Quality (CQ - a type of Variable Bit-Rate[VBR]) encoding was employed as I was only interested in maintaining original subjective quality at reduced file sizes. Handbrake's High Profile and a Constant Quality of 22 produced great results for my batch of videos.

While I can discern (very) minor differences in some of the screen shot comparisons, they aren't noticeable in the video for me (mostly slight artifacting and pixelation, color variation, edge smoothing, etc.). If I planned on trying to use stills for pictures or something, I may use higher quality or, again, start with uncompressed video. Using 720 or 1080 stills as anything higher than a 3"x5" printed photo would likely look bad anyway.

How does it work?

Well, here is some speculation on my part...but since all my source files contained various types of AVC encoding performed by lower powered devices*, albeit with dedicated encoding hardware, they just don't have the power to encode optimally "on the fly." Either that or they use more of a CBR type of encoding...either way, there is room for improvement, even if it means re-encoding an already lossy encoded file to reduce storage space. The only alternative would be to try and configure any recording device to record uncompressed video and then encode it properly later, on a computer. This would avoid double lossy compression, but uncompressed video is remarkably large and would require tons of available space and very fast storage media. Likely, many consumer grade recording devices won't offer those options even if they were viable.

I can't stop myself...

...from encouraging people to back up their data. Presumably, you already back up your data. If not, you should start. $50/year will let you back up all your files with Carbonite...and it is really easy to use. There are likely other paid solutions that are easy to use and cost a similar amount per year.

I use a mix of various cloud storage solutions, network storage, and a usb-hdd. Google backs up all pictures I take (at lower resolution) and all videos (up to 1080) from all my devices and even makes fun little animations out of them that I enjoy. They also back up my music, I think. Most of my documents, code projects, etc, end up on my web server or cloud storage. I've written on backups before, so won't rehash...just make sure your data exists in no less than two locations to reduce the chance of data loss.

Recording Devices

  • Canon(?) DV Camcorder (Sent to computer using DV Capture)
  • Kodak Zi-8
  • Motorola Droid (OG)
  • Motorola Droid 3
  • Motorola Droid X2
  • Moto G (1st Gen)
  • Moto G (4G LTE)
  • Moto G (2nd Gen)
  • Nikon D3100

Screenshots for Comparison

I pulled screenshots with ffmpeg and the frames are off by 1 in half the comparisons...I know that makes it unfair. Sorry. I assure you this was accidental and not maliciously as to mislead.

This is the original still. Hover/tap to show encoded still. (sorry, mobile users, this doesn't toggle for you on second tap)

This is the original still. Hover/tap to show encoded still. (sorry, mobile users, this doesn't toggle for you on second tap)

This is the original still. Hover/tap to show encoded still. (sorry, mobile users, this doesn't toggle for you on second tap)

This is the original still. Hover/tap to show encoded still. (sorry, mobile users, this doesn't toggle for you on second tap)

This is the original still. Hover/tap to show encoded still. (sorry, mobile users, this doesn't toggle for you on second tap)

This is the original still. Hover/tap to show encoded still. (sorry, mobile users, this doesn't toggle for you on second tap)

This is the original still. Hover/tap to show encoded still. (sorry, mobile users, this doesn't toggle for you on second tap)

My take is that there are (mostly, minor color) changes such as shirt color, bright spots, etc., but they are more akin to contrast adjustments, white balance settings, or saturation levels and have no meaningful impact on the viewing experience (especially video) as far as I'm concerned.

Land the Plane!

My wife'd not be happy if I posted the source videos here, but with the stills for comparison, and the very little variance there, you can imagine that the videos look even less changed after the encoding. I'll be re-visiting all my old home videos one folder at a time (starting each batch before bed), and spot checking them the next day for quality control. Hopefully this post will help if you are interested in compressing those home videos to more reasonable sizes!

Wednesday, August 5, 2015

No Network Adapters after Windows 10 Upgrade

I upgraded a few machines to Windows 10. I used a preview and didn't mind it, so thought I'd take the plunge. All had gone well enough until I upgraded a machine and then had no network adapters. I assumed drivers were needed, but everything looked good under device manager. I updated them with drivers from Lenovo anyway. Still wireless or wired adapter visible.

I googled and found this, which looked promising: Fix No Wi-Fi Available After Windows 10 Upgrade Issue, Here’s How

I followed the steps and the first one seemed to take, but the second definitely didn't, and the problem remained.

Then I saw this discussion: Network Adapter missing after automatic windows 10 update

...near the bottom, someone mentions that they had to locate the key in regedit and delete it there, as opposed to doing it through elevated cmd. I tried that way and it worked. THEN I ran the second command from the first link and it succeeded and immediately fixed the issue. I restarted just in case.

I can't add a screenshot since I already did it, but you can browse to and expand HKEY_CLASSES_ROOT>CLSID, then delete the 988248f3-a1ad-49bf-9170-676cbbc36ba3 key and subkeys. Back up your registry first to be safe. Searching for '988248f3-a1ad-49bf-9170-676cbbc36ba3' may be faster if you can copy and paste. Good luck!

Wednesday, April 8, 2015

GPL vs MIT | a very rough comparison for those familiar with Creative Commons Licenses

So I googled GPL vs MIT for some reason or another and read a couple of stacker overflow "discussion" and scanned a few reference links and have come up with this, which may help anyone familiar with Creative Commons licenses.

  • GPL ~= CC BY-SA (Credit the work of others, Share-Alike. If derivative work is distributed to others, software must use same license.)
  • MIT ~= CC BY (Credit the work of others. Derivative works can use alternate licensing.)


On the CC site, they recommend not using their licenses for software, even though the Gnu licensing site states it as an option of other licenses don't fit the author's licensing needs.


Google Auto Backup | high processor utilization

Google Auto Backup, Quit Making my Fans go Crazy!

I use Google Auto Backup at the reduced (2048x) resolution for an unlimited quantity tertiary backup. I already keep things saved and saved at full resolution, but it is hard to say "no" to another level of backup with minimum hassle. Plus, the auto-awesome animations (animated gif files) are actually usable pretty often, even if they aren't as honed as when I spend 30 minutes to create one myself.

Back to the topic, lots of times Google Auto Backup's process hangs or something and pegs out one core of my processor at max utilization for an indefinite period. I feel like it prevents the machine from sleeping, which is a pain. My cooling fans sporadically spin way faster to cool the processor which is working so is just a noisy mess. I'm not alone in this problem, it seems (!topic/picasa/8l5p8I6Ilu8). In the past, I've just killed the process and manually restarted it when I needed or restarted the computer to get it going again. That gets the job done, but I've often wished for a more elegant solution.

A More Elegant Solution

I can't make any promises, but in 1 of 1 test scenario, the following "fixed" the issue for me, albeit temporarily [i only upload pictures to my computer every few days]:

  • right-click the auto backup icon in your system tray
  • selct the 'view failed uploads' option
  • select 'retry'
  • assuming the retry is successful, you should see an immediate drop in processor usage, I hope

That's it. Let me know if this does't work for you. I'm writing this on memory (I don't have a "failed uploads" option in my right-click context menu because I have no failed uploads, currently. If you don't have failed uploads, but are seeing high processor utilization by the Google Auto Backup process, I've given bad advice or you have a different problem. Either way, I'd like to know.

Thanks for reading!

Friday, January 9, 2015

So I got a Moto G or 2


a tale of two phone users

I didn't want a cellphone when my wife got me one in 2004 or 2005. I don't like monthly bills and didn't think I would use it enough to justify the price. Plus, I was relatively responsible and could call from a public phone or work phone before leaving if I wanted to deviate from my schedule enough to necessitate giving notice.

Naturally, I was hesitant when smartphones started becoming the norm. I was a little more interested than I had been in cellphones due to the fact that I'm a computer nerd, but my frugal nature (a data plan on top of my, already, high monthly bill) and lack of a "need" for the fun a smartphone could occasionally provide kept me away.

We finally made the plunge by buying ~$100 used smartphones (an OG/1st gen Motorola Droid for me and a LG Ally for my wife, both querty keyboard slide-out phones) and signing up for pre-paid monthly plans through Page Plus Cellular. All said, we were paying less than 1/2 per month what we had been paying Verizon for standard service and we got more minutes, more texts, and even a little data to use on our new smartphones, which we mostly used for occasional GPS directions help or google searches when not close to computers.

A year or two later, my wife got a Droid 3 and I got a Droid X2, both ~$100 second-hand. These were probably a mistake. While our 'old' phones were really showing their age, and both new devices were dual-core, they had too little memory to offer much in the way of upgrades. We were, basically, stuck on the same OS (Android 2.3) as we had been with our old devices. This didn't feel like as much of an upgrade as we had hoped for!

Another year later, I got my wife a new 1st Gen Moto G (Boost Mobile) for $60 for Christmas or her birthday or something in between and was able to flash it to Verizon to activate it on Page Plus. It was leaps and bounds ahead of anything we'd used. She ultimately had worse reception and data availability than her Droid 3, though, but all other parts of the upgrade/user experience were notably better enough that we overlooked it for a while and waited too long to send it back -- I'm still not sure if she landed a lemon or what (i never did a factory reset to see if the problem was software-resolvable). Then, she dropped it and cracked the screen a little, although it is still entirely usable. It does have to be restarted pretty frequently to address the (resulting from the drop?) touchscreen issues. Finally, the Moto G Camera isn't amazing. I'm not sure how much of this complaint is due to unrealistic expectations (we normally shoot photos on DSLRs) or poor performance. I don't expect much from phone cameras so don't usually mind the terrible pictures in lieu of no pictures at all. The video seems reasonable enough that I rarely get out our video camera and camera stills do in a crunch.

At this point, I'm long overdue for a replacement for my Droid X2, and I need a phone my wife is happy with. While shopping (primarily for her, as mine still gets the job done -- aka plays music from a micro SD card and allows me to use turn-by-turn GPS when I need it), I came across a Moto G 4G (released after the first Moto G with 4G support and a micro sd slot) on Cricket Wireless for $25. This price was after a $50 discount and $75 Mail-in-rebate on the initial $150 price. The MIR requires 2 months of service. Sold (for me). It offers no improvement for her (same camera and no guarantee of better voice/data coverate), so I hold out a little.

While mine was on order, I purchased a 2nd Gen Moto G (bigger screen, better camera, micro SD slot, no 4G, Android 5.0 ready[supposedly]) for $150 for my wife. It is carrier unlocked, so I can use it on any GSM network, but will probably put it on Cricket Wireless (AT&T network) after the initial experience with mine. *update -- I did put it on Cricket and was happy with the results. While you lose the $5/month credit for autopay, you get a $10/month multi-line it works out, although it'd be awesome if it stacked. Still no Lollipop (android 5.0) for the Moto G (2014) I got for my wife, but I'm not too mad about it at this point. She stored her contacts on her phone, so I had to sync with Google Contact on old phone, then merge contacts on my PC to get the contact on her new phone properly (Motorola Migrate didn't copy them, apparently), but I've been trying to convince her to stop storing contacts on her phone for ever,

My $25** 1st Gen Moto G (4G) arrived a few days ago, but I was unable to get it until Yesterday. Activation was a cinch and, after transferring my micro sd card from the Droid X2 to the Moto G and running Motorola Migrate on both phones, most of my data came right over. I just had to install the apps I wanted from Google Play and customize Android 4.4.4. I tested my voice and data receptions and was satisfied. Although I'm a lite data user and spend much of my time on Wifi, I'm excited about my Unlimited (up to 1GB before speed throttling) data and may start to consider streaming some music instead of playing from my local storage like I'm so used to.

20150202 Update
My wife's 2014 (3g) Moto G started getting prompted to update to 5.0 (Lollipop) a couple of weeks ago and she accepted after I inquired (the phone had been inquiring for a few days at all the wrong times). It seemed to take 30 mins or so, in total, but she didn't have much trouble with it. I haven't heard her raving about the new features or anything...but she is a phone user more and more and her not complaining about a phone means it is doing a good job. Most nights, though, when I plug hers in (1:00 am) it is at <5% battery. It gets through the day, but I'd not expect an ounce more than that.

Final Thoughts

I still like Page Plus. They offer reasonable service on Verizon's network for good prices. The $30 plan gives plenty of minutes and texts, and enough data (100MB when i started, 500MB by the time I left). They are a good option for CDMA phones supported by them or flashable to work with them.

I submitted the Moto G 1st Gen (4G) for $25 to bensbargains twice and they didn't pass on this deal. I'm very confused.

Cricket is great so far -- better coverage than with the Boost Mobile Moto G (1st Gen) flashed to Verizon for PP use. My wife's new Moto G (2nd Gen) has much better reception than the former. I've yet to do a side by side comparison on the upgraded components (camera)...but the speakers, being front-facing and at both ends of the phone, seem far superior to the original design*.


  • *they may confuse my DIY saltines box smart phone speaker enclosure, which is used to my phones having only one speaker to contain/amplify/fill-out.
  • **assuming my rebate comes without incident.

pop quiz

  • who has had more phones...Melissa or I?
  • which of us has more need for an sd slot due to the preference to play "local" music?
  • [subjective] who is more difficult to please, phone-wise?
  • Friday, November 28, 2014

    Lossless MKV to MP4 (thanks, ffmpeg)


    The following all still applies and is sound advice, but you can perform a simple container switch (I think the technical term is demux and remux) or lossless conversion (no re-encode) using VLC, which is pretty common among people who want to view media. I won't re-invent the wheel, and you can google "mkv to mp4 vlc" to see videos on how to do this, but you are basically opening VLC and choosing file>convert/save, then picking the source file (mkv) and clicking convert/save, then select the 'tools' by the profile dropdown and set 'encapsulation' to mp4/mov, and audio and video to 'keep original.' Then just click save and set your destination file and do it.

    Keep in mind that mp4 files are, arguably, a little more well received as apple devices can play them and they are a little more friendly for web streaming. That said, I prefer the mkv container as it allows multiple subtitle tracks and allows various codecs such as . The mp4 container, I believe, is only supposed to work with older mpeg or avc/h.264 encoded video and AAC encoded audio.

    And soon enough we can re-visit with HEVC/VP9/Daala thoughts...

    A long time ago, I wanted to "extract" my video and audio from a mkv and put them into a html5 video friendly .ogv file/container. I wrote about it here.

    This is a little more of an update to that post than a new idea, but I was dissapointed at the search results when I googled "lossless mkv to mp4" and hope this may be of some assistance. It probably won't. Here's hope.

    It really isn't bad. If you want to be thorough, install MediaInfo and verify the audio code and video codec are compatible. I'm not sure what mp4 accepts, but AVC/h.264 for video and aac for audio seem to be the most common codecs. Technically, you could copy the video and recode the audio if that was needed for your situation. The code would need little modification.

    Install ffmpeg. Get the package for your OS (i'm using Windows), then extract it. It doesn't have to install, so pay attention to where you extract to.

    Next, open cmd (search from the start-menu search) and browse to where you extracted ffmpeg. Try using 'tab' to auto complete from cmd. It saves tons of time. Tab multiple times to cycle through potential completions.

    Type the following, using the video (full location input and output --fun, I know!) for input.mkv and the name you want as output.mp4: C:\videdit\ffmpeg\bin>ffmpeg -i c:\Users\nchapman\Videos\christianeatingwackyburger.mkv -codec copy c:\Users\nchapman\Videos\newchristianeatingwackyburger.mp4

    Hope this helps! You can use -acodec mp3 -vcodec copy or something crazy if you prefer.

    Also, you can encode all files in a directory by saving this to a .bat file (then, drag a .mkv file onto it):
    for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4" pause

    Source (last comment)