【发布时间】:2017-03-10 14:18:54
【问题描述】:
我知道一个流以特定帧速率 (30 FPS) 输出。我想使用 ffmpeg 复制这个流并将其保存到磁盘。
我有以下命令:
ffmpeg -i http://input/ -c copy -map 0 \
-f segment -strftime 1 -segment_time 900 \
-segment_atclocktime 1 -segment_format mp4 %Y-%m-%d_%H-%M-%S.mp4
但是当我运行命令时,我看到以下内容:
frame= 32 fps=3.9 q=-1.0 Lsize=N/A time=00:00:01.27 bitrate=N/A
FPS 似乎徘徊在 ~4.0 FPS 左右,time 的移动速度比实时慢。
我尝试在输入文件之前添加-re(复制输入流的速率)和-r 30(手动将速率设置为30 FPS)标志,但似乎不起作用。
我还使用-framerate 30 阅读了a similar question here,但该选项在手册页中不存在并且是Invalid option。
任何帮助将不胜感激!
所以我让修改后的命令(删除标志-c copy -map 0)运行了整整 5 分钟。运行ffprobe 产生:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2017-03-10_01-09-12.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.2.100
Duration: 00:00:15.43, start: 0.066016, bitrate: 13416 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1024x768, 13414 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
同样,这只产生 15 秒的视频,我似乎无法在 30 FPS 的输入流和同样以 30 FPS 的实时输出流之间获得 1:1 的关系。播放视频会加快速度。
【问题讨论】: