FFmpeg on Apple Silicon (Success)
Hi, Just for information. Today I successfully compiled FFmpeg 4.3.1 for Apple Silicon (macOS 11 Beta Big Sur) on Apple Developer Transition Kit. Also I was able to include FFmpeg shared libraries for my test app. I used basic configure options to make sure that FFmpeg works on arm64: ./configure --prefix=/usr/local/Cellar/ffmpeg/4.3.1 --enable-shared --extra-cflags="-fno-stack-check" --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-pthreads --enable-nonfree I discovered only one issue (probably my mistake). dylibs work only when I put them to /usr/local/Cellar/ffmpeg/4.3.1/lib folder If I put dylibs into my APP bundle /Contents/Frameworks these dylibs fail to load, despite the fact that I load dylib using absolute file path from my folder.
On Aug 7, 2020, at 1:02 PM, Aleksid <beautyofnorth@gmail.com> wrote:
Hi,
Just for information. Today I successfully compiled FFmpeg 4.3.1 for Apple Silicon (macOS 11 Beta Big Sur) on Apple Developer Transition Kit.
Hi! Have you moved up to an M1-based Mac? How is the performance of ffmpeg on released Apple Silicon? I am using ffmpeg to pull RTSP streams from my IP cameras and push them to my YouTube channels. Previously my commands were of the form: ./ffmpeg -re -thread_queue_size 512 -rtsp_transport tcp -i "rtsp://anonymous:password@192.168.1.11:554" -vcodec copy -acodec copy -t 01:00:00 -f flv "rtmp://a.rtmp.youtube.com/my-youtube-streaming-key” and this took almost no CPU because there’s no transcoding. I can run 3 instances of ffmpeg on Raspberry Pi 3 without using more than 50% CPU, total. Now I want to stack 2 streams horizontally using something like: ./ffmpeg -re -thread_queue_size 1024 -i rtsp://anonymous:password@192.168.1.47:554 -i rtsp://anonymous:password@192.168.1.50:554 -vcodec <some good codec> -acodec copy -t 01:00:00 -filter_complex "nullsrc=size=3840x1080 [base]; [0:v] setpts=PTS-STARTPTS, scale=1920x1080 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=1920x1080 [upperright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=1920" -f flv "rtmp://a.rtmp.youtube.com/live2/my-youtube-streaming-key” or ./ffmpeg -re -thread_queue_size 1024 -i rtsp://anonymous:password@192.168.1.47:554 -i rtsp://anonymous:password@192.168.1.50:554 -vcodec <some good codec> -acodec copy -t 01:00:00 -filter_complex hstack=inputs=2 -f "rtmp://a.rtmp.youtube.com/live2/my-youtube-streaming-key" I have a few old Windows computers lying around, and they struggle with this, running upwards of 60-80% CPU, even with -vcodec h264_amf on my AMD box pushing much of the load to the integrated GPU, which runs at 55%. I can’t get h264_qsv to work on my Intel box, and I can’t get hstack to work if the two cameras have two different color spaces. I can run this on my 2014 MacBook Pro with Nvidia GPU, using h264_videotoolbox: ./ffmpeg -re -thread_queue_size 1024 -i rtsp://anonymous:password@192.168.1.47:554 -i rtsp://anonymous:password@192.168.1.50:554 -vcodec h264_videotoolbox -acodec copy -t 01:00:00 -filter_complex "nullsrc=size=3840x1080 [base]; [0:v] setpts=PTS-STARTPTS, scale=1920x1080 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=1920x1080 [upperright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=1920" -f flv "rtmp://a.rtmp.youtube.com/live2/rtmp://a.rtmp.youtube.com/live2/my-youtube-streaming-key" and it runs at ~66% CPU, but both Intel Iris and nVIDIA GPUs report 0% in Activity Monitor. Furthermore this is my main work computer, so I can’t have it running ffmpeg all day long. I actually want to run two such channels, so two instances of ffmpeg, and I don’t want to heat my house or have a loud fan blowing constantly. Does ffmpeg on AS use the integrated GPU? Do you think an AS Mini would be able to run two instances of either form of those commands listed above, e.g. two different, 2-up, side-by-side videos, each 3840 x 1280? The mini is a nice, quiet box that I could hide in one of my closets. At $700 it’s not cheap, but even a refurbed Core i7 that could do what I want would cost in the same neighborhood, I think. Unless I’m just doing it wrong, which also is possible. Thanks!
Hi Aleksid, Any new news re: ffmpeg on Apple Silicon? For everyone else, does ffmpeg en/decode performance generally scale with CPU cores, GPU cores, both or neither? Or does it use the “media engine” block(s)? Is there any way to tell which parts of the chip are being used? Or is this all hidden/obfuscated by the video_toolbox API? I’m very curious to see how the M1 Max would run certain types of tasks.
On Aug 7, 2020, at 1:02 PM, Aleksid <beautyofnorth@gmail.com> wrote:
Hi,
Just for information. Today I successfully compiled FFmpeg 4.3.1 for Apple Silicon (macOS 11 Beta Big Sur) on Apple Developer Transition Kit.
Also I was able to include FFmpeg shared libraries for my test app.
I used basic configure options to make sure that FFmpeg works on arm64:
./configure --prefix=/usr/local/Cellar/ffmpeg/4.3.1 --enable-shared --extra-cflags="-fno-stack-check" --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-pthreads --enable-nonfree
I discovered only one issue (probably my mistake). dylibs work only when I put them to /usr/local/Cellar/ffmpeg/4.3.1/lib folder If I put dylibs into my APP bundle /Contents/Frameworks these dylibs fail to load, despite the fact that I load dylib using absolute file path from my folder. _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email ffmpeg-user-request@ffmpeg.org with subject "unsubscribe".
Hmmm. Perhaps no one cares about ffmpeg on Apple Silicon but me! But I care, so I bought myself a used M1 mini, and here are some not-very-scientific results. I “installed” ffmpeg 4.4 on my M1 by downloading a precompiled build from OSXExperts: https://www.osxexperts.net Running a slightly older build on my Intel box (N-102535-g6ff2aba088-tessus) I took a 06:15 length, 2560 x 1440, ~300 MB MP4 from one of my security cameras: https://www.kan.org/download/StairClimb20x.mp4 and sped it up 20x with: -filter:v "setpts=0.5*PTS" -an on both my 2014 MacBook Pro (2.8 GHz Intel Core i7/Intel Iris Pro 1536 MB and NVIDIA GeForce GT 750M 2 GB) and on my new 2020 Mac Mini (4 performance cores, 4 efficiency cores, 8 M1 GPU cores), both with and without invoking -vcodec h264_videotoolbox or hevc_videotoolbox: https://www.youtube.com/watch?v=Ul5foCMrvR4 (uploaded from an Intel/no toolbox run) Executive Summary: Intel, no toolbox: 0.736x Intel, h264_videotoolbox, 4.23x Intel, hevc_videotoolbox, failed with "The hardware encoder may be busy, or not supported" M1, no toolbox, 2.61x M1, h264_videotoolbox: 6.74x M1, hevc_videotoolbox, 7.42x On my Intel machine, h264_videotoolbox increases the processing speed by 4.23 /0.736 = 5.7x. On my M1 machine, h264_videotoolbox increases the processing speed by 6.74 / 2.61 = 2.58x. On M1, hevc vs h264 is 7.42 / 6.74 = 1.1x faster M1 hevc vs. Intel sw only is > 10x faster. M1 vs Intel, software only, is 2.61 / 0.736 = 3.55x faster. Fastest option available on each, e.g. M1 w/hevc_videotoolbox vs. Intel w/h264_videotoolbox = 7.42 / 4.23 = 1.75x, which is a bit disappointing based on all the hoopla I’d read about the M1. “top” suggests that neither machine is CPU-bound when the hardware encoders are invoked.See screenshots, linked below. Or maybe ffmpeg isn’t fully optimized for M1 yet. Or I’m comparing an embedded GPU to a discrete GPU. Any ideas or opinions on this? Anyone have an M1 Pro or M1 Max machine to compare? Next step is to try assembling 2Up video in real-time and see how the CPU does. Detailed results: Intel, no toolbox: https://www.kan.org/pictures/ffmpegIntel.png ffmpeg -i /Users/steven/Downloads/StairClimb20x.mp4 -filter:v "setpts=0.5*PTS" -an /Users/steven/Downloads/StairClimb20x20x.mp4 ffmpeg version N-102535-g6ff2aba088-tessus https://evermeet.cx/ffmpeg/ Copyright (c) 2000-2021 the FFmpeg developers built with Apple clang version 11.0.0 (clang-1100.0.33.17) configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay libavutil 57. 0.100 / 57. 0.100 libavcodec 59. 1.100 / 59. 1.100 libavformat 59. 2.100 / 59. 2.100 libavdevice 59. 0.100 / 59. 0.100 libavfilter 8. 0.101 / 8. 0.101 libswscale 6. 0.100 / 6. 0.100 libswresample 4. 0.100 / 4. 0.100 libpostproc 56. 0.100 / 56. 0.100 [h264 @ 0x7fa50ff00300] error while decoding MB 159 89, bytestream -5 [h264 @ 0x7fa50ff00300] concealing 50 DC, 50 AC, 50 MV errors in I frame [h264 @ 0x7fa50ff00300] error while decoding MB 159 89, bytestream -7 [h264 @ 0x7fa50ff00300] concealing 50 DC, 50 AC, 50 MV errors in P frame <those errors repeated a few thousand times> frame= 2734 fps= 11 q=-1.0 Lsize= 174691kB time=00:03:07.26 bitrate=7641.8kbits/s dup=0 drop=2879 speed=0.736x video:174669kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.013107% [libx264 @ 0x7fae53d05700] frame I:11 Avg QP:17.36 size:813954 [libx264 @ 0x7fae53d05700] frame P:2043 Avg QP:20.41 size: 78970 [libx264 @ 0x7fae53d05700] frame B:680 Avg QP:25.59 size: 12605 [libx264 @ 0x7fae53d05700] consecutive B-frames: 66.2% 1.2% 1.9% 30.7% [libx264 @ 0x7fae53d05700] mb I I16..4: 3.2% 85.2% 11.6% [libx264 @ 0x7fae53d05700] mb P I16..4: 0.2% 1.0% 0.2% P16..4: 38.6% 11.1% 8.8% 0.0% 0.0% skip:40.1% [libx264 @ 0x7fae53d05700] mb B I16..4: 0.0% 0.4% 0.1% B16..8: 21.9% 1.6% 0.4% direct: 1.5% skip:74.0% L0:49.8% L1:43.6% BI: 6.7% [libx264 @ 0x7fae53d05700] 8x8 transform intra:74.3% inter:67.8% [libx264 @ 0x7fae53d05700] coded y,uvDC,uvAC intra: 75.2% 79.7% 38.0% inter: 19.7% 28.9% 5.0% [libx264 @ 0x7fae53d05700] i16 v,h,dc,p: 35% 20% 28% 18% [libx264 @ 0x7fae53d05700] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 12% 25% 5% 7% 7% 8% 7% 8% [libx264 @ 0x7fae53d05700] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 15% 15% 7% 8% 8% 8% 8% 7% [libx264 @ 0x7fae53d05700] i8c dc,h,v,p: 53% 17% 21% 9% [libx264 @ 0x7fae53d05700] Weighted P-Frames: Y:0.8% UV:0.2% [libx264 @ 0x7fae53d05700] ref P L0: 81.7% 8.5% 7.2% 2.7% 0.0% [libx264 @ 0x7fae53d05700] ref B L0: 94.9% 3.1% 2.1% [libx264 @ 0x7fae53d05700] ref B L1: 96.8% 3.2% [libx264 @ 0x7fae53d05700] kb/s:7632.40 Intel, using toolbox: https://www.kan.org/pictures/ffmpegIntel_h264_videotoolbox.png ffmpeg -i /Users/steven/Downloads/StairClimb20x.mp4 -vcodec h264_videotoolbox -filter:v "setpts=0.5*PTS" -an /Users/steven/Downloads/StairClimb20x20x.mp4 ffmpeg version N-102535-g6ff2aba088-tessus https://evermeet.cx/ffmpeg/ Copyright (c) 2000-2021 the FFmpeg developers built with Apple clang version 11.0.0 (clang-1100.0.33.17) configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay libavutil 57. 0.100 / 57. 0.100 libavcodec 59. 1.100 / 59. 1.100 libavformat 59. 2.100 / 59. 2.100 libavdevice 59. 0.100 / 59. 0.100 libavfilter 8. 0.101 / 8. 0.101 libswscale 6. 0.100 / 6. 0.100 libswresample 4. 0.100 / 4. 0.100 libpostproc 56. 0.100 / 56. 0.100 [h264 @ 0x7f8647e04bc0] error while decoding MB 159 89, bytestream -5 [h264 @ 0x7f8647e04bc0] concealing 50 DC, 50 AC, 50 MV errors in I frame [h264 @ 0x7f8647e04bc0] error while decoding MB 159 89, bytestream -7 [h264 @ 0x7f8647e04bc0] concealing 50 DC, 50 AC, 50 MV errors in P frame <those errors repeated a few thousand times> frame= 2734 fps= 62 q=-0.0 Lsize= 14405kB time=00:03:07.33 bitrate= 629.9kbits/s dup=0 drop=2879 speed=4.23x video:14373kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.223935% M1, no toolbox: https://www.kan.org/pictures/ffmpegM1.png ffmpeg -i /Users/steven/Desktop/StairClimb20x.mp4 -filter:v "setpts=0.5*PTS" -an /Users/steven/Desktop/StairClimb20x20x.mp4 ffmpeg -i /Users/steven/Desktop/StairClimb20x.mp4 -filter:v "setpts=0.5*PTS" -an /Users/steven/Desktop/StairClimb20x20x.mp4 ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers built with Apple clang version 12.0.0 (clang-1200.0.32.27) configuration: --prefix=/Volumes/tempdisk/sw --extra-cflags=-fno-stack-check --arch=arm64 --cc=/usr/bin/clang --enable-gpl --enable-videotoolbox --enable-libopenjpeg --enable-libopus --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libvpx --enable-libwebp --enable-libass --enable-libfreetype --enable-libtheora --enable-libvorbis --enable-libsnappy --enable-libaom --enable-libvidstab --enable-libzimg --enable-libsvtav1 --enable-version3 --pkg-config-flags=--static --disable-ffplay --enable-postproc --enable-nonfree --enable-neon --enable-runtime-cpudetect --disable-indev=qtkit --disable-indev=x11grab_xcb 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 libswscale 5. 9.100 / 5. 9.100 libswresample 3. 9.100 / 3. 9.100 libpostproc 55. 9.100 / 55. 9.100 [h264 @ 0x156809200] cabac decode of qscale diff failed at 159 89 [h264 @ 0x156809200] error while decoding MB 159 89, bytestream -2 [h264 @ 0x156809200] concealing 50 DC, 50 AC, 50 MV errors in P frame Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/steven/Desktop/StairClimb20x.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.45.100 Duration: 00:06:14.72, start: 0.000000, bitrate: 6378 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 2560x1440, 6294 kb/s, 14.98 fps, 14.58 tbr, 90k tbn, 180k tbc (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0] Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 81 kb/s (default) Metadata: handler_name : SoundHandler vendor_id : [0][0][0][0] Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Press [q] to stop, [?] for help [h264 @ 0x157012600] cabac decode of qscale diff failed at 159 89 [h264 @ 0x157012600] error while decoding MB 159 89, bytestream -2 [h264 @ 0x157012600] concealing 50 DC, 50 AC, 50 MV errors in P frame [libx264 @ 0x15700e600] using cpu capabilities: ARMv8 NEON [libx264 @ 0x15700e600] profile High, level 5.0, 4:2:0, 8-bit [libx264 @ 0x15700e600] 264 - core 161 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=14 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to '/Users/steven/Desktop/StairClimb20x20x.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.76.100 Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(progressive), 2560x1440, q=2-31, 14.58 fps, 11200 tbn (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0] encoder : Lavc58.134.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A /Users/steven/Desktop/StairClimb20x.mp4: corrupt decoded frame in stream 0ed= 0x [h264 @ 0x157012000] cabac decode of qscale diff failed at 155 89 [h264 @ 0x157012000] error while decoding MB 155 89, bytestream -1 [h264 @ 0x157012000] concealing 54 DC, 54 AC, 54 MV errors in P frame /Users/steven/Desktop/StairClimb20x.mp4: corrupt decoded frame in stream 0 [h264 @ 0x157012000] error while decoding MB 156 89, bytestream -6 [h264 @ 0x157012000] concealing 53 DC, 53 AC, 53 MV errors in P frame [h264 @ 0x157012600] error while decoding MB 159 89, bytestream -5 <those errors repeated a few thousand times> frame= 2734 fps= 38 q=-1.0 Lsize= 174700kB time=00:03:07.26 bitrate=7642.2kbits/s dup=0 drop=2879 speed=2.61x video:174677kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.013116% [libx264 @ 0x15700e600] frame I:11 Avg QP:17.36 size:813550 [libx264 @ 0x15700e600] frame P:2040 Avg QP:20.41 size: 79071 [libx264 @ 0x15700e600] frame B:683 Avg QP:25.58 size: 12614 [libx264 @ 0x15700e600] consecutive B-frames: 66.1% 1.2% 1.9% 30.9% [libx264 @ 0x15700e600] mb I I16..4: 3.2% 85.3% 11.4% [libx264 @ 0x15700e600] mb P I16..4: 0.2% 0.9% 0.2% P16..4: 38.7% 11.1% 8.8% 0.0% 0.0% skip:40.1% [libx264 @ 0x15700e600] mb B I16..4: 0.0% 0.4% 0.1% B16..8: 21.9% 1.6% 0.4% direct: 1.5% skip:74.0% L0:49.7% L1:43.6% BI: 6.7% [libx264 @ 0x15700e600] 8x8 transform intra:74.2% inter:67.7% [libx264 @ 0x15700e600] coded y,uvDC,uvAC intra: 75.0% 79.5% 38.0% inter: 19.7% 29.0% 5.0% [libx264 @ 0x15700e600] i16 v,h,dc,p: 34% 20% 27% 18% [libx264 @ 0x15700e600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 12% 27% 5% 7% 7% 8% 7% 8% [libx264 @ 0x15700e600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 14% 16% 7% 8% 8% 8% 7% 7% [libx264 @ 0x15700e600] i8c dc,h,v,p: 53% 17% 21% 9% [libx264 @ 0x15700e600] Weighted P-Frames: Y:0.8% UV:0.2% [libx264 @ 0x15700e600] ref P L0: 81.6% 8.5% 7.2% 2.7% 0.0% [libx264 @ 0x15700e600] ref B L0: 94.9% 3.1% 2.1% [libx264 @ 0x15700e600] ref B L1: 96.8% 3.2% [libx264 @ 0x15700e600] kb/s:7632.77 M1, using h264_videotoolbox: https://www.kan.org/pictures/ffmpegM1_h264_videotoolbox.png ffmpeg -i /Users/steven/Desktop/StairClimb20x.mp4 -vcodec h264_videotoolbox -filter:v "setpts=0.5*PTS" -an /Users/steven/Desktop/StairClimb20x20x.mp4 ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers built with Apple clang version 12.0.0 (clang-1200.0.32.27) configuration: --prefix=/Volumes/tempdisk/sw --extra-cflags=-fno-stack-check --arch=arm64 --cc=/usr/bin/clang --enable-gpl --enable-videotoolbox --enable-libopenjpeg --enable-libopus --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libvpx --enable-libwebp --enable-libass --enable-libfreetype --enable-libtheora --enable-libvorbis --enable-libsnappy --enable-libaom --enable-libvidstab --enable-libzimg --enable-libsvtav1 --enable-version3 --pkg-config-flags=--static --disable-ffplay --enable-postproc --enable-nonfree --enable-neon --enable-runtime-cpudetect --disable-indev=qtkit --disable-indev=x11grab_xcb 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 libswscale 5. 9.100 / 5. 9.100 libswresample 3. 9.100 / 3. 9.100 libpostproc 55. 9.100 / 55. 9.100 [h264 @ 0x13d80b600] cabac decode of qscale diff failed at 159 89 [h264 @ 0x13d80b600] error while decoding MB 159 89, bytestream -2 [h264 @ 0x13d80b600] concealing 50 DC, 50 AC, 50 MV errors in P frame Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/steven/Desktop/StairClimb20x.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.45.100 Duration: 00:06:14.72, start: 0.000000, bitrate: 6378 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 2560x1440, 6294 kb/s, 14.98 fps, 14.58 tbr, 90k tbn, 180k tbc (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0] Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 81 kb/s (default) Metadata: handler_name : SoundHandler vendor_id : [0][0][0][0] File '/Users/steven/Desktop/StairClimb20x20x.mp4' already exists. Overwrite? [y/N] y Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_videotoolbox)) Press [q] to stop, [?] for help [h264 @ 0x12d00b600] cabac decode of qscale diff failed at 159 89 [h264 @ 0x12d00b600] error while decoding MB 159 89, bytestream -2 [h264 @ 0x12d00b600] concealing 50 DC, 50 AC, 50 MV errors in P frame Output #0, mp4, to '/Users/steven/Desktop/StairClimb20x20x.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.76.100 Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(progressive), 2560x1440, q=2-31, 200 kb/s, 14.58 fps, 11200 tbn (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0] encoder : Lavc58.134.100 h264_videotoolbox [h264_videotoolbox @ 0x13d81d400] Color range not set for yuv420p. Using MPEG range. /Users/steven/Desktop/StairClimb20x.mp4: corrupt decoded frame in stream 0ed= 0x [h264 @ 0x12d00b000] cabac decode of qscale diff failed at 155 89 [h264 @ 0x12d00b000] error while decoding MB 155 89, bytestream -1 [h264 @ 0x12d00b000] concealing 54 DC, 54 AC, 54 MV errors in P frame /Users/steven/Desktop/StairClimb20x.mp4: corrupt decoded frame in stream 0 [h264 @ 0x12d00b000] error while decoding MB 156 89, bytestream -6 [h264 @ 0x12d00b000] concealing 53 DC, 53 AC, 53 MV errors in P frame [h264 @ 0x12d00b600] error while decoding MB 159 89, bytestream -5 [h264 @ 0x12d00b600] concealing 50 DC, 50 AC, 50 MV errors in P frame <errors repeated> frame= 2734 fps= 98 q=-0.0 Lsize= 15274kB time=00:03:07.33 bitrate= 667.9kbits/s dup=0 drop=2879 speed=6.74x video:15240kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.222530% M1, using hevc_videotoolbox: https://www.kan.org/pictures/ffmpegM1_hevc_videotoolbox.png ffmpeg -i /Users/steven/Desktop/StairClimb20x.mp4 -vcodec hevc_videotoolbox -filter:v "setpts=0.5*PTS" -an /Users/steven/Desktop/StairClimb20x20x.mp4 ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers built with Apple clang version 12.0.0 (clang-1200.0.32.27) configuration: --prefix=/Volumes/tempdisk/sw --extra-cflags=-fno-stack-check --arch=arm64 --cc=/usr/bin/clang --enable-gpl --enable-videotoolbox --enable-libopenjpeg --enable-libopus --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libvpx --enable-libwebp --enable-libass --enable-libfreetype --enable-libtheora --enable-libvorbis --enable-libsnappy --enable-libaom --enable-libvidstab --enable-libzimg --enable-libsvtav1 --enable-version3 --pkg-config-flags=--static --disable-ffplay --enable-postproc --enable-nonfree --enable-neon --enable-runtime-cpudetect --disable-indev=qtkit --disable-indev=x11grab_xcb 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 libswscale 5. 9.100 / 5. 9.100 libswresample 3. 9.100 / 3. 9.100 libpostproc 55. 9.100 / 55. 9.100 [h264 @ 0x12d80b600] cabac decode of qscale diff failed at 159 89 [h264 @ 0x12d80b600] error while decoding MB 159 89, bytestream -2 [h264 @ 0x12d80b600] concealing 50 DC, 50 AC, 50 MV errors in P frame Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/steven/Desktop/StairClimb20x.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.45.100 Duration: 00:06:14.72, start: 0.000000, bitrate: 6378 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 2560x1440, 6294 kb/s, 14.98 fps, 14.58 tbr, 90k tbn, 180k tbc (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0] Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 81 kb/s (default) Metadata: handler_name : SoundHandler vendor_id : [0][0][0][0] File '/Users/steven/Desktop/StairClimb20x20x.mp4' already exists. Overwrite? [y/N] y Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_videotoolbox)) Press [q] to stop, [?] for help [h264 @ 0x11d008800] cabac decode of qscale diff failed at 159 89 [h264 @ 0x11d008800] error while decoding MB 159 89, bytestream -2 [h264 @ 0x11d008800] concealing 50 DC, 50 AC, 50 MV errors in P frame Output #0, mp4, to '/Users/steven/Desktop/StairClimb20x20x.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.76.100 Stream #0:0(und): Video: hevc (hev1 / 0x31766568), yuv420p(progressive), 2560x1440, q=2-31, 200 kb/s, 14.58 fps, 11200 tbn (default) Metadata: handler_name : VideoHandler vendor_id : [0][0][0][0] encoder : Lavc58.134.100 hevc_videotoolbox [hevc_videotoolbox @ 0x12d81d400] Color range not set for yuv420p. Using MPEG range. /Users/steven/Desktop/StairClimb20x.mp4: corrupt decoded frame in stream 0ed= 0x [h264 @ 0x11d008200] cabac decode of qscale diff failed at 155 89 [h264 @ 0x11d008200] error while decoding MB 155 89, bytestream -1 [h264 @ 0x11d008200] concealing 54 DC, 54 AC, 54 MV errors in P frame /Users/steven/Desktop/StairClimb20x.mp4: corrupt decoded frame in stream 0 [h264 @ 0x11d008200] error while decoding MB 156 89, bytestream -6 [h264 @ 0x11d008200] concealing 53 DC, 53 AC, 53 MV errors in P frame [h264 @ 0x11d008800] error while decoding MB 159 89, bytestream -5 /Users/steven/Desktop/StairClimb20x.mp4: corrupt decoded frame in stream 0 <errors repeated> frame= 2734 fps=108 q=-0.0 Lsize= 46337kB time=00:03:07.26 bitrate=2027.0kbits/s dup=0 drop=2879 speed=7.42x video:46303kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.073762%
On Oct 25, 2021, at 9:14 PM, Steven Kan <steven@kan.org> wrote:
Hi Aleksid,
Any new news re: ffmpeg on Apple Silicon?
For everyone else, does ffmpeg en/decode performance generally scale with CPU cores, GPU cores, both or neither? Or does it use the “media engine” block(s)?
Is there any way to tell which parts of the chip are being used? Or is this all hidden/obfuscated by the video_toolbox API?
I’m very curious to see how the M1 Max would run certain types of tasks.
On Aug 7, 2020, at 1:02 PM, Aleksid <beautyofnorth@gmail.com> wrote:
Hi,
Just for information. Today I successfully compiled FFmpeg 4.3.1 for Apple Silicon (macOS 11 Beta Big Sur) on Apple Developer Transition Kit.
Also I was able to include FFmpeg shared libraries for my test app.
I used basic configure options to make sure that FFmpeg works on arm64:
./configure --prefix=/usr/local/Cellar/ffmpeg/4.3.1 --enable-shared --extra-cflags="-fno-stack-check" --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-pthreads --enable-nonfree
I discovered only one issue (probably my mistake). dylibs work only when I put them to /usr/local/Cellar/ffmpeg/4.3.1/lib folder If I put dylibs into my APP bundle /Contents/Frameworks these dylibs fail to load, despite the fact that I load dylib using absolute file path from my folder. _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email ffmpeg-user-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email ffmpeg-user-request@ffmpeg.org with subject "unsubscribe".
participants (2)
-
Aleksid -
Steven Kan