strawberrymusicplayer / strawberry

:strawberry: Strawberry Music Player
https://www.strawberrymusicplayer.org/
GNU General Public License v3.0
2.74k stars 191 forks source link

(Minor Feature Request) - Add option to convert to AAC (.m4a instead of .mp4) #684

Closed punyidea closed 3 years ago

punyidea commented 3 years ago

Before anything else, this music player is awesome! hats off.

Expected behavior When I am in the user dialog, the current option given for AAC audio encoding is to use an .mp4 container and not an .m4a container. The latter option would be helpful for several music players. I've found that even Strawberry music player does not recognize the produced .mp4 files as playable.

System Information:

Additional context This is just a small request. I would make a pull request myself but am not all too familiar with Qt and gstreamer.

jonaski commented 3 years ago

Is m4a a container? Isn't that just the extension for AAC encoded audio in the MP4 container? We already does what gstreamer supports.

Source: https://github.com/strawberrymusicplayer/strawberry/blob/master/src/transcoder/transcoder.cpp#L258

You can see this in the documented mimetypes for gstreamer are here: https://github.com/pexip/gstreamer/blob/master/docs/random/mimetypes#L403

punyidea commented 3 years ago

Yes, exactly. I'd like to have an .m4a container instead of the .mp4 container, so that I can play it on my music device. I hope that the fix is as simple as changing "mp4" to "m4a" in that line

jonaski commented 3 years ago

A container isn't the same as a file extension. The file extension is easy to change if that's what you mean.

punyidea commented 3 years ago

I can't say that I have enough knowledge to answer your question fully. I do know: simply changing the file extension to .m4a via file renaming does not create a readable file that I can use. However, it appears that gstreamer can read some files with the m4a extension, at least according to the following link: http://gstreamer-devel.966125.n4.nabble.com/how-to-play-the-AAC-audio-by-Gstreamer-td2296882.html

So from the cursory research I've done (and my very limited knowledge on the subject) it seems (again, to me) possible to do what I want. It may be as easy as changing the file extension on your end. I've started to try to compile the package from source, but it will likely take me awhile to install all dependencies (currently having an issue with protobuf)

punyidea commented 3 years ago

Unfortunately renaming files does not work. I tried that before posting the issue. I'll look into fre:ac.

Edit: fre:ac works like a charm, thanks for the rec!