本文共 861 字,大约阅读时间需要 2 分钟。
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 可以发现单核的 cpu 使用率到了 100%
通过 ps 查看 ffmpeg 的线程数,可以看到是一个线程
[root@bogon ~]# ps -T -p 21097PID SPID TTY TIME CMD21097 21097 pts/5 00:00:55 ffmpeg
可以看到 Threads 的值为1
[root@bogon ~]# cat /proc/21097/status Name: ffmpegState: R (running)Tgid: 21097Ngid: 0Pid: 21097PPid: 20392TracerPid: 0Uid: 0 0 0 0Gid: 0 0 0 0FDSize: 256Groups: 0 VmPeak: 3191924 kBVmSize: 3191924 kBThreads: 1SigQ: 0/61948SigPnd: 0000000000000000Seccomp: 0Cpus_allowed: ffCpus_allowed_list: 0-7Mems_allowed_list: 0voluntary_ctxt_switches: 5nonvoluntary_ctxt_switches: 3839
ffmpeg 在配置单线程转码过程中是串行处理的方式,media的处理都是在主线程内完成了
这样的架构在服务器或者是多核机器里面,就会出现cpu利用率不高的情况,发现cpu只用了30%,但是转码缺转不动的情况了;
转载地址:http://jrfli.baihongyu.com/