ffmpeg 转码线程数的控制

转码命令

ffmpeg -threads 1 -i 1080P_daxiongtu_30fps_2D.mp4 -c:v libx264 -s 3840x2160 -b:v 20M -r 120 -profile:v high -preset veryslow -threads 1 -c:a copy -f mp4 rm.mp4 -y

这里配置 编码线程为 1 ,解码线程为 1

 

TOP 分析

通过 top 可以发现单核的 cpu 使用率到了 100%

 

PS 分析

通过 ps 查看 ffmpeg 的线程数,可以看到是一个线程

[root@bogon ~]# ps -T -p 21097
PID SPID TTY TIME CMD
21097 21097 pts/5 00:00:55 ffmpeg

 

PROC 分析

可以看到 Threads 的值为1

[root@bogon ~]# cat /proc/21097/status 
Name:	ffmpeg
State:	R (running)
Tgid:	21097
Ngid:	0
Pid:	21097
PPid:	20392
TracerPid:	0
Uid:	0	0	0	0
Gid:	0	0	0	0
FDSize:	256
Groups:	0 
VmPeak:	 3191924 kB
VmSize:	 3191924 kB
Threads:	1
SigQ:	0/61948
SigPnd:	0000000000000000

Seccomp:	0
Cpus_allowed:	ff
Cpus_allowed_list:	0-7

Mems_allowed_list:	0
voluntary_ctxt_switches:	5
nonvoluntary_ctxt_switches:	3839

 

分析

        ffmpeg 在配置单线程转码过程中是串行处理的方式,media的处理都是在主线程内完成了

        这样的架构在服务器或者是多核机器里面,就会出现cpu利用率不高的情况,发现cpu只用了30%,但是转码缺转不动的情况了;

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
FFmpeg是一个非常强大的开源音视频处理工具,但的确在对视频进行转码时会有一定的耗时。这主要是由于转码过程需要对视频的每一帧进行解码、重新编码以及处理等操作,因此会消耗较多的时间。 不过,我们可以通过一些方式来提高FFmpeg转码速度。首先,可以考虑调整一些参来提高性能,比如使用更高的压缩率以及更低的分辨率。这样可以减少转码时间,但也会对视频质量产生一定的影响。 其次,可以利用硬件加速来加快转码速度。FFmpeg支持多种硬件加速技术,比如使用图像处理器(GPU)进行加速。要使用硬件加速,需要确保你的电脑或服务器上有支持的硬件设备,并设置相应的参。 另外,可以使用多线程处理来提高转码速度。FFmpeg可以通过设置来启用多线程,使得转码过程可以同时处理多个帧。这样可以更好地利用计算资源,加快转码速度。 此外,还可以考虑使用其他的转码工具来提高速度。虽然FFmpeg功能强大,但也有一些其他的工具,如Handbrake等,提供了更快速的转码速度。可以尝试使用这些工具来进行转码,以提高效率。 总之,虽然FFmpeg转码速度较慢,但我们可以通过调整参、利用硬件加速、使用多线程处理以及尝试其他转码工具等方式来提高速度。根据具体的需求和条件,选择合适的方法可以有效地提升转码效率。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值