NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
16.48k stars 12.98k forks source link

ffmpeg on darwin (aarch64) can't encode libaom-av1 #297478

Open VictorWinson opened 3 months ago

VictorWinson commented 3 months ago

Describe the bug

ffmpeg for aarch64 darwin can't encode libaom-av1

Steps To Reproduce

Steps to reproduce the behavior:

  1. having pkgs.ffmpeg-full from unstable channel installed
  2. ffmpeg -y -i in.mp4 -c:v libaom-av1 -b:v 0 -crf 30 -cpu-used 8 -map_metadata 0 -c:a copy out.mp4

Expected behavior

ffmpeg can encode the video to av1

Screenshots

Screenshot 2024-03-21 at 04 01 35

Additional context

I've also tried removing crf and map_metadata and cpu-used arguments, the problem still presists.

ffmpeg -y -i error/2024-03-19\ 18-03-16.mp4 -c:v libaom-av1 -b:v 0 -crf 30 -cpu-used 8 -map_metadata 0 -c:a copy out.mp4
ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers
  built with clang version 16.0.6
  configuration: --disable-static --prefix=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.1 --target_os=darwin --arch=aarch64 --pkg-config=pkg-config --enable-gpl --enable-version3 --disable-nonfree --disable-static --enable-shared --enable-pic --disable-thumb --disable-small --enable-runtime-cpudetect --enable-gray --enable-swscale-alpha --enable-hardcoded-tables --enable-safe-bitstream-reader --enable-pthreads --disable-w32threads --disable-os2threads --enable-network --enable-pixelutils --datadir=/nix/store/9k0m7jnjb5j4zg59zjlkn0dg5mxfr6yc-ffmpeg-full-6.1-data/share/ffmpeg --enable-ffmpeg --enable-ffplay --enable-ffprobe --bindir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.1-bin/bin --enable-avcodec --enable-avdevice --enable-avfilter --enable-avformat --enable-avutil --enable-postproc --enable-swresample --enable-swscale --libdir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.1-lib/lib --incdir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.1-dev/include --enable-doc --enable-htmlpages --enable-manpages --mandir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.1-man/share/man --enable-podpages --enable-txtpages --docdir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.1-doc/share/doc/ffmpeg --disable-alsa --enable-libaom --enable-libaribcaption --enable-libass --enable-libbluray --enable-libbs2b --enable-bzlib --enable-libcaca --enable-libcelt --enable-chromaprint --disable-cuda --enable-cuda-llvm --enable-libdav1d --disable-libdc1394 --disable-libdrm --disable-libfdk-aac --enable-libflite --enable-fontconfig --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libfribidi --enable-libgme --enable-gnutls --enable-libgsm --enable-libharfbuzz --enable-iconv --disable-libjack --enable-ladspa --enable-lzma --disable-libmfx --disable-libmodplug --enable-libmp3lame --enable-libmysofa --disable-cuvid --disable-nvdec --disable-nvenc --enable-openal --enable-opencl --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-opengl --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --disable-libplacebo --disable-libpulse --enable-librav1e --disable-librtmp --disable-libsmbclient --enable-sdl2 --disable-libshaderc --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-librsvg --disable-libsvtav1 --disable-libtensorflow --enable-libtheora --disable-libv4l2 --disable-v4l2-m2m --disable-vaapi --enable-vdpau --enable-libvidstab --disable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --disable-vulkan --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxcb --enable-libxcb-shape --enable-libxcb-shm --enable-libxcb-xfixes --enable-xlib --enable-libxml2 --enable-libxvid --enable-libzimg --enable-zlib --enable-libzmq --disable-debug --enable-optimizations --disable-extra-warnings --disable-stripping --cc=clang --cxx=clang++
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'error/2024-03-19 18-03-16.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf60.16.100
  Duration: 00:01:43.07, start: 0.000000, bitrate: 2634 kb/s
  Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, bt709), 3024x1964, 2467 kb/s, 29.97 fps, 29.97 tbr, 30k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 159 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
Stream mapping:
  Stream #0:0 -> #0:0 (hevc (native) -> av1 (libaom-av1))
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libaom-av1 @ 0x148e0f9e0] 3.8.1
Output #0, mp4, to 'out.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf60.16.100
  Stream #0:0(und): Video: av1 (av01 / 0x31307661), yuv420p(tv, bt709, progressive), 3024x1964, q=2-31, 29.97 fps, 30k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
      encoder         : Lavc60.31.102 libaom-av1
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 159 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
zsh: illegal hardware instruction  ffmpeg -y -i error/2024-03-19\ 18-03-16.mp4 -c:v libaom-av1 -b:v 0 -crf 30  8
                     ..'          ping@ping-ARM-laptop
                 ,xNMM.           --------------------
               .OMMMMo            OS: macOS Sonoma 14.4 23E214 arm64
               lMM"               Host: MacBook Pro (14-inch, Nov 2023, Three Thunderbolt 4 ports)
     .;loddo:.  .olloddol;.       Kernel: 23.4.0
   cKMMMMMMMMMMNWMMMMMMMMMM0:     Uptime: 10 hours, 37 mins
 .KMMMMMMMMMMMMMMMMMMMMMMMWd.     Packages: 560 (nix-system), 43 (nix-default)
 XMMMMMMMMMMMMMMMMMMMMMMMX.       Shell: zsh 5.9
;MMMMMMMMMMMMMMMMMMMMMMMM:        Display (Color LCD): 3024x1964 @ 120Hz (as 1512x982) [Built-in]
:MMMMMMMMMMMMMMMMMMMMMMMM:        DE: Aqua
.MMMMMMMMMMMMMMMMMMMMMMMMX.       WM: Quartz Compositor
 kMMMMMMMMMMMMMMMMMMMMMMMMWd.     WM Theme: Multicolor (Dark)
 'XMMMMMMMMMMMMMMMMMMMMMMMMMMk    Font: .AppleSystemUIFont [System], Helvetica [User]
  'XMMMMMMMMMMMMMMMMMMMMMMMMK.    Cursor: Fill - Black, Outline - White (32px)
    kMMMMMMMMMMMMMMMMMMMMMMd      Terminal: kitty 0.32.2
     ;KMMMMMMMWXXWMMMMMMMk.       Terminal Font: SauceCodePro NFM (18pt)
       "cooc*"    "*coo'"         CPU: Apple M3 Pro (12) @ 4.06 GHz
                                  GPU: Apple M3 Pro (18) [Integrated]
                                  Memory: 10.82 GiB / 18.00 GiB (60%)
                                  Swap: Disabled
                                  Disk (/): 420.07 GiB / 926.35 GiB (45%) - apfs [Read-only]
                                  Local IP (en0): ********
                                  Battery: 100% [AC connected]
                                  Power Adapter: 96W USB-C Power Adapter
                                  Locale: en_NZ.UTF-8

Notify maintainers

@atemu @arthsmn @jopejoe1

Metadata

Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.

[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"aarch64-darwin"`
 - host os: `Darwin 23.4.0, macOS 14.4`
 - multi-user?: `yes`
 - sandbox: `no`
 - version: `nix-env (Nix) 2.18.2`
 - channels(root): `"nixpkgs"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixpkgs`

Add a :+1: reaction to issues you find important.

Atemu commented 3 months ago

That sounds like a bug in libaom, not ffmpeg. Keep in mind that ffmpeg is merely the tool to cobble together independent AV libraries into one unified interface.

libx264 had a similar issue a while back, could be a similar cause: https://github.com/NixOS/nixpkgs/issues/271313

cc @reckenrode