自己已经搞完
无业游民,求工作——定位西安
@胡图图,你这样那个4t硬盘一坏,就相当于坏了两个盘
一加8Pro
又在旧手机 Redmi Note 7 上尝试了,上方的 cq 模式同样报错,vbr 模式的命令行去掉
-pix_fmt yuv420p
后可正常执行,速度在 0.38x 左右。低码率时一些帧会出现绿色马赛克。
@无名啊,@老虎会游泳,在红米 K60 Pro 上测试了 hevc_mediacodec 压缩拍摄的 4K60FPS 视频,结果:
CQ 模式应该非常适合视频压缩,但在我设备上,无论转码什么视频,都报错:
$ ffmpeg -hide_banner -hwaccel mediacodec -an -i /storage/emulated/0/DCIM/Camera/VID_20230725_194612.mp4 -c:v hevc_mediacodec -bitrate_mode cq -pix_fmt yuv420p -g 300 /storage/emulated/0/DCIM/Camera/VID_20230725_194612_cq.mp4 ...... [amediacodec_ndk @ 0xb40000726c4a0a80] Encoder configure failed, -10000 [hevc_mediacodec @ 0xb40000726c4afc00] MediaCodec configure failed, Generic error in an external library [vost#0:0/hevc_mediacodec @ 0xb40000726c497300] Error initializing output stream: Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height Conversion failed!
VBR 模式成功:
$ ffmpeg -hide_banner -hwaccel mediacodec -an -i /storage/emulated/0/DCIM/Camera/VID_20230725_194612.mp4 -c:v hevc_mediacodec -bitrate_mode vbr -b:v 8000k -pix_fmt yuv420p -g 300 /storage/emulated/0/DCIM/Camera/VID_20230725_194612_vbr_8000k.mp4 ...... Stream #0:0(eng): Video: hevc (hev1 / 0x31766568), yuv420p(tv, bt709/bt709/smpte170m, progressive), 3840x2160, q=2-31, 8000 kb/s, 60 fps, 15360 tbn (default) Metadata: creation_time : 2023-07-25T11:46:29.000000Z handler_name : VideoHandle vendor_id : [0][0][0][0] encoder : Lavc60.3.100 hevc_mediacodec frame= 1001 fps=102 q=-0.0 Lsize= 20381kB time=00:00:16.66 bitrate=10017.7kbits/s speed=1.69x video:20376kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.024889%尝试了多种比特率,速度都在 1.7x 左右。
转码效果:
总结,性能快,但是 cq 模式不可用,没有类似 crf 和 preset 的选项。
@老虎会游泳,我一开始用的就是 vbr,但好像
-b:v
没用?
@无名啊,用vbr啊,cbr是那种“就算画面很简单也要保证比特率不下降”的模式,通常用于直播,因为直播比特率上下起伏会卡。
层主 @咯叽 于 2024-02-25 02:28 删除了该楼层。
@无名啊,dwing 是什么意思
@老虎会游泳,噢,
cbr
生效了。我之前测试-bitrate_mode cq -q 30
或-xxx cq -qp 30
,以及-xxx vbr -b:v 256k
,都不行。。咋说呢。。给了 1mbps 码率,好像还是不咋地。。设置了 GOP 为 300 帧,至少 30 帧才为一组
@无名啊,
-b:v 比特率数值
应该会生效吧,这是个编码器通用参数。如果不生效,
-bitrate_mode cbr -b:v 比特率数值
或者
-bitrate_mode vbr -b:v 比特率数值
注意参数位置很重要,必须放在输出文件名的前面,输入文件名的后面。
@无名啊,可能那个视频已经被妥善压缩过了。我用默认参数压缩的手机拍摄的 4K60FPS 视频,体积从 104MB 压缩至 5MB,但画质大幅降低了。
我也没找到比较完整的帮助文档,只找到了这个:
~ $ ffmpeg -hide_banner -h encoder=hevc_mediacodec Encoder hevc_mediacodec [H.265 Android MediaCodec encoder]: General capabilities: dr1 delay hardware Threading capabilities: none Supported hardware devices: mediacodec Supported pixel formats: mediacodec yuv420p nv12 hevc_mediacodec AVOptions: -ndk_codec <boolean> E..V....... Use MediaCodec from NDK (default auto) -codec_name <string> E..V....... Select codec by name -bitrate_mode <int> E..V....... Bitrate control method (from -1 to INT_MAX) (default -1) cq 0 E..V....... Constant quality mode vbr 1 E..V....... Variable bitrate mode cbr 2 E..V....... Constant bitrate mode cbr_fd 3 E..V....... Constant bitrate mode with frame drops -pts_as_dts <boolean> E..V....... Use PTS as DTS. It is enabled automatically if avctx max_b_frames <= 0, since most of Android devices don't output B frames by default. (default auto) -level <int> E..V....... Specify tier and level (from 0 to INT_MAX) (default 0) m1 1 E..V....... Main tier level 1 h1 2 E..V....... High tier level 1 m2 4 E..V....... Main tier level 2 h2 8 E..V....... High tier level 2 m2.1 16 E..V....... Main tier level 2.1 h2.1 32 E..V....... High tier level 2.1 m3 64 E..V....... Main tier level 3 h3 128 E..V....... High tier level 3 m3.1 256 E..V....... Main tier level 3.1 h3.1 512 E..V....... High tier level 3.1 m4 1024 E..V....... Main tier level 4 h4 2048 E..V....... High tier level 4 m4.1 4096 E..V....... Main tier level 4.1 h4.1 8192 E..V....... High tier level 4.1 m5 16384 E..V....... Main tier level 5 h5 32768 E..V....... High tier level 5 m5.1 65536 E..V....... Main tier level 5.1 h5.1 131072 E..V....... High tier level 5.1 m5.2 262144 E..V....... Main tier level 5.2 h5.2 524288 E..V....... High tier level 5.2 m6 1048576 E..V....... Main tier level 6 h6 2097152 E..V....... High tier level 6 m6.1 4194304 E..V....... Main tier level 6.1 h6.1 8388608 E..V....... High tier level 6.1 m6.2 16777216 E..V....... Main tier level 6.2 h6.2 33554432 E..V....... High tier level 6.2
@无名啊,@老虎会游泳,今天在 Termux 里更新了 FFmpeg 6.0 后,发现 Android 硬件加速的 H.264 和 HEVC 编码器已经可用:
实测用 hevc_mediacodec 转码一段手机拍摄好的 4K60帧视频成功:
$ ffmpeg -hwaccel mediacodec -an -i /storage/emulated/0/DCIM/Camera/VID_20230725_194612.mp4 -c:v hevc_mediacodec /storage/emulated/0/DCIM/Camera/VID_20230725_194612_test.mp4 ...... frame= 1001 fps=106 q=-0.0 Lsize= 4558kB time=00:00:16.66 bitrate=2240.6kbits/s speed=1.76x video:4553kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.109314%
但可能是因为我转码时没有调节参数,视频画质比较模糊。
老虎还玩游戏啊
我开个挂直接无敌隐身无限蓝解锁赐福点,管他新版旧版
@怒放家族de霖,pdf24.org
有没有PDF 处理软件,免费的?
虎友高配版(绿色)
@tasy5kg,@无名啊,用模型的很看gpu,很难做到分发,以后可能会做一个调用api的