FFMPEG is a free and open-source cmd-line driven VIDEO and AUDIO utility. It has become my 'go-to' choice for many of my various video and audio file-manipulation needs.
Some 'ffmpeg' basics...you can quickly and easily extract shorter 'snippets' from longer multimedia files. The following ffmpeg cmd will copy the first 2 streams (e.g. both the video and audio streams), preserving whatever video and audio codecs are used in the input file, and snip out '-t' seconds in length, starting at an offset of '-ss' seconds into the file:ffmpeg -i MOVIE.mp4 -vcodec copy -acodec copy -t 900 -ss 2100 MOVIE-15mins.mp4
If you need to convert, say, an MKV video into an MKV of much smaller size, 'ffmpeg' can do that, too. I use a cmd like this:ffmpeg -i Fargo(1996).mkv -vf scale=1080:-2 -b:v 800k -acodec copy -scodec copy Fargo(1996)-smaller.mkv
Some research and some trial-and-error were involved, in arriving at this cmd...especially, the video-filter scaling portion.
The choice of 1080 for the output's width was arbitrary...a mid-range value. The height value of '-2' is shorthand for asking ffmpeg to preserve the aspect-ratio of the input file, but ensuring that the height is divisible by 2 (which is a relatively little-understood constraint/rule that ffmpeg has). And, the need to specify that the 'scodec' be copied wasn't obvious to me until I happened to choose an input file that contained a sub-title track (actually, it contained MULTIPLE sub-title language tracks). So this cmd is saying to copy the first audio stream and the first sub-title stream (if present), but then drop any secondary audio and subtitle tracks that might be present.
The video bitrate of 800k was chosen as a 'reasonable' value, after I encountered several MKV files with bitrates 10 times higher than that! (I suspect that such files were ripped from BLUE-RAY movie DVDs, or other original media with very large resolutions and bitrates.)
If you need to convert an MP4 video into Google's new-fangled VP8/VP9 (aka "WebM"), 'ffmpeg' can do it:ffmpeg -i Fargo(1996).mp4 -vcodec libvpx -b:v 500K -acodec libvorbis Fargo(1996)--webm.webm
I should mention here that I started using WebM files because HTML5'video' and 'source' tags support viewing of WebM files. At about the same time, I'd tried (and failed) to use an MKV-file (containing H.264-video codec) in an HTML-5 webpage. When it was later suggested to me that MKV-files are usable in HTML-5 (citing that WebM files are Matroska-compliant), I did some more investigating. It turns out that WebM files are a strict subset of Matroska. So note that there are a number of restrictions that get enforced if/when you use a tool such as "mkvmerge" to produce a such a 'webm-compliant' output file.
Quoting from the "mkvmerge" util's documentation, it states that when you use the '-w' '--webm' option, the rules/results are:
Creates a WebM compliant file. This is also turned on if the output file name's extension is "webm". This mode enforces several restrictions.
The only allowed codecs are VP8, VP9 video and Opus, Vorbis audio tracks. Neither chapters nor tags are allowed.
The DocType header item is changed to "webm".
Let's say you have some older-generation video-files...e.g. some 4:3 aspect (almost 'square' shape of TV-sets in the 1950's and 60's and 70's).
And, now you want them to display in the more modern 16:9 widerscreen layout common to flatscreens in the early 2000's years. So, two possible approaches
are: (Approach #1) Actually alter the video's framesize (aka resolution), which involves doing a is a time-consuming re-formatting process
(typically taking an hour or more for a 90-minute movie),
or (2) just delare that the video-file's 'global attribute' referred to as its 'DAR' (Display Aspect Ratio) is something OTHER THAN the actual ratio of its width-to-height (aka
[ Read this, for more detailed understanding of aspect-ratio concepts ]
This latter quick-and-dirty approach causes horizontal 'stretching' the image AT VIEWING/DISPLAY time, which will somewhat distort round objects (e.g. people's faces) into ovals, etc. But the tradeoff is that we won't have to alter the actual 'stored' resolution, which would save lots of processing-load. Instead of doing a full image-processing alteration pass over each frame of the video, all we need to do is to set the video-attribute called 'DAR' (Display Aspect Ratio), which tells the video-viewing software to FORCE the display's aspect-ratio into something OTHER than the actual aspect ratio...(aka the 'SAR'...Storage Aspect Ratio).
A specific example: So, a video file with, say, a resolution of 720x480 has a SAR of 4:3, and hence will appear almost square when viewed.
Following approach #1, we use ffmpeg's "scale" and "setsar" video filters, to completely change the video resolution, this way:
ffmpeg -i MyVideo---720x480.mkv -vf "scale=720:406,setsar=1" MyVideo---converted-16x9.mkv
[ Note: We have explicit forced a new resolution (of 720x406, which has a DAR of 16:9). So the resulting resolution will be "720x406" and its DAR will indicate 16:9. I consider this to be the better/proper approach, because there will NOT be any distortion...e.g. round faces will still be round, etc, etc. ]
Contrast that with using approach #2: Here, rather than altering the image's resolution, we simply run this 'ffmpeq' cmd (which will take no more than 10 secs to complete):
ffmpeg -i MyVideo---720x480.mkv -map 0 -c copy -aspect 16:9 MyVideo---stretched-16x9.mkv
Note: Of course, you could instead embed them into an MKV-container, etc. But, I chose an MP4 container, just because MP4 seems to be the video-container-of-choice for HTML-5 webpages, and that is my primary use-case.
Note that when I use the term 'embedding' for sub-titles, this is NOT the same as 'burning' them in. Embedding them simply creates an additional track (aka text-track)...this is also referred to as a 'soft-subtitle', because when the video is later displayed, such a soft-subtitle can programmatically either be enabled or disabled for viewing (assuming that the viewing software/device provides you a means of choosing which, if any, such soft-subtitle track get displayed.)
A full-length movie should take only about 15 SECONDS or so for this embed/import operation, as long as you are just opaquely copying both the video and audio codec streams, as illustrated in the command below. To verify that the desired text track got created, you could use the 'mediainfo' cmd-line pgm on the output-file to see all the meta-data. In addition to the video and audio tracks, you should now see a new third 'text' track.ffmpeg -i Fargo(1996).mp4 -i Fargo(1996).srt -scodec mov_text -vcodec copy -acodec copy Fargo(1996)-with-softsubs.mp4
Conversely, to delete streams, ffmpeg documents a switch '-an' that removes an audio stream and another switch '-sn' that is SUPPOSED to remove subtitle streams. But, the 'sn' switch was reported broken more than three years ago, and it still is broken! Fortunately, there's a '-map_chapters' switch which solves the issue. So, given an input file with 3 streams...video, audio, and subtitle, the following cmd will drop both the audio and subtitle streams, leaving only the video stream:ffmpeg -i Fargo(1996).mp4 -an -map_chapters -1 Fargo(1996)-video-only.mp4
More neat 'ffmpeg' tricks... commonly, a video-camera outputs MPEG videos and you can convert them for YouTube with the following:ffmpeg -i MOV0010.mpg -ar 22050 -acodec libmp3lame -ab 32K -r 25 -s 320x240 -vcodec flv utube-video.flv
Here we've encoded the MPEG with the FLV codec as per YouTube specs. Apart from the audio options, which we've shown already, there are lots of other switches, like -r, which sets frame-rate for the video, which is either 25 for PAL, and 29.97 for NTSC, depending upon the region you live in. Finally with -s we resize the video to YouTube 320x240 resolution. (Of course, you can duplicate this for any online video host, as long as you know their video specs.)
Another switch of interest is -t, which clips a video and encodes only the specified length of time. For example, -t 10 will encode the first 10 seconds. You can also jump to a specific time in the movie with -ss and encode for a fixed duration from there. For example:ffmpeg -i MOV0010.mpg -acodec copy -r 25 -s 320x240 -vcodec flv -ss 00:10:00 -t 128 utube-video.flv
This encodes 128 seconds of video after skipping the first 10 minutes. You can specify time for both -ss and -t either in seconds or the hh:mm:ss format.
Another important switch is '-vol' (especially for ring-tones), which allows you to increase the volume-level of audio. The normal level is 256, so '-vol 1024' would quadruple the volume level of a normal-level audio file, which I actually needed.
To really illustrate the power of the 'ffmpeg' program, this example is doing a series of video transformations, and also does some audio-stream alterations, and it 'burns-in' a sub-title track. This example does, in a single pass, a series of operations that I formerly used to do in two or three passes of the 'vlc' tool's cmd-line.
So, the specific task(s) being carried out here on the video-stream is to first scale the input's video-resolution, into a 16:9 aspect-ratio-compliant resolution of 720x406, but we then add rows of black pixels (the 'pad' video filter) on both the top and bottom (an on-screen video name goes into the top 40 black pixels, and the sub-title text gets rendered into the 60 bottom black pixels). We specify some audio-stream values...the noteworthy ones being "...volume=20dB" and "-ac 2", which raises the audio stream's decibel-value, and creates just 2-channel-stereo (from what might have been six-channel surround-sound).
You would modify template below, to have the '???' strings replaced by the filename-root (e.g. "Fargo(1996)", and the "xxx" extension by whatever the extension is on your input file (e.g. mp4 or avi or mkv, etc). Also note that the reference to the '.SRT' sub-title file uses relative notation (i.e. does NOT full device/directory notation) and thus is assuming that the SRT-file resides in the 'current-directory'. The various output codec streams all get written into an "mp4" container, but of course you could likewise change that to an 'mkv' or an 'avi' container instead. [ Note that I've spread out what is a single-line cmd, so that you can see the various sub-options more easily. I've done that so that it might be clearer on other modifications you might want to make...e.g. if you don't want any burned-in sub-titles, or whatever. ]ffmpeg -i C:\Users\YourUsername\src-files\???.xxx -metadata title="???" -vf "scale=1280:620,setsar=1,pad=1280:ih+100:0:0:Black,drawtext= 'fontfile=/Windows/Fonts/comic.ttf:fontsize=12:fontcolor=Gray:box=1:x=12:y=12:boxcolor=black:text=???', subtitles=???.srt:force_style='Fontsize=12,PrimaryColour=&H00ffff&' " -b:v 1M -crf 33 -vcodec libx264 -acodec mp3 -af "volume=20dB" -ar 48k -ac 2 -b:a 128k C:\Users\YourUsername\???---burned-in-subs.mp4
By now, you should be able to GUESS what that 'ffmpeg' command just did. That's right, it created what is known as an animated GIF image,
from one of your video files. Go try it yourself. Then go view that new image with your favorite image-viewing program. Pretty slick, right? ! !
So, if you want some technical words to explain the whys and wherefors of animated GIFs, google up an article or tutorial or whatever, and have at it.
[ Well, ok, here's such an article about GIFs.]
Ok, and that 'ffmpeg' command created the newer brother to a GIF, called a WEBP file. WEBP is some newer-fangled animated invention from our friends at Google. Oh, and notice that the only difference between these two commands is the extra "-loop 0" switch in the middle of the second, which says to tell the WEBP to loop forever, since a WEBP's default behavior is to iterate(loop) just once, whereas a GIF, by design, always loops forever.
Yeah, and if you want more info about WEBPs, here's such a WEBP article.
On all of my On-Demand TV-show and full-length movie videos, I chose to use a video-player 'framework' called VideoJS (avail at "videojs.com"). The framework produces a visually-identical media-player within all browsers. Using that produces a live-video frame with the usual serious of controls across the bottom control-bar, similar to what you see on YouTube and Hulu, etc.
After using VideoJS for 3 or 4 years, one day it occurred to me that the standard VideoJS-provided progress-bar control displays only TIME-values, as one scrolls/drags along the progress-bar (aka 'seekbar'). Yet, the more professional video coders at YouTube, have graduated to presenting small thumbnail images from the video, so that the user might more easily find some recognizable scene, as they search within a video.
One such discussion thread recommended using a special-purpose tool called 'mtn' (rather than the 'ffmpeg' tool itself), to extract the needed images from a full-length video file. (That 'mtn' tool is available here ). That said however, I found that tool to be immature...it was often skipping extractions, and, because I prefer to do my extractions 'offline', any relative slowness in my favorite and very robust 'ffmpeg' tool is NOT an issue at all. An example ffmpeg cmd to extract a movie frame every 30 seconds and create the series of PNG image files (thumbnails), looks like this:ffmpeg -i MyMovie.mp4 -vf "fps=1/30, scale=256:144" MyMovie-%04d.png
I arrived at the cmd above, after consulting a basic writeup about thumbnails, at the 'FFmpeg' website, on their 'wiki' page here.
Also, I learned about MAXIMUM "decoded pixel-size" of PNG image files here More specifically, both the Chrome and Firefox browsers wouldn't load my initial PNG sprite-files, forcing me down to a thumbnail/frame size of 256x144 even though I would have preferred to use 384x216 frames. (Additionally, since that article indicates that JPEG images of larger dimensions are loadable, I tried initially to create a .JPG rather than .PNG sprite-file, but I quickly discovered that the 'image-magick' tool has a similar maximum decoded pixel-size restriction...it wouldn't even create the .JPG.)
Yes...there's more 'magic' needed, to implement this notion EFFICIENTLY using HTML and CSS. The needed extra step is based on the concept of 'video sprites'. To begin to get your head around 'sprites', , there's a writeup describing the whys and wherefores of sprites here. And, for a more detailed implementation explanation, read the discusion here . Most importantly, notice the free tool mentioned called 'imagemagick', and note that it's available for Windows, Linux, and Mac/OSX platforms. (I also got image-magick and ffmpeg installed and working on Chrome-OS, using a preview-version of 'CrossOver'.) Note that image-magick has a cmd-line interface! For my purpose (creating a sprite-file containing horizontally appended thumbnails), I use a cmd like this:magick convert +append MyMovie-*.png MyMovie-sprites.png
I recently completed implementing this for a few of my favorite full-length movie files...an example web-app implementation is here. One key JS api that is needed is the 'appendTo' function, which is the key to placing one element on top of another...e.g. placing the thumbnail-display area on top of the video-player. The 'appendTo' function is explained here
I've 'ripped' all my favorite tracks (songs), using Windows Media Player (aka 'WMP'), from my commercially-purchased music CDs, into MP3-files on my PC. 'WMP' also contains functionality to find and download so-called 'album-art' files (which are typically .jpg images, containing images of the album covers.)
Also, I've 'burned' a few CDs of my own, which now contain my favorite mix of the MP3 songs from all my favorite musicians. I use a free third-party program called "CDBurnerXP" to produce a physical music-CD. My current music CD of my favorites contains about 70 MP3 files, for playing in my 2015 Subaru Outback, which has a touch-screen 'StarLink' console, which is also displaying 'album-art' images during playback of most of the MP3 files. [ See the complete section below, for more details on burning music CDs, for use in automobile CD-players. ]
More recently, I also purchased an 'MP3-player'...a SanDisk "Clip Sport" and later, the "Clip Sport Plus", and populated them with these MP3 files. These portable players also have small (one-square-inch) video-screens capable of displaying album cover artwork, if your MP3 files contain such artwork. (More on that subject below.)
The conversion/downloading website I use is named "YUBEY"...all you need to do, is to
"copy" the full URL of the desired video on YouTube, and then "paste" that into the appropriate field at
The conversion step can take up to a minute or so.
But, If you happen across a very similar site named YTMP3.CC, do NOT use it...it is virus/malware (that said, it's relatively easy to recover from it...see this writeup. I speak from experience.)
As a final (optional) step, I use 'ffmpeg' to insure conversion into a final MP3 file of a known (reasonably high) quality-level (bit-rate), using the command pattern:ffmpeg -i "downloaded-file-name.mp3" -acodec libmp3lame -qscale:a 0 "The Artist - The Actual Song Name.mp3"
I have copied my collection of MP3 files from my PC over onto my Android tablet. I've used both the physical USB-cable method, as well as the wireless-wifi method (WebDAV) as described below. The cover-art seemed to auto-magically come out just fine, for Android's builtin MP3-music player app.
I have used this method in the past, and it worked for me. (But now it will NOT offer me the needed choice of an "MTP" connection. Maybe something changed on newer versions of Android...maybe they quit supporting 'MTP' ?!?) At any rate, I now use the 'Wifi-wireless' method below (using a 'WebDAV server'), mostly because I don't have to find/grab an acceptible USB-cable.
First, go to the Google play-store and download and install the WebDav-server app. When you launch it, and click 'press button to start the WebDAV Then on your Windows-PC, launch the 'File Explorer', and click on "Computer->Map Network Drive" option, and launch 'Use a custom network location' dialog. That dialog contains a field for the network URL being shown on the Android WebDAV server app. It will be of the form "http://10.0.0.4:8080". That dialog will also allow you to specify a directory shortcut name.
Android, just like Windows, creates directory/folder names such as 'Music' and 'Videos', etc. So, in the File Explorer, navigate into that 'Music' folder on the Android-connection (that folder will initially be empty). Now navigate into your 'Music' folder on the PC-side, where you should see the list of music artists' folder names. Using keyboard shortcut keys, hit 'Cntrl-A' to select all the artist folders, then hit 'Cntrl-C' to copy those folder-references into the clipboard. Then just navigate back into the Android-side Music folder, and then hit 'Cntrl-v', which will initiate the transfer of all the files. It will probably take a minute or more for it to copy all the folders and sub-folder contents from the PC to Android. Lastly, shutdown/reboot your Android device, so it can re-catalog those media files, to provide access to them for whatever music-player app(s) that you will use to listen to your songs.
You can always use the Windows-provided Windows-Media-Player (aka WMP) to rip your favorite tracks from your commercial music-CDs. And, WMP can also burn a group of them to a blank music-CD. But, both operations have limitations that can be overcome with free open-source alternatives.
RIPPING: To RIP the music, I am using (once again) Windows-Media-Player! One advantage is that you can specify EXACTLY how the track "title" (aka filename component) gets constructed. So you could have both the artist name and the song name, separated by say, a dash, as the filename. An example would then be "Bob Dylan - Simple Twist of Fate.mp3". [ My usage was for my 2015 Subaru's in-car stereo system, so that its 'List' (of tracks) layout would be to my liking...that stereo's "List" function will then present the list-entries in sorted-order, thus visually grouping each artist's songs adjacently! ] So, to specify that in WMP's 'preferences', go into "Tools->Options->RipMusic(tab), and you'll see a series of checkboxs of items and some choices for separator-characters. However, my first attempt failed to produce the filenames as I'd asked for them! The 'secrets' seemed to be to ensure that you use the 'move up' ability and move the boxes that you have checked to the TOP of their list. (Also, to be safe, click the APPLY button, before you click the OK button.) Note: An idiosyncracy of WMP's user-interace is that the menu-choices for the Rip-functions DO NOT APPEAR until you first insert a commercial-music-CD into the CD-drive!
(Note: There DOES exist a third-party free program called "FreeRip" that has a slightly nicer function to do that same layout tayloring, but I found that FreeRip's biggest SHORTCOMING was that it didn't allow me to also go out and retrieve each album's artwork, which WMP does nicely! ]
BURNING: I do NOT recommend using WMP's burner functionality. Instead I'd recommend that you download and install the free open-source CD-burner, named CDBurnerXP
CDBurnerXP's important advantage is that, unlike WMP, it DOES move the so-called "CD-text" (aka 'ID3-tags') into the output files! [ Whereas, if you use WMP to burn your output music-CD, it is likely to result in no track titles at all, in the Subaru's list of tracks. All you'll see is "Track 01", "Track02", "Track03", etc. ] It is important to know that it is its first "Data disk" option that you want to use, which creates an 'iso-image' that you'll then burn onto a blank CD disk, in a subsequent step.
RETRIEVING music album cover-art: Using WMP to search for and use album artwork can be a bit tricky (to determine where to click) to accomplish this! So try this: First, click the dropdown labeled 'Music' (in the vertical list along the left side). This should bring up your 'library' of music, and it should contain a square box containing either the image of that album's cover, or else just a large musical 'note'. So, now RIGHT-click on that cover image and choose "Find album info", and it will launch the dialog that you use to find and fetch artwork. Note: Having the artwork present in your 'library' of music albums MAY or MAY not be useful to the targeted media-software, depending. For my in-car 2015 Subaru, I've determined that it is getting its displayed artwork for album cover from SOMEPLACE ELSE (dynamically), because the displayed artwork is in many cases totally DIFFERENT than the artwork that WMP captured for that given album. Whereas, if you copy your MP3-library directories (which includes both MP3-files as well as your EXTERNAL, not EMBEDDED 'album-art' JPEG-image files) out to a tablet or smartphone running Android, then the artwork displayed on Android agrees with what is shown in WMP for any given album, in my experience. (More googling about Starlink on various models of vehicles, reveals that there is an updatable component called "Gracenote" that contains a large collection of album-cover artwork, which explains why StarLink isn't matching the artwork that WMP itself can collect (with your guidance!) Other google-searches also reveal that automobile systems containing Starlink have the ability to update their 'Gracenote album-art database' to something newer. (I played with that on my Subaru....it fixed some of my CD-based songs, but broke others that had been ok. (Some good news...you CAN un-do/rollback such updates.) If you want to play with this approach, here are some example instructions for doing that on some Toyoto vehicles. There is similar Subaru-related chit-chat out there, too. I'm dubious that, in general, this approach could ever resolve the issue. And when I tried to get help from my Subaru dealer, they just kept coming up with excuses, such as "you will likely just make things worse", and "your free-update entitlement period has expired, so now you will have to pay us for any such updates", etc. etc.
Ok, here's the FULL story...our newer Subaru Outback (i.e. a 2015 model) came equipped with a 'tablet-like' touch-screen console, which has the ability to play commercial music CDs (as well as FM/AM/Satellite radio, or even content placed on a flash-drive and inserted into the vehicle's USB-port, etc). And, when I inserted a COMMERCIAL music-CD, the album's artwork appeared just fine, as you would no doubt expect.
But a 'problem' arises if you prefer (as I do) to 'rip' a bunch of your favorite tracks from your commercial music CDs, and 'burn' them onto CD-media (or copy them onto USB-media), for listening to in your vehicle. That's quite straight-forward to do, if you only care about the music SOUNDING ok. But, if you also want that small square on-screen area to display the correct album-art while each song/track is playing, you're probably gonna run into the symptom whereby some, if not all, of the album art will either be missing entirely, or will display as some apparently-random image...an image that you don't recognise.
When that happens, no doubt your first thought (as mine was) will be: "Where is this player getting (or not getting) its album artwork from?" And, additionally: "Is there anything I can do to improve this situation?"
After a fair number of google-searches, I learned that MANY people are trying to solve these mysteries, for their cars...as far back as 2012 or so. For all various makes and models of vehicles. I was in total 'mumble-mode' for a month or three. Then, with renewed curiosity, I started snooping around in my StarLink console's "settings" and jotted down the version# of my StarLink firmware, and also noticed something called "Gracenote". Both of these are updatable, presumably only by your car-dealer (but maybe even by a knowledgeable consumer?).
Originally, I thought the solution would be to update/augment the 'Gracenote' cover-art DB in the vehicle. Various google-searches revealed articles that suggested that one could 'submit' additional artwork, for either Gracenote or your car dealer to have encorporated into an update to the Gracenote DB in vehicles. Implicit in that, is the idea that ALL requests for cover- art to be displayed, HAVE TO BE satisfied by the Gracemote DB. But, then I became more and more convinced that the approach to solving this might/must(?) be to 'embed' your album-art file into each music-file (i.e. into each MP3 file on the CD-media) and never have to TRY to go to the Gracenote DB for artwork, for any given song. I'm pretty well convinced that all solutions require taking this latter approach. [ In other words, I 've now pretty much concluded that the whole Gracenote DB concept is engineered to be a CATCH-ALL of last resort...to attempt to furnish some 'approximate' artwork (rather than none at all), for all the various media sources (from various media-sources from CDs, to streamed-music from FM- and SATELLITE-radio, etc, etc. ] Upon further reflection, that design concept makes good sense...then, as new 'apps' and new media-sources come along, the Gracenote DB exists for them, UNTIL those newcomers figure out how to inject their own 'correctly-formatted' embedded album artwork.
Given that, then the obvious next question becomes: "What software can/should one use to 'embed' the album-art file into each MP3 music file?" There are MANY choices of embedding programs capable of doing that job. For example, the Windows Media Player (aka WMP') does have an option to do this, but I didn't like its assumption to pull the artwork from some external-Internet source, since I already HAD various cover-art files, of various widths/heights, present in the same folder with my MP3 files, so I had no need to import artwork again. (Those album-art files had been located and retrieved by WMP, way back when I first used it to 'rip' my favorite tracks from my commercial musicCD collection.) Luckily, I quickly discovered that my favorite cmd-line tool 'ffmpeg' was perfectly capable of doing the embedding, and that I could simply point it to an already-existing local cover-art .JPG (JPEG) image-file.
Ok, so an 'ffmpeg' cmd such as this, will embed a cover-art (.jpg) file within an MP3 music file:ffmpeg -i MySong.mp3 -i MyCoverArt.jpg -id3v2_version 3 -map_metadata 0 -map 0 -map 1 -acodec copy MySong---embedded.mp3
Ok, I'll write some more about this, if/when I actually SOLVE it for 'StarLink'. (Solving it for a car-console with "MyLink" firmware in it, looks to have already been done, based on the two references below, both of which refer to 'MyLink'.) But, for my "StarLink" (my Subaru) firmware's case, until I do some more experiments, it may or may NOT be solvable this same way. ] Meanwhile, I'll leave you with links to the two 'best' related articles I've found to-date, which describe how to solve it for the "MyLink" firmware case. The author of the first article actually offers some (free) software (called 'bliss') presumably to fix/modify embedded album artwork, whereas the second author describes the problem and solution in much clearer detail, but leaves it to you to download a public tool (named TagInspector) to diagnose and (hopefully) 'fix/modify' your embedded cover-art. His article points to a (Linux-centric) website, where both Linux and Windows versions of TagInspector are available. Note: I tried both 64-bit and 32-bit Windows versions, on my Windows-10 (64-bit) laptop, but neither worked...both emitted 'unknown runtime error 123', when I tried to open a few embedded MP3 files. I also tried from a Windows-7 machine and got same error msg.'bliss' music-library blog (2016)
Ok, after re-reading the first link above (the 'bliss' blog article), what jumped out at me was his EDIT/UPDATE saying:
"Edit 7/10/2016: I also recently heard from a GMC owner, following their own correspondence with GMC, that putting music onto data CDs (i.e. not a redbook audio CD) also does not support album art in any way, including via Gracenote. So use SD or USB if you can!"
Aha ! So, all along I'd been burning my own CD (rather than planning/targeting to put all my MP3s onto a USB flash-drive). Ok, now I can say: "I didn't want it anyway!" (That's what my father-in-law taught us all to say, when we CAN'T have or find something...just pretend/say that we didn't WANT to to have or find that thing. He claimed that at least it will make you FEEL better.) So, I'm henceforth gonna give up on burning data-CDs, and now plan to use a USB flash-drive, for my in-car music needs. (I was almost there anyway, once it occurred to me, that flash-drives exist that can hold MUCH more data than CD-media can. So that will solve having to limit myself to ONLY about 45 songs on a CD.) So now, I should be be able to put my entire 'favorites' collection of about 200 songs, onto a single flash-drive!
Ok, one other thing that I only very recently noticed in the 'bliss' blog article, is this:
"MyLink Bluetooth support for album art, and metadata in general, is patchy. Some devices and MyLink versions support it, some don't. It's one thing to rule out if you are having problems; so try with USB or the SD card option."
Ok, that's good to know! I had noticed that yet-another 'source' choice for in-car music that's offered by my "StarLink"-based console, is indeed one labeled "Bluetooth". My original assumptiom for what this was for, would be to stream music from your cellphone into the car's music console. As fate would have it, so far at least, I have NOT wanted to do that. But what this 'bliss' author seems to be saying is that (in his knowledge/experience with his "MyLink" console), he is recommending to FIRST use a USB flash-drive to get your cover-artwork issues resolved, before moving on to assessing artwork issues over a Bluetooth connection. Ok, I'm cool with just assuming for now, that the same might be true for "StarLink" consoles. So, I'm now DOUBLED-down on using only a USB flash-drive (at least til I resolve my "album-art" concerns).
(Ok, a GPS issue is NOT audio-related, but I mention it here in audio section, just because we're talking about many other Subaru-specific issues.)
So, I've now also got a newer 2018 Subaru Forester...which I bought as pre-owned (1-year-old when I bought it). It happens to have come with built-in GPS, accessible via the std button labeled 'Map'. Bottom-line is that there are TOO MANY serious anomolies (aka PROBLEMS)! The first major usage was a trip from New Hampshire down thru Maryland, into Washington, DC, for a 4-day sightseeing vacation at a hotel downtown. The first major problem that surfaced was SEVERE...it got us into town on an Interstate, and correctly took the proper exit, down onto surface streets, about a mile from our hotel. Long story short...it seemed to start taking us in circles...it never DID find our hotel. (We had to stop pedestrians and ask directions twice, before we finally arrived at the hotel.
Incidently...my GPS performance expectations...i.e. what I'm comparing this GPS to, is a much older standalone GPS unit from 'Garmin', that sticks to windshield with rubber suction cup, and came with lifetime map-updates, which I owned and used quite successfully with few minor glitches. If I recall correctly, I purchased that Garmin in about 2013 or 2014...it has a touch-screen, and is a "5-inch" model.
On the way home from Washington DC, there were no incidents, until we got near Hartford, CT, heading north on I-84. I am quite familiar with that area...driven it numerous times, so I knew where I was and knew that we were still about 10 or 15 miles south of our next 'turn' (transition off of I-84) and onto I-90...aka the so-called "Massachusetts Turnpike"...an east-west thru-way. Totally out of the blue...a good 20 minutes before getting up to I-90, the GPS unexpectedly told us to 'prepare to exit the highway' at the exit ahead (out in the middle of nowhere). Quite puzzled...but took I that next exit. It routed us up along a somewhat parallel frontage road and then wanted to turn us right, onto some other secondary road. (I then disregarded the whole mistake, and took the next entrance back ONTO I-84, and we continued on for another 20 minutes or so, before uneventfully finally getting properly vectored over and onto I-90 as expected.
TBD...(still more info I have for here, later )
The next day, now back home, I started researching (googling) the issue. First thing I learned is that Subaru Foresters, in the past few years, and into the present, have GPS software in them, from a (well-known) company called "TomTom", which is a competitor of "Garmin". My local Subaru dealer is now telling me that the built-in console unit is generic enough, that it can accept two or three (or more?) different GPS manufacturer's software, including "Garmin". But, the dealership doesn't get involved. Instead, I need to deal with an external third-party after-market company, one of which is down in Massachusetts and services much of New England area. It is named "Classic Soft Trim", and that I can contact them at: (978)657-9419. (See "classicsofttrim.com") in Wilmington, MA, or alternatively in Saco, ME, which is just south of Portand.) They are nationwide...have about 25-30 locations, scattered throughout the U.S. [TBD...pending more research, to learn of cost of such a switch/upgrade, etc, etc]
Your turntable might already be hooked up to your stereo receiver/amplifier component of your music system. So, find an output on the rear of the receiver/amp which says "tape 1" (or something like that). It is low power, about 1 to 2 volts, and is often referred to as an 'analog line-level' signal. This usually has RCA-jack connectors (e.g. 1 red and 1 white). Acquire a cable with RCA-plug connectors (again 1 red and 1 white) on each end. Fit onto one end, an 'adapter' that adapts red and white RCA plugs to a mini-stereo plug (i.e. 1/8-inch). [Your local RadioShack sells such a cable and adapter.] The mini-stereo (1/8 inch) plug goes into your sound-card's line-level INPUT jack, which is typically light-blue (NOT the pink 1/8-inch microphone INPUT jack and NOT the green 1/8-inch headphone/spkr OUTPUT jack).
In your software (Windows and Linux typically both come with the necessary software), set up the recording type via a sound-card dialog box for both input source and output destination. The selected input will be that blue line-level port on the sound-card and the output is typically to a FILE on your computer. The output file TYPE can be whatever your software supports (e.g. .WMA or .MP3 or .WAV or whatever). Each record-cut, track, or song is typically recorded into a separate file. Then, the series of files could be converted to other audio-file TYPES, or 'burn'ed onto a CD or loaded onto your iPod, MP3-player, cellphone, or whatever. The builtin 'Windows Media Player' supports those file-types for both 'burning' and 'ripping'. On Linux, the software I've used include 'Amarok' to play my files, 'K3B' to burn CDs, 'Kaudiocreator' to rip tracks, and 'Audacity' to edit portions of a given song into shorter demo samples or ring-tones for a cellphone. There are numerous other free software choices on Linux.).
Recall that you can 'probe' most ANY type of multimedia file/container, with an ffmpeg command such as:ffmpeg -i anyfile.typ
So, you can first use such a cmd to determine the running time of your MP3 file.
Let's assume you have a png file with name picture.png. And an mp3 file with name soundtrack.mp3.
First make a silent video with the correct length of time. So if your mp3 track lasts for 198 seconds the command would be:ffmpeg -loop 1 -i picture.png -t 198 silent.mp4
Then add the soundtrack:ffmpeg -i silent.mp4 -i soundtrack.mp3 -vcodec copy -acodec copy video.mp4
This gives you a mp4 file named video.mp4 suitable for uploading to YouTube.
Recall that you can 'probe' most ANY type of multimedia file/container, with an ffmpeg command such as:ffmpeg -i anyfile.typ
Once you see what type of video and/or audio channels are present within it, then you can use 'ffmpeg' more completely, to convert channels to other types and/or strip-out individual channels into separate files. [digression: e.g. to convert the video-chan, from .flv to MPEG, while retaining audio, try: 'ffmpeg -i file.flv -target ntsc-svcd file-new.mpg']
For a ring-tone, we'll want to retain only the audio-channel from some music-video (e.g. downloaded from YouTube, as a .flv file) into an .mp3 file. So, for that, you could use an 'ffmpeg' command like:ffmpeg -i snippet.flv -acodec libmp3lame snippet-audio-only.mp3
or, from an MP4 file containing both a video-channel and an audio-channel of codec-type 'aac', use a cmd like:ffmpeg -i NeilYoung-HarvestMoon.mp4 -acodec libmp3lame -ac 1 -ar 44100 -ab 128k neil-audio-only.mp3
And, now that you have such an audio-file, you could then use a GUI-based audio-editor such as 'audacity', to snip out much smaller portions of a song or audio-track of a movie, into a ring-tone for your cellphone, or the audio-tone for your desktop-login 'announcement' or whatever.
As mentioned elsewhere, on Linux, I use the 'clive' pkg (a cmd-line, video-clip-capturer tool) to grab music-videos from YouTube. And, here's a website (among others) that gives details about building/moving a ring-tone to a cellphone: