I am unable to listen to m4a DASH audio I download from YouTube via youtube-dl on Winamp. Is there an option in youtube-dl to remove the DASH audio part of m4a file and download/save it as an m4a (AAC LC) without loss of quality? So far, I am using ffmpeg -i input.m4a -vn -acodec copy output.m4a
to convert each file so it plays properly in Winamp.
3 Answers
youtube-dl 2015.01.23.4 and newer will automatically correct the header of the m4a file if ffmpeg is present on the system.
Source: youtube-dl
: Youtube m4a files downloaded with --extract-audio can't play in some players
All you have to do is to add the path to the directory containing the ffmpeg binary to your system path variable (like so in Windows 7):
Or use the --ffmpeg-location <path to ffmpeg binary or its containing directory>
command line argument when calling youtube-dl, to allow youtube-dl through ffmpeg to automatically correct this.
-
My question was appropriate in Nov 14. youtube-dl author addressed the issue in Jan 15. Glad it is part of youtube-dl now.– SunMar 11, 2015 at 15:51
No, you need a second conversion step.
The problem is that for YouTube DASH, the MP4 container's ftyp
has the "major brand" set to dash
instead of m4a
. This is the correct approach for DASH streaming, but Winamp is too old to recognize it (and many other programs are).
Now, what would be a reasonable suggestion is to create a feature request for youtube-dl to add post-processing support for ffmpeg to convert the major brand of the MP4 container to something more compatible. But at the moment, such a thing does not exist.
Or, file a bug report for Winamp to include decoding support for dash
brands. Since it's likely to rely on a third-party decoder plugin, this probably means raising a bug report somewhere else, too.
-
Do you think the ffmpeg parameters I am currently using is best for converting it from MPEG DASH m4a to AAC LC m4a?– SunNov 7, 2014 at 8:44
-
4Yes. You're not actually converting the audio bitstream itself – you're just changing the metadata. This is a lossless process, so you won't lose audio quality.– slhckNov 7, 2014 at 8:45
-
It's not an opinion. The build of Winamp appears to be too old to have implemented the (rather recent) MPEG-4 brands from the MPEG-DASH standard. Other software supports it. And like I said, some other programs may fail.– slhckNov 7, 2014 at 18:49
I took the liberty of using your ffmpeg
command and this is what I got: yt "My Youtube File.mp4"
A file yt.bat
placed in system32 containing:
@echo off
move %1 "_%~n1"
ffmpeg -i "_%~n1" -vn -c:a copy "%~n1.m4a"
del "_%~n1"
*renames automatically to m4a
, which can be changed in the code.
**it needs to be through temp file and then using rm, mv, otherwise the file and filename get corrupted.
-
1@sunk818 You are absolutely right about the file deletion in case something goes wrong. I guess I could add some kind of a check. ..But then, I run this command right after youtube download, so I can just download it again.– QwertyDec 4, 2014 at 13:01
-
it works, but change mv to move and rm to del. Also drag-and-drop works too! Sep 14, 2022 at 20:30