which package(s) needed for Handbrake to render audio with AAC (FDK)?

In Handbrake, when I transcode mp4 to mkv, the output file is missing audio if I set the audio codec to AAC (FDK) or to AC3. However, the output file has working audio if I set the audio codec to use *Vorbis *or AAC passthru. (passthru is, of course, expected to “just work”)

Does this mean that I’m missing package(s) that Handbrake needs for the transcoding? I *do *have the following packages installed, which I would have thought would be enough.


computername:~ # zypper se -is aac 
Loading repository data... 
Reading installed packages... 

S  | Name        | Type    | Version    | Arch   | Repository 
---+-------------+---------+------------+--------+------------------- 
i+ | faac        | package | 1.30-1.15  | x86_64 | Packman Repository 
i+ | fdkaac      | package | 1.0.0-1.33 | x86_64 | Packman Repository 
i  | libfaac0    | package | 1.30-1.15  | x86_64 | Packman Repository 
i+ | libfdk-aac2 | package | 2.0.1-1.17 | x86_64 | Packman Repository 
computername:~ #  
computername:~ # zypper lr -d 
# | Alias                            | Name                                   | Enabled | GPG Check | Refresh | Priority | Type   | URI                                                                       | Service 
--+----------------------------------+----------------------------------------+---------+-----------+---------+----------+--------+---------------------------------------------------------------------------+-------- 
1 | Emulators                        | Emulators (openSUSE_Tumbleweed)        | Yes     | (r ) Yes  | No      |   99     | rpm-md | https://download.opensuse.org/repositories/Emulators/openSUSE_Tumbleweed/ |  
2 | games                            | openSUSE Games (openSUSE_Tumbleweed)   | Yes     | (r ) Yes  | No      |   99     | rpm-md | https://download.opensuse.org/repositories/games/openSUSE_Tumbleweed/     |  
3 | graphics                         | Graphics Project (openSUSE_Tumbleweed) | Yes     | (r ) Yes  | No      |   99     | rpm-md | https://download.opensuse.org/repositories/graphics/openSUSE_Tumbleweed/  |  
4 | hardware                         | Hardware tools (openSUSE_Tumbleweed)   | Yes     | (r ) Yes  | No      |   99     | rpm-md | https://download.opensuse.org/repositories/hardware/openSUSE_Tumbleweed/  |  
5 | http-ftp.gwdg.de-0a41a4ff        | Packman Repository                     | Yes     | (r ) Yes  | Yes     |   90     | rpm-md | http://ftp.gwdg.de/pub/linux/packman/suse/openSUSE_Tumbleweed/            |  
6 | http-opensuse-guide.org-bdebc1bc | libdvdcss repository                   | Yes     | (r ) Yes  | Yes     |   91     | rpm-md | http://opensuse-guide.org/repo/openSUSE_Tumbleweed/                       |  
7 | repo-non-oss                     | openSUSE-Tumbleweed-Non-Oss            | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://download.opensuse.org/tumbleweed/repo/non-oss/                     |  
8 | repo-oss                         | openSUSE-Tumbleweed-Oss                | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://download.opensuse.org/tumbleweed/repo/oss/                         |  
9 | repo-update                      | openSUSE-Tumbleweed-Update             | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://download.opensuse.org/update/tumbleweed/                           |  
computername:~ #  

I have only libfdk-aac2. ghb readily transcodes mp4 to m4v. Never dared to tinker with settings.

What’s ghb?

I think I may have misunderstood my problem. What I thought was handbrake failing to produce audio may actually be VLC failing to play a video with audio of a certain format.

A new example:
handbrake transcodes an mp4 file into an mkv file with Vorbis audio: VLC can play it fine, including the audio.
handbrake transcodes an mp4 file into an mkv file with Opus audio: VLC can play the video but not the audio.

So would that mean that I’m simply missing a package required to play Opus audio? When I searched the repos for Opus, I had installed everything that seemed “obvious” for the purpose of playing Opus audio.

Thank you.

Show the stream information of the video generated by handbrake (aka ghb). Run the command in a konsole and post the output as follows:


karl@erlangen:~> ffplay Videos/2020-05-03\ 07-59-57.mkv   
ffplay version 4.4 Copyright (c) 2003-2021 the FFmpeg developers 
  built with gcc 10 (SUSE Linux) 
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -ffat-lto-objects -
g' --optflags='-O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -ffat-lto-objects -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl -
-enable-version3 --enable-libsmbclient --disable-openssl --enable-avresample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcelt --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libdc1394 --enable-libdrm --enable-l
ibfontconfig --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librav1e --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libssh
 --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lto --enable-lv2 --enable-libmfx --enable-vaapi --enabl
e-vdpau --enable-version3 --enable-libfdk-aac-dlopen --enable-nonfree --enable-libvo-amrwbenc --enable-libx264 --enable-libx265 --enable-librtmp --enable-libxvid 
  libavutil      56. 70.100 / 56. 70.100 
  libavcodec     58.134.100 / 58.134.100 
  libavformat    58. 76.100 / 58. 76.100 
  libavdevice    58. 13.100 / 58. 13.100 
  libavfilter     7.110.100 /  7.110.100 
  libavresample   4.  0.  0 /  4.  0.  0 
  libswscale      5.  9.100 /  5.  9.100 
  libswresample   3.  9.100 /  3.  9.100 
  libpostproc    55.  9.100 / 55.  9.100 
**Input #0, matroska,webm, from 'Videos/2020-05-03 07-59-57.mkv':/0    
  Metadata: 
    ENCODER         : Lavf57.83.100 
  Duration: 00:00:13.93, start: 0.000000, bitrate: 2646 kb/s 
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 1280x720, 30 fps, 30 tbr, 1k tbn, 60 tbc (default) 
    Metadata: 
      DURATION        : 00:00:13.933000000 
  Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp (default) 
    Metadata: 
      title           : simple_aac 
      DURATION        : 00:00:13.862000000 
   2.96 A-V: -0.003 fd=   2 aq=   22KB vq=  315KB sq=    0B f=0/0    
**karl@erlangen:~> 


I seems to me that the current Tumbleweed build of Handbrake is in fact defective in some way.

I have found that videos transcoded from .mp4 to .mkv with audio set to AAC(FDK) produces a mute audio track.

This is my ffplay output from one of these transcodes:

ffplay version 3.4.8 Copyright (c) 2003-2020 the FFmpeg developers
  built with gcc 10 (SUSE Linux)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g' --optflags='-O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --disable-openssl --enable-avresample --enable-libcdio --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libzimg --enable-libzvbi --enable-vaapi --enable-vdpau --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libx264 --enable-libx265 --enable-libxvid
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, matroska,webm, from 'file.mkv':    0B f=0/0   
  Metadata:
    ENCODER         : Lavf58.29.100
  Duration: 00:21:29.52, start: 0.067000, bitrate: 760 kb/s
    Stream #0:0: Video: h264 (Main), yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 640x478 [SAR 1:1 DAR 320:239], 29.97 fps, 29.97 tbr, 1k tbn, 180k tbc (default)
    Metadata:
      DURATION        : 00:21:29.522000000
    Stream #0:1(eng): Audio: aac, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:00:00.000000000
    nan A-V:    nan fd=   0 aq=    0KB vq=15360KB sq=    0B f=0/0   



As you can see, the audio metadata is 0.

The same file transcoded with audio set to AC3(Pass through) shows the following output:

ffplay version 3.4.8 Copyright (c) 2003-2020 the FFmpeg developers
  built with gcc 10 (SUSE Linux)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-O2 -Wall -D_F
ORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -
g' --optflags='-O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-pro
tection -Werror=return-type -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl -
-disable-openssl --enable-avresample --enable-libcdio --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-li
bcelt --enable-libcdio --enable-libdc1394 --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-lib
opus --enable-libpulse --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libv
px --enable-libwebp --enable-libzimg --enable-libzvbi --enable-vaapi --enable-vdpau --enable-libopencore-amrnb --enable-libopencore-
amrwb --enable-version3 --enable-libx264 --enable-libx265 --enable-libxvid
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, matroska,webm, from 'file.mkv':    0B f=0/0    
  Metadata:
    ENCODER         : Lavf58.29.100
  Duration: 00:21:24.02, start: 0.021000, bitrate: 862 kb/s
    Stream #0:0: Video: h264 (Main), yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 640x478 [SAR 1:1 DAR 320:239], 29.97 fps, 
29.97 tbr, 1k tbn, 59.94 tbc (default)
    Metadata:
      DURATION        : 00:21:24.016000000
    Stream #0:1(eng): Audio: aac (LC), 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:21:23.979000000
   3.15 A-V: -0.033 fd=   1 aq=   31KB vq=   52KB sq=    0B f=0/0

Now the audio metadata is non-zero.

I have a Leap 15.2 installation on another partition, and Handbrake functions normally there.

I would submit a bug report to Packman but I don’t see how.