Creating DVD Video Discs

Recently I created a video to commemorate my mom’s 80th birthday. Of course once the video is created, there is always the challenge of distributing the video. For people who are always online and have a respectable bandwidth, they can simply view the video online, as I have made arrangements to post it here on my blog site. The video is embedded in The Grand Birthday post. What about others who are not online savvy or are still clung to their DVD players.

I usually use a program called Burn on my Mac to burn videos into DVD Video discs. However I find the process unsatisfying. I needed something that can be applied to mass processing. I also did not like the unprofessional DVD menu that Burn applies to the DVD disc. Also the program is quite old and I fear may not work for future versions of macOS.

I came across this Convert any Movie to DVD Video wiki link, and found some really useful information. After reading through their process, I found, practiced, and proven this trimmed down version on my Mac.

First I had to install several utilities through the brew packaging system on my Mac.

brew install ffmpeg dvdauthor cdrtools

I use the above utilities to perform the following steps:

  1. Convert the source video (typically optimized for my Apple devices and my TV’s) to an NTSC DVD compatible format;
  2. Author a DVD directory structure using the video;
  3. Create an ISO from the DVD directory structure for archiving and burning purposes;
  4. Burn the ISO to a physical DVD-R disc.

The first step is to convert the video:

ffmpeg -i original.mp4 -target ntsc-dvd -r 29.97 -s 720x480 -aspect 16:9 -b 8000k -g 12 -mbd rd -flags +aic -trellis 1 -cmp 2 -subcmp 2 video.mpg

I ended up using the above command which supposedly yields the most optimum  quality in terms of viewing. The output video.mpg is DVD compatible. The above command assumes an aspect of 16:9, which is what most home videos are shot at today.

I then use the dvdauthor tool to create the DVD directory structure. Before I use the tool, I first have to create an XML file containing how I like the DVD to be configured. Below is a bare minimum XML file configuration that I used to simply create a DVD disc containing a single movie. The tool gives me the option in the future to add menus, chapters, etc.

    <dvdauthor format="ntsc">
        <vmgm />
        <titleset>
            <titles>
                <subpicture lang="en" />
                <audio lang="en" />
                <pgc>
                    <vob file="/Users/kanglu/Downloads/video.mpg" />
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>

I then proceed to run the tool with the above XML file, which I named dvd.xml.

    dvdauthor -o dvd -x dvd.xml

This will result in a folder called dvd which will contain the contents of the DVD disc. Once I have the folder, I can then create the ISO file.

    mkisofs -dvd-video -udf -o dvd.iso dvd

The resulting dvd.iso file is a good archiving format in case I want to make more DVD discs in the future. At this point, I no longer need video.mpgdvd.xml, and the dvd folder. The ISO file is all I need to create a DVD Video disc containing my video. After sticking in a blank DVD-R disc, I executed the following command.

    hdiutil burn dvd.iso

I repeated the above hdiutil command with several more blank discs to make a bunch of discs for distribution. The resulting DVD Video disc contains a single video without any confusing menu system; the way I like it — keep it simple and stupid.

Too bad not everybody has Plex or Kodi. Even a Raspberry Pi with OSMC installed would be wonderful. That will make future distribution of family videos a lot easier!

However, I am now happy to have a workflow that works for me. I hope you will find this helpful.

A Grand Birthday

This past weekend on October 6th, 2018, we celebrated my mom’s 80th birthday. We invited many friends and family to come to Richmond Hill at a restaurant called Emperor’s Chinese Fine Cuisine restaurant for a casual dinner, along with some light entertainment.

Family from Mauritius and around Canada came to join us in celebrating my mom’s 80th birthday. I am super thankful for the great turn out, and we all participated in making some great memories. Special thanks to the performers, who also made the event that much more special. The lion dance from Sammy Cheng was spectacular. The traditional dancers made our venue magical, while Kalen’s guitar performance brought the celebration close to heart. Of course, the line dancers also added a fun and coordinated touch to the dance floor. The beat of Sega music brings out the joy in us all.

With the help of some high tech toys, people were able to record and contribute some wonderful moments. I took the past couple of days to put these media snippets together in this twenty-three and a half minutes long video.

So when you have a moment, sit back, and enjoy. I know that I will cherish this moment and will use this video to remind me of this grand, happy occasion.

Your Internet speed may not be fast enough and you may experience freezes or stuttering when playing the above video. If you have such an experience, it may be better to download the movie first and then play it locally on your computer. Sorry for the inconvenience.

Press one of the buttons below to download the movie of the quality you wanted.


Updated October 16: You can also download all the source media, original photos and videos from here:

Note that the original media will only be available for about 60 days from the time of this posting, so if you want it, then please download it now.

Switching Sides

Yesterday in a surprising announcement from our MP Leona Alleslev (@LeonaAlleslev), MP Alleslev decided to resign from the Liberal party and join the Conservative party of Canada.

Her reasons and quotes are publicly available and I will not comment on them. As a member of her constituent, my immediate reaction is one of betrayal, and now with more time thinking about it, I hope to articulate my reasons for feeling as such, for that feeling continues to persist.

Leona Alleslev campaigned on the Liberal platform, with the support of the Liberal party. As a voter in her riding, I supported the platform (not all but most) and voted for her. The Liberal party did not have multiple candidates in my riding, so the only way to support the Liberal agenda during a federal election in my riding is to vote for her. The Liberal party could have picked a different candidate with different values, qualities, and beliefs. It would not have mattered. If I wanted to support the federal Liberals, then I have no choice but to vote for her. Therefore it is my interpretation that my vote is in support of the Liberal red and not the Conservatives blue.

I want to repeat what I just outlined. I did not vote for her. I had no choice but to vote for her if I want to support Liberal.

We can have the debate about whether my vote should be based on the merits of the individual representative or the party. The substance or outcome of such a debate is irrelevant because as a qualified voter in Canada, I should be allowed and have the right to vote however I want, and the meaning of my vote resides in my sole interpretation, as I have outlined above.

Her decision to switch to the opposing team is in direct negation of my vote. I am  not saying that she did not have the right. I am simply justifying my feeling of betrayal.

She can justify her actions to our riding, to the media, and to the country. In today’s political climate, words offered by politicians are a simple commodity. Her action to cross the floor not only canceled my vote but reversed my decision in the last election without a discussion or debate. This is the action that I will remember in the next federal election as a proxy for her values. It is irrelevant whether these are her true or real values, but they are the values that she has chosen to project by carrying out such an action.

Leona Alleslev, you will be remembered.

The Road to Harmony

The Basement Replacement

It all started with me spotting an extraordinary deal for a pair of ELAC Surround Bookshelf Home Speaker (UB51-BK) designed by Andrew Jones.

ELAC UB51-BK

I purchased a pair from Amazon and saved more than 20% at the time of purchase. Little did I know that this particular purchase is the first step of many on the road to pursue the best sound system for the buck that I can have in our basement and bedroom.

The ELAC speakers were suppose to replace my old JBL Northbridge (N28) speakers, which were my front speakers for my basement home theater system.

JBL Northbridge N28

At the heart of the home theater system, was the Marantz NR1408 AVR. Unfortunately, this particular AVR did not drive the new ELAC speakers sufficiently. Rated at 50W at 8 Ohms per channel, I found that the sound coming out of the ELAC, rated at 4 Ohms, was somewhat unsatisfying.

NuPrime STA-9

Since the AVR has pre-amp out connections, I started to search for a suitable stereo power amplifier that can output enough juice to drive my new ELAC’s. I settled on the NuPrime STA-9 power amplifier, with a 120W per channel at both 8 and 4 Ohms. The NuPrime and the ELAC’s were an excellent match. The sound was crisp, and the imaging was superb. You can hear the instrument separations and placements clearly through a wide soundstage. The vocals were warm and super comfortable to listen to. Today I am really happy with my basement setup. Unfortunately this new experience cost around $1200, $520 for the ELAC’s and $700 for the NuPrime.

The Bedroom Boom

Now, what should I do with my old JBL N28 speakers? Sell them, throw them out, or repurpose them? Selling them was not an option. A quick search on Kijiji and eBay yielded less than compelling value to dredge oneself through a resell transaction that is worth less than $100. Throwing them out seems like a huge waste on a perfectly good pair of speakers.

Bose Wave Radio/CD

I decided to put them in my bedroom and replace my aging Bose Wave Radio/CD Player. The Bose sounded good but nothing close to the fidelity that I am now use to in both the basement and the living room setup. The JBL N28 are passive speakers so if I want them in my bedroom, I will need to find another stereo amplifier. However, I don’t want to invest in another NuPrime, which seemed excessive and expensive.

Topping TP60

I found a $293.99, 80W per channel amplifier with many praises called Topping TP60. For source, I repurposed my Airport Express that was originally
feeding the Bose and redirected its input into the TP60. This combination gave new life to the N28 speakers.

To benchmark the different setups we were using a Chinese album named,《民歌·蔡琴》. The first song, 被遗忘的时光, is the same song used in the Infernal Affairs (無間道) movie. You can find the album on Apple Music. We had the following versions of this song:

  • Apple Music (Streamed)
  • CD (XRCD) 44.1KHz 16 Bits
  • SACD 192KHz 24 Bits

After much A/B testing, I found the highest SACD fidelity with 192KHz at 24 Bits sounded the best. The differences were not marginal but substantial audible differences could be heard. The Apple Music version sounded almost like mono when compared to the high resolution versions. The female vocal came across more life like and real in the SACD version.

Pivotal Digital

So, what’s the problem? In this new bedroom setup, I simply used a 3.5mm audio jack RCA splitters to connect the Airport Express to the TP60. This first attempt at using the splitter cable uses the internal and inferior DAC.

FiiO D3 DAC

To remedy the solution, I purchased a cheap external FiiO D3 DAC ($35), and used the mini-Toslink connection from the Airport Express. The song sounded better but was not the same as the basement. As it turns out, the Airport Express was limited to 44.1KHz, so I could not experience the hi-fidelity SACD source. When I streamed the SACD version, it just gets down-sampled. What a waste of perfectly good material. We cannot let good music goto waste, so onwards to a solution.

HiFiBerry DAC+ Pro

I needed to replace the Airport Express all together. A podcast that I listened to gave me the idea to explore how I can use my Raspberry Pi as the digital source for music. After much research, I found the combination of Raspberry Pi, HiFiBerry’s DAC+ Pro, and the Volumio software can give me what I wanted.

Raspberry Pi 3 Model B

In summary, the Raspberry Pi with Volumio software acted as my Airport Express replacement, and the HiFiBerry DAC+ Pro add on board eliminated the 44.1KHz limitation. This combination sounded really good.

Topping D30 DAC

Until I tried DSD materials through the stack.

DSD64 (2.8224MHz) and DSD128 (5.6448 MHz) music will play because Volumio will resample the material to 192KHz at 24 Bits, but sometimes it would stutter.
In my pursuit for native DSD capability, I ended up purchasing another external DAC that is capable of playing DSD natively. Since the Topping TP60 was so good, I thought I give the Topping D30 DAC ($175) a go. The inclusion of the D30 replaced the HiFiBerry DAC+ Pro add on board, since the Raspberry Pi can directly connect to the D30 DAC via USB.

Dilvpoetry Tube-01 Buffer Pre-Amp

The final setup is:

  • Raspberry Pi running Volumio to act as my Wireless streamer, rendering music from AirPlay, or from my Plex server acting as a NAS;
  • Raspberry Pi emits the music as digital streamed data via the USB to my D30 DAC;
  • The D30 DAC can now decode music up to 192KHz at 24 Bits and DSD128 natively, and amplifies the signal to pre-amp levels which is then fed to another toy, the Dilvpoetry Tube-01 amp, that buffers the input signal with 6J1 vacuum tubes;
  • The output of the tube amp is then fed to the TP60 that then drives the JBL N28.

Whew! What a journey just to reuse my old pair of JBL N28 speakers. BUT I now have a setup in my bedroom that sounds almost as good as my basement setup. The imaging is not as good, but I am happy with what I have got, a wide stage, warm and realistic vocals, that can play soft jazz to put me to sleep. Harmony!

Update:

The Raspberry Pi has problematic USB drivers which caused crackling sounds with the D30. I had to add the following parameters into the /boot/cmdline.txt file.

    • dwc_otg.speed=1
    • dwc_otg.fiq_split_enable=0

Crackling still happens sometimes, but it is now bearable. Also without the speed parameter, the D30 will only play DSD using DoP at 100% volume. Obviously this was annoying as well.

On the lookout now for an alternate Raspberry Pi that has WiFi and a more robust USB port. Perhaps the ODROID-C2.

Tragic Van Attack in Toronto

Last week we witnessed a horrible event in Toronto. A young man, Alek Minassian rented a van and proceeded to hit pedestrians on Yonge Street between Sheppard and Finch with the explicit intent to cause fatal harm.

I learned of this news at the office and my initial thoughts were, “No it could not be. Not in Toronto. Not in Canada!” As we review the news briefings on Twitter, CBC, Global, CTV, and CNN, it is tragically clear that many innocent people enjoying a beautiful, sunny afternoon on Yonge met an unfortunate fate.

Of course this type of drive-by killing immediately reminds us of the numerous and similar incidents in Western Europe and in the US. I still cannot fathom why any individual would cause harm to strangers who have not displayed any threat or ill intent towards the perpetrator. These hateful behaviours are not compatible with any stable society.

People who wield, advocate and execute such abhorrent beliefs are effectively cancerous to others livelihood. We must combat such cancer with education, empathic communication, and not lash out with ignorant animosity. We need to show them that we can keep our wrath in check, and we can stay vigilant and strong, and move forward, and continue to live life the way we want and not in fear.

I was doubly surprised when Alek’s father turned out to be a former coworker of mine back at Ironside Technologies. I cannot imagine how he feels. The words, “extremely difficult”, is probably a drastic understatement. He is also a victim of the event. I reached out to him and offered whatever support should he requires it.

My condolences to all victims, survivors and others that are horribly touched by the event. Let us all work together and be transparent to our beliefs, and grievances. Let us leverage our empathies so that we can address our disagreements with civilities and compromises. In the end, we can and should ALL GET ALONG!

Facebook Trap

I deactivated my Facebook account on March 23. Here is my experience.

I continue to use messenger without any issues on my iPhone, but trying to use messenger on my computer via the browser eventually forces me to validate my identity with my Facebook account, which will implicitly reactivate my account. I had to consciously avoid doing this on many occasions. This means I can only use messenger on my mobile devices. This sucks.

During the deactivation period, I found using Instagram to be quite satisfying. I would say that a combination of Twitter and Instagram is a better fit for my social media needs than Facebook at the moment but it does have one severe drawback. When I find something of interest on the Internet, I cannot share links with Instagram at least not directly. I ended up sharing those thoughts with Twitter instead, but people on Twitter is not the same on Facebook. Also there are links within the Instagram App itself that will re-enable your Facebook account. I also had to consciously avoid those.

The other major difficulties is the use of my Facebook identity on other sites that I used, for example Strava and CBC, etc. disassociating these accounts from my Facebook account was annoying and most people will probably not tolerate it and simply reactivate their account. I did preserve through this process though and try to isolate my Facebook identity to just Facebook. However I have not found a way to separate Instagram entirely.

Facebook continues to send notifications via email even when you have your account deactivated. This includes messenger when you get a new message. Obviously clicking on these will eventually reactivate the account. Again I avoided doing this for about two weeks until this morning I inadvertently clicked on an email which brought me back to my Mobile Facebook Page. This automatically reactivated my account.

In summary, once you are a member of a social network, trying to leave the platform is extremely difficult. The combination of WhatsApp, Instagram, and Facebook is a perfect trap that is difficult to escape from. You have to sever yourself entirely as an interactive Internet user to really do it. You can still consume from the Internet, but as soon as you like to engage you’ll find yourself being lured into the Facebook trap.

So I am back. I guess I am admitting that currently the benefits out weigh the risk.

Deactivated Facebook

Today I  took the plunge and deactivated my Facebook account. I can still be reached with Facebook messenger, but if you try to look at my Facebook account, it will show that I am no longer there.

I guess the best way to find me online now is here, or on:

I may reactivate my account after a month, but we’ll see.

External Fusion Drive

Our iMac (27-inch, Late 2012) is running out of space. We have a little over 150GB  free space left from 3.11TB. Even though our iMac is over 5 years old, it is still serving the family without much fuss.

Our collections of photos, videos, and recently burning our CD music into non-lossy format such as FLAC or ALAC, really has increased our disk space usage tremendously. We now want to give it more space.

I really like Apple’s Fusion Drive solution. It is a nice solution to achieve SSD speeds and also have lots of storage without the accompanying stiff price tag. This lead to some experimentation on how one can create an external fusion drive.

I purchased a 2 bay USB 3.0 Hard Drive Dock that support UASP so that we can take advantage of the full 5Gbps bandwidth of USB 3.0. On one of the bays, I attached a 4TB Hard Drive that I have laying around, and the other bay I placed a Samsung 850 EVO 250GB SSD drive.

I then use the Mac utility Disk Utility program to erase and partition both drives with GUID Partition Map using the Mac OS Extended (Journaled) format. After the format is completed, the command line

diskutil list

will show

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *4.0 TB     disk4
   1:                        EFI EFI                     209.7 MB   disk4s1
   2:                  Apple_HFS 4TB                     4.0 TB     disk4s2

/dev/disk5 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *250.1 GB   disk5
   1:                        EFI EFI                     209.7 MB   disk5s1
   2:                  Apple_HFS 250GB                   249.7 GB   disk5s2

I then proceed to create the Logical Volume Group using the command line:

sudo diskutil cs create mediafusion /dev/disk5s2 /dev/disk4s2

I want to make sure that I specify the SSD drive as the first parameter, since it is the faster drive with ~400MB/s read and write throughput. Once the volume group is created, you’ll get the following output:

Started CoreStorage operation
Unmounting disk5s2
Touching partition type on disk5s2
Adding disk5s2 to Logical Volume Group
Unmounting disk4s2
Touching partition type on disk4s2
Adding disk4s2 to Logical Volume Group
Creating Core Storage Logical Volume Group
Switching disk5s2 to Core Storage
Switching disk4s2 to Core Storage
Waiting for Logical Volume Group to appear
Discovered new Logical Volume Group "2CD5F422-95AA-4BA8-8158-F076494977E7"
Core Storage LVG UUID: 2CD5F422-95AA-4BA8-8158-F076494977E7
Finished CoreStorage operation

We finish the setup by creating a logical volume within the logical volume group by using the following command line:

sudo diskutil cs createVolume 2CD5F422-95AA-4BA8-8158-F076494977E7 jhfs+ MediaFusion 100%

I made sure that I use the LVG UUID from the previous output. I also found out that you can list all the fusion drives and their make up by executing:

sudo diskutil cs list

In the end, I now have a 4.25TB MediaFusion drive mounted on one the USB 3.0 ports of my iMac. I plan to move all my iTunes and Photos library on to that drive so that I can free up my main drive on my iMac.

There is another issue. Now that I have a total of 7.25TB on my iMac, my old 4TB Time Machine drive is insufficient. Luckily Costco has a 6TB external drive on sale for $188 CAD. I ended up purchasing two. One for onsite Time Machine, and the other for offsite storage in our safety deposit box.

Home IT upgrade completed!

Total cost for the upgrade is:

Item Cost Purchased From
Samsung 850 EVO 250GB SSD 109.99 Canada Computers
Vantec Storage Accessory NexStar TX Dual Bay USB 3.0 HDD Dock Black 34.99 Canada Computers
WD My Book 6TB HDD 188.99 Costco

The total is $333.97 CAD + tax.

I did not include the extra 6TB drive for offsite storage, because that is my personal preference. I also omitted the 4TB HDD that I used because I repurposed my old Time Machine drive for that.

This is a fraction of the cost of a 2TB USB 3.0 SSD Drive, such as the 2TB Samsung T5 Portable External SSD with USB 3.1, which costs $879.99 CAD at the time of this writing. I get more than double the storage for a little more than a third of the cost. Okay, raw performance may not match the Samsung T5 drive, but I’m just using it for storing my iTunes library and other infrequently used media.

Redstone Public School Educamp

Last Friday I had the privilege of participating in my son’s school event called Educamp. The concept is to provide students from grades four to six a taste of modern skills that we are seeing more and more of as a necessity in today’s world. Students were split into groups of twenty or less, and they attended rotating hour long workshops. Each workshop covered one of the following topics:

  • Coding
  • 3D Printing
  • Robotics
  • Stop Motion Video

There may have been more topics, so sorry if I missed them here.

The day ran like a mini conference format with a total of four rotating sessions. Each session giving students an introduction to one of the above topics. Educamp also gave opportunities to selected grade seven students to run the sessions. My son Kalen was one of those students. You can read about his account here. Although the day was supervised by the teachers, but the sessions were largely presented by the students. I found the idea of students teaching other students in a day long mini conference such a brilliant concept!

I personally participated in four coding sessions with different groups of students. It was wonderful to see them excited and engaged with the MIT Scratch programming platform. The looks on the kids’ faces when they discovered what they can create with Scratch were priceless. The inquisitive nature of students chomping at the bit was fascinating. The sessions also made me appreciate the hard work that teachers face on a daily basis when coping with a group of excited kids. I really wanted to thank my grade seven helpers and the supervising teachers to ensure the sessions were focused, and made it so much more easier for me to present.

Kudos to all the staff at Redstone Public School for initiating such an event. I want to give a special shoutout to Mr. Grey who introduced the event to me and allowing me to participate and introduce coding to the kids at the event. It was extremely productive, and rewarding. I think the appetite for these types of topics are insatiable for the kids at these ages, and the future can definitely use more of these creative events!

 

Chinese Ambassador Sun Gongyi (孙功谊) to Mauritius Visits Mr. Claude Ng Thow Hing (吳松光)

On October 24th, 2017, Chinese Ambassador Sun Gongyi (孙功谊) paid a celebratory visit to the home of Claude Ng Thow Hing (吳松光), wishing him a happy and healthy eightieth birthday.

Ambassador Sun expressed that Mr. Claude Ng Thow Hing’s father Mr. Wu Tao Xing (吳桃興), amongst many Chinese Mauritians helped to forge the Sino-
Mauritian relationship as we see today, and the formal establishment of the Chinese Embassy in Mauritius. These efforts and contributions are deeply appreciated, and the People of China will not forget these “old friends”. The Chinese Mauritians have consistently promoted the value of a healthy and strong friendship between China and Mauritius, expressing their deep connection to the motherland. The development of China will always be in the hearts and minds of the Chinese Mauritians.

Mr. Claude Ng Thow Hing and his family greatly appreciated the Ambassador Sun’s special visit. The Ng Thow Hing family together with other Chinese Mauritians are honoured to continue the heritage and legacy of  Mr. Wu Tao Xing, and will redouble their efforts to strengthen the Sino-Mauritian relationship.

Update: 2023-07-06

I found the official page from the Chinese embassy web site (http://mu.china-embassy.gov.cn/tpxw/201710/t20171025_6320015.htm). Just in case the URL changes in the future, I also provided a screenshot of the page below.

Click above to go directly to enlarge. Click on the URL to go direct to the page.