- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
def crop(input_file, output_file, x, y):
subprocess.call(['ffmpeg', '-i', input_file, '-filter:v', 'scale=.{}/{}*iw:ih'.format(x, y), output_file])
crop('C:/home/filename.m4v', 'C:/home/filename.mp4', 320, 240)
文件转换没问题,但文件大小比我的时候大了很多
ffmpeg -i filename.m4v -vf scale=320:240 filename.mp4
original file=3523
python=3765
command line=1
888
如果我使用 python 版本并使用命令行进行转换=1872
https://www.youtube.com/watch?v=T1tV-ovGPyc
我下载了 480 和 360 版本来比较原始文件大小并比较我调整大小的时间,无论是使用命令行还是使用 python。
ffmpeg -i filename.mp4 scale=320:240 filename1.mp4
480 = 116.488 MB
subprocess.call(['ffmpeg', '-i', input_file, '-crf:23', 'scale=.{}/{}*iw:ih'.format(x, y), output_file])
480 = 264.509 MB
ffmpeg version N-105780-g0d0002cd20-20220227 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220227
libavutil 57. 21.100 / 57. 21.100
libavcodec 59. 21.100 / 59. 21.100
libavformat 59. 17.102 / 59. 17.102
libavdevice 59. 5.100 / 59. 5.100
libavfilter 8. 27.100 / 8. 27.100
libswscale 6. 5.100 / 6. 5.100
libswresample 4. 4.100 / 4. 4.100
libpostproc 56. 4.100 / 56. 4.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'filename.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2018-06-06T01:11:10.000000Z
Duration: 00:42:39.05, start: 0.000000, bitrate: 544 kb/s
Stream #0:0[0x1](und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 540x360 [SAR 1:1 DAR 3:2], 446 kb/s, 29.97 fps, 29.97 tbr, 30k tbn (default)
Metadata:
creation_time : 2018-06-06T01:11:10.000000Z
handler_name : ISO Media file produced by Google Inc.
Created on: 06/05/2018.
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default)
Metadata:
creation_time : 2018-06-06T01:11:10.000000Z
handler_name : ISO Media file produced by Google Inc.
Created on: 06/05/2018.
vendor_id : [0][0][0][0]
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 000002996b8a90c0] using SAR=9/8
[libx264 @ 000002996b8a90c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000002996b8a90c0] profile High, level 1.3, 4:2:0, 8-bit
[libx264 @ 000002996b8a90c0] 264 - core 164 - H.264/MPEG-4 AVC codec - Copyleft 2003-2022 - 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=7 lookahead_threads=1 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=25 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 'filename1.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
encoder : Lavf59.17.102
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 320x240 [SAR 9:8 DAR 3:2], q=2-31, 29.97 fps, 30k tbn (default)
Metadata:
creation_time : 2018-06-06T01:11:10.000000Z
handler_name : ISO Media file produced by Google Inc.
Created on: 06/05/2018.
vendor_id : [0][0][0][0]
encoder : Lavc59.21.100 libx264
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), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2018-06-06T01:11:10.000000Z
handler_name : ISO Media file produced by Google Inc.
Created on: 06/05/2018.
vendor_id : [0][0][0][0]
encoder : Lavc59.21.100 aac
frame=76693 fps=454 q=-1.0 Lsize= 115454kB time=00:42:39.04 bitrate= 369.6kbits/s speed=15.2x
video:73329kB audio:39501kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.325049%
[libx264 @ 000002996b8a90c0] frame I:462 Avg QP:20.30 size: 13259
[libx264 @ 000002996b8a90c0] frame P:30634 Avg QP:23.42 size: 1629
[libx264 @ 000002996b8a90c0] frame B:45597 Avg QP:28.92 size: 418
[libx264 @ 000002996b8a90c0] consecutive B-frames: 17.7% 7.0% 6.5% 68.8%
[libx264 @ 000002996b8a90c0] mb I I16..4: 6.8% 50.1% 43.0%
[libx264 @ 000002996b8a90c0] mb P I16..4: 1.1% 3.5% 0.9% P16..4: 27.7% 13.2% 8.8% 0.0% 0.0% skip:44.8%
[libx264 @ 000002996b8a90c0] mb B I16..4: 0.1% 0.4% 0.2% B16..8: 31.0% 5.4% 1.3% direct: 1.5% skip:60.2% L0:39.0% L1:50.2% BI:10.9%
[libx264 @ 000002996b8a90c0] 8x8 transform intra:60.1% inter:58.6%
[libx264 @ 000002996b8a90c0] coded y,uvDC,uvAC intra: 62.2% 55.5% 24.7% inter: 12.3% 9.1% 0.8%
[libx264 @ 000002996b8a90c0] i16 v,h,dc,p: 22% 38% 9% 31%
[libx264 @ 000002996b8a90c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 24% 20% 5% 6% 6% 9% 5% 8%
[libx264 @ 000002996b8a90c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 24% 13% 6% 8% 7% 10% 6% 8%
[libx264 @ 000002996b8a90c0] i8c dc,h,v,p: 59% 21% 15% 5%
[libx264 @ 000002996b8a90c0] Weighted P-Frames: Y:7.2% UV:3.0%
[libx264 @ 000002996b8a90c0] ref P L0: 71.3% 14.3% 10.4% 3.7% 0.3%
[libx264 @ 000002996b8a90c0] ref B L0: 92.5% 6.1% 1.5%
[libx264 @ 000002996b8a90c0] ref B L1: 96.2% 3.8%
[libx264 @ 000002996b8a90c0] kb/s:234.74
[aac @ 000002996c0dcdc0] Qavg: 3985.249
这是 python 设置唯一消息,使用:
subprocess.call(['ffmpeg', '-i', input_file, '-filter:v', 'scale=.{}/{}*iw:ih'.format(x, y), output_file])
[libx264 @ 0000029d2d338e00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0000029d2d338e00] profile High, level 3.0, 4:2:0, 8-bit
[libx264 @ 0000029d2d338e00] 264 - core 164 - H.264/MPEG-4 AVC codec - Copyleft 2003-2022 - 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=11 lookahead_threads=1 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=25 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 'C:/filename1.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
encoder : Lavf59.17.102
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709, progressive), 540x360 [SAR 1:1 DAR 3:2], q=2-31, 29.97 fps, 30k tbn (default)
Metadata:
creation_time : 2018-06-06T01:11:10.000000Z
handler_name : ISO Media file produced by Google Inc. Created on: 06/05/2018.
vendor_id : [0][0][0][0]
encoder : Lavc59.21.100 libx264
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), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2018-06-06T01:11:10.000000Z
handler_name : ISO Media file produced by Google Inc. Created on: 06/05/2018.
vendor_id : [0][0][0][0]
encoder : Lavc59.21.100 aac
最佳答案
如果您需要达到一定程度的压缩(或文件大小),您需要指定您的目标。如果您使用 H.264 视频编解码器输出 MP4,请阅读 this FFmpeg Wiki entry .你也可以试试H.265 这可以使您的文件大小再减少 25–50%(同样取决于您的编码配置),但会占用更多的计算能力(或时间)。
[22 年 3 月 16 日添加]
我原来的答案是不正确的。您得到 2 个不同结果(cli vs. Python)的原因是过滤器不一样:
命令行:scale=320:240
.非常直接,输出将是 320 像素宽 x 240 像素高
Python 表达式:'scale=.{x}/{y}*iw:ih'
.虽然 x
的值和 y
未公开,高度保持不变,而宽度通过一些有趣的数学修改(x
表示分子的小数部分除以 y
作为分母,乘以输入宽度)。如果您的意图是输出与 x=320
的 cli 案例相同尺寸的视频和 y=240
那么表达式应该简单地读作:scale={x}:{y}
.
关于ffmpeg - Python ffmpeg 在缩放文件大小方面的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71483608/
我对构面有疑问,并根据构面进行了一些过滤。 我知道这是一个重复的问题,但我找不到答案。 我想知道如何在 flex 搜索中实现相同的功能。 假设我有一个有关汽车和某些方面的索引-例如模型和 颜色。 颜色
我正在尝试找到一种解决方案来为某些方面创建子方面列表。 我有一些产品的衣服尺码,它们存储在 solr 中 "Size_both":"W30L30","尺寸宽度":"W30","Size_length"
我正在尝试找到一种解决方案来为某些方面创建子方面列表。 我有一些产品的衣服尺码,它们存储在 solr 中 "Size_both":"W30L30","尺寸宽度":"W30","Size_length"
我对方面有疑问。他们不开火。我有小方面: @Aspect @Component public class SynchronizingAspect { @Pointcut("execution(
这是在 ruby 中启用散列自动生成的巧妙技巧(取自 facets): # File lib/core/facets/hash/autonew.rb, line 19 def self.a
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: Creating a facet_wrap plot with ggplot2 with different ann
XMLHttpRequest 能否从 http://mydomain.example/ 向 http://mydomain.example:81/ 发送请求? 最佳答案 要使两个文档被视为具有相同的来
我对 Elasticsearch 中的方面有一点问题。 我有一个表格视频,一个表格 channel ,一个 channel 有很多视频。 我只想在 X 个最新视频上显示每个 channel 的 %vi
假设我正在为 4 个人绘制数据图表:Alice、Bob、Chuck 和 Dana。我正在使用 ggplot2 制作一个多面图,每个人一个方面。我的磁盘上还有 4 张图像:Alice.png、Bob.p
我已经下载了收件箱,并且正在使用Pig和Hadoop处理电子邮件。我已经使用Pig和Wonderdog在ElasticSearch中为这些电子邮件编制了索引。 现在,我为收件箱中的每个电子邮件地址创建
我有一个模块如下: define([...], function(...){ function anothermethod() {...} function request() {....}
(defprotocol IAnimal "IAnimal" (report [o] (println (type o) " reporting.\n") (inner-repor
我有一个 Bean 需要向 InfluxDB 报告。数据库在表 INFLUX_DB_SERVER 中注册了 InfluxDB。如果你看一下代码,你会发现方法reportMemory做了很多工作,它构造
我的问题与分面有关。在下面的示例代码中,我查看了一些分面散点图,然后尝试在每个分面的基础上叠加信息(在本例中为平均线)。 tl;dr 版本是我的尝试失败了。要么我添加的平均线计算所有数据(不尊重方面变
假设我正在为 4 个人绘制数据图表:Alice、Bob、Chuck 和 Dana。我正在使用 ggplot2 制作一个多面图,每个人一个方面。我的磁盘上还有 4 张图像:Alice.png、Bob.p
尝试用两个方面包装服务类来获取此调用链: javanica..HystrixCommandAspect -> MyCustomAroundAspect -> MyService 遇到两个问题: Hys
我是 AspectJ 的初学者。我用它在我的网络驱动程序中截取屏幕截图。以下是我的包结构。 我想知道如何在 Browser 类中运行我的程序,以便它使用 Screenshots 类中定义的 Aspec
我在使用 spring aop 时遇到问题 (编辑:如果我的方法不是静态的,则代码可以正常工作) 我的包中有这个结构: aaa.bbb.ccc.Clase1.java aaa.bbb.ddd.Clas
我有一个通用存储库类,其中包含各种标记有 PostSharp 方面 (SecuredOperation) 的方法... public class Repository : IRepository, I
我有一个运行多线程的 Hibernate 事务方法“doImportImpl”。而某些记录需要依次导入,所以代码结构大致是这样的: public RecordResult doImportImpl(S
我是一名优秀的程序员,十分优秀!