请教个问题:
我的mac电脑上有2个版本的ffmpeg,A版本的ffmpeg是使用brew安装的,B版本的是我自己编译的。代码的版本号都是7.0.1。
但是当我使用相同的参数去压缩同一个文件的时候,压缩比差距很大。
A版本的命令:
ffmpeg -i 1390942-uhd_4096_2160_24fps.mp4 -c:v h264_videotoolbox -b:v 12000k 1390942-uhd_4096_2160_24fps_after.mp4 -loglevel debug
B版本的命令:
/Users/hanyongqiang-mac/code/baidu/transcode/third_party/ffmpeg701/ffmpeg_build_macos/mac_arm64/bin/ffmpeg -i 1390942-uhd_4096_2160_24fps.mp4 -c:v h264_videotoolbox -b:v 12000k 1390942-uhd_4096_2160_24fps_after.mp4 -loglevel debug
源文件的大小是78M,A版本ffmpeg压缩后的文件是39.6M,B版本压缩后是112M,这个奇怪的现象有可能是什么原因呢?
考虑是编译选项的问题,但没有看出有可能的原因,希望有经验的专家帮忙鉴定一下:
2个ffmpeg的编译选项:
A:
ffmpeg version 7.1 Copyright (c) 2000-2024 the FFmpeg developers
built with Apple clang version 15.0.0 (clang-1500.3.9.4)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.100 / 61. 19.100
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
B:
ffmpeg version 7.0.1 Copyright (c) 2000-2024 the FFmpeg developers
built with Apple clang version 15.0.0 (clang-1500.3.9.4)
configuration: --prefix=/Users/mac/code/baidu/transcode/third_party/ffmpeg701/ffmpeg_build_macos/mac_x86_64 --disable-debug --target-os=darwin --arch=x86_64 --cc='clang -arch x86_64' --enable-cross-compile --ranlib=/usr/bin/ranlib --strip=/usr/bin/strip --extra-cflags='-std=c11 -I/Users/mac/code/baidu/transcode/third_party/ffmpeg701/ffmpeg_build_macos/mac_x86_64/include -I/Users/mac/code/baidu/transcode/third_party/ffmpeg701/ffmpeg_build_macos/mac_x86_64/include/fdk-aac' --extra-cxxflags='-std=c++11' --extra-ldflags=-L/Users/mac/code/baidu/transcode/third_party/ffmpeg701/ffmpeg_build_macos/mac_x86_64/lib --extra-libs='-lpthread -lm -lc++' --host-cflags= --host-ldflags= --enable-static --enable-avformat --disable-decoders --enable-decoder=h264 --enable-decoder=hevc --enable-decoder=aac --disable-shared --disable-alsa --disable-doc --disable-openssl --disable-libvpx --disable-libwebp --disable-lzma --disable-bzlib --disable-xlib --disable-libxcb --disable-vaapi --disable-sndio --disable-librtmp --enable-gpl --enable-nonfree --enable-libx264 --enable-encoder=libx264 --enable-libfdk-aac --enable-encoder=h264_videotoolbox --enable-videotoolbox --disable-libmp3lame --disable-asm --disable-zlib --disable-audiotoolbox
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
在对比两个版本的 FFmpeg(A 版本和 B 版本)时,尽管它们声称都是基于相同的版本号(7.0.1),但在编译选项和配置上的差异可能会导致显著的压缩比不同。以下是一些可能的解释:
架构和编译目标不同:
arm64
架构编译的,这通常用于现代 Mac 设备(如 M1 和 M2 芯片)。x86_64
架构编译的,这适用于旧款 Intel 和 AMD 芯片的 Mac 设备。不同架构可能会影响硬件加速(如 VideoToolbox)的性能和效率,从而导致不同的压缩结果。
编译选项和启用/禁用的库:
--enable-gpl
, --enable-libaom
, --enable-libdav1d
等,这些虽然与 VideoToolbox 编码不直接相关,但可能影响整体性能和配置。--enable-encoder=h264_videotoolbox --enable-videotoolbox
),并且禁用了很多其他库和特性,如 --disable-libvpx
, --disable-libwebp
等。这种差异可能导致 VideoToolbox 在不同版本的 FFmpeg 中以不同的方式工作。
FFmpeg 内部版本和库的差异:
硬件和驱动程序的差异:
确保架构一致性:
检查 FFmpeg 日志:
更新和重新编译:
使用其他工具进行验证:
联系 FFmpeg 社区:
我在spark中有一个操作,应该对数据帧中的几列执行。通常,有两种可能来指定这样的操作 hardcode 从colnames列表动态生成它们
问题内容: 我们将更新创建从Java 7到Java 8的构建的CI系统。稍后,我们希望将项目一个接一个地迁移到Java 8。当然,我们希望能够为仍使用Java 7的旧版本创建错误修正版本。 如果我们将构建相同的源,目标版本和源版本从JDK 7转移到JDK 8,我们是否可以确定不会出现任何问题?我们在开发机器上进行了测试,没有任何问题。 在此之前,我们还将逐步将部署服务器从JRE 7更新到JRE 8
有什么建议吗? 这对btw-helm没有帮助:错误:找不到可用的发行版名称
这样写 判断不了只读属性和不是只读属性 有什么办法吗(这是为什么T_T)
问题内容: Java文档说“同一对象上的同步方法的两次调用不可能交错”。我需要知道的是,synchronized是否还会阻止 同一类的 两个不同 实例中的 同步方法交织。 例如,类Worker具有称为process()的方法。我们有几个在自己的线程中运行的Worker实例。我们希望防止多个实例同时运行process()方法。会 同步 吗? 谢谢。 问题答案: 没有; 仅防止多个线程在 同一 实例中
我试图解决这个问题:https://leetcode.com/problems/palindrome-number/使用代码: 并在C中得到了这个错误: 但同样的代码在Java中运行得很好。为什么会这样?我该如何修复它?
本文向大家介绍浅谈针对Vue相同路由不同参数的刷新问题,包括了浅谈针对Vue相同路由不同参数的刷新问题的使用技巧和注意事项,需要的朋友参考一下 在使用vue和vue-router开发spa应用时,我们会遇到这样一种问题。 当页面跳转时,组件本身并没有发生改变: 这时我们进行路由跳转后会发现组件并没有刷新,在前一个路由组件的数据都保留了下来,这并不是我们想要的效果。 对于简单的数据更新,我们可以直接
这个问题最好用一个示例日期来解释,例如datetime now(伦敦时间):21/08/2020 11:34 am 我对“ET”和UTC格式以及ISO格式的时间感到困惑,EDT和ET是一样的吗?为什么有这么多不同的格式,而且它们很混乱。有人能用一种简单的方式解释一下吗?除非我没有找到正确的文档,否则网上的信息不是很容易理解。 我希望将ET转换为UTC的原因是AWS cron作业仅采用此格式(如果我