本文介绍了ffmpeg输出中的fps是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在用ffmpeg流式传输一个静态png文件,它基本上使用了我的所有CPU.对我来说似乎有点贪婪,即使我将fps限制在输入和输出大小上,我仍然看到打印出了巨大的fps.

I am streaming a static png file with ffmpeg and it uses basically all my CPU. It seems a bit greedy to me, and even though I limited the fps on the input and output size, I am seeing a huge fps printed out.

w:\ffmpeg\bin>ffmpeg.exe -loop 1 -framerate 1 -i w:\colorbar2.png -r 10 -vcodec libx264 -pix_fmt yuv420p -r 10 -f mpegts udp://127.0.0.1:10001?pkt_size=1316
ffmpeg version N-68778-g5c7227b Copyright (c) 2000-2014 the FFmpeg developers
  built on Dec 29 2014 22:12:54 with gcc 4.9.2 (GCC)

Input #0, png_pipe, from 'w:\colorbar2.png':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: png, pal8, 320x240 [SAR 3779:3779 DAR 4:3], 1 fps, 1 tbr, 1 tbn, 1 tbc
[libx264 @ 00000000002fb320] using SAR=1/1
[libx264 @ 00000000002fb320] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 00000000002fb320] profile High, level 1.2
Output #0, mpegts, to 'udp://127.0.0.1:10001?pkt_size=1316':
  Metadata:
    encoder         : Lavf56.16.102
    Stream #0:0: Video: h264 (libx264), yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 10 fps, 90k tbn, 10 tbc
    Metadata:
      encoder         : Lavc56.19.100 libx264
Stream mapping:
  Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Press [q] to stop, [?] for help
frame=561310 fps=579 q=25.0 size=  144960kB time=15:35:25.80 bitrate=  21.2kbits/s dup=505179 drop=0

如您所见,帧计数器快速上升,并且在最后一行报告 fps = 579 .我现在很困惑,如果还提到每秒低帧以上(输出10fps,输入1 fps),那么fps意味着什么?

As you can see the frame counter goes up quickly and fps=579 is reported on the last line. I am confused now, what does that fps mean, if above the low frame per secs are also mentioned (output 10fps, input 1 fps)

我在做错什么,并且鉴于正在传输的是静态文件,我该如何进一步降低CPU负载.

What am I doing wrong and how could I reduce CPU load more given that it's a static file that is being streamed.

谢谢!

推荐答案

ffmpeg 尝试尽可能快地进行解码和编码.仅仅因为将输出设置为每秒10帧并不意味着它将以每秒10帧的速度实时(解码).

ffmpeg attempts to decode and encode as fast as it can. Just because you set the output to be 10 frames per second does not mean that it will (de|en)code realtime at 10 frames per second.

尝试使用 -re 输入选项.从 ffmpeg cli-tool文档:

Try the -re input option. From the ffmpeg cli-tool documentation:

示例:

ffmpeg.exe -re -loop 1 -framerate 10 -i w:\colorbar2.png -c:v libx264 \
-tune stillimage -pix_fmt yuv420p -f mpegts udp://127.0.0.1:10001?pkt_size=1316

这篇关于ffmpeg输出中的fps是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-26 11:21
查看更多