我有一个树莓Pi与一个OV5647相机模块,我使用的视频流。
raspivid接受一个名为--mode, -md的命令行参数,它提供了相机可以设置使用的几种模式。
Mode Size AR Frame rates FOV Binning
0 automatic
selection
1 1920x1080 16:9 1-30fps Partial None
2 2592x1944 4:3 1-15fps Full None
3 2592x1944 4:3 0.1666-1fps Full None
4 1296x972 4:3 1-42fps Full 2x2
5 1296x730 16:9 1-49fps Full 2x2
6 640x480 4:3 42.1-60fps Full 2x2 plus skip
7 640x480 4:3 60.1-90fps Full 2x2 plus skip我宁愿有一个低框架和良好的图像质量,而不是高的FPS。
对于一个高质量的视频,我想在全高清1920x1080,但模式1的相机只给它一个部分视场,这大大减少了胶片面积,我真的需要全视场。
我想选择模式2,以便我可以在15 FPS的全高清压缩视频流。
然而,我被迫使用模式4,因为它给我的框架25个FPS。
问题如下:
raspivid -o - \
-t 0 \
-n \
-hf -vf \
-g 25 \
-pf high \
-md 4 \
-fps 25 \
-b 10000000 \
| cvlc -vvv \
stream:///dev/stdin \
--no-audio \
--sout '#standard{access=http,mux=ts,dst=:8090}' \
:demux=h264这个命令起作用了。它将摄像机设置为4模式,使用25的fps并将视频导入clvc。
当我将模式设置为2并将fps降为15时,这将不再起作用。
出于某种原因,cvlc似乎期望框架为25,记录了许多类似于
[73b02cf8] main mux warning: late buffer for mux input (17958)
[73b02cf8] main mux warning: late buffer for mux input (2025)
[73b02cf8] main mux warning: late buffer for mux input (14107)
[73b02cf8] main mux warning: late buffer for mux input (2890)
[73b02cf8] main mux warning: late buffer for mux input (20115)在开始的时候也有一条信息表明
[73b12410] main decoder debug: using packetizer module "h264"
[73e00568] main input debug: switching to sync mode
[73b088b8] h26x demux debug: using 25.00 fps所以我假设我收到了那些late buffer警告,因为raspivid发送给了几个fps,而且它对编码器来说是不够的。这段视频每隔10秒就会结冰一次,确实使它无法使用。当它移动时,它会加速。
我如何告诉h264编码器,它应该工作在15 FPS,而不是25 FPS?
发布于 2020-09-27 10:29:17
您可以通过将--h264-fps=15添加到cvlc来做到这一点。
raspivid -o - \
-t 0 \
-n \
-hf -vf \
-g 15 \
-pf high \
-md 2 \
-fps 15 \
-br 55 \
-ISO 800 \
-ae 32,0x00,0x8080FF \
-a 4 \
-a "%Y-%m-%d %X" \
-b 10000000 \
| cvlc -vvv \
stream:///dev/stdin \
--no-audio \
--demux=h264 \
--h264-fps=15 \
--sout '#standard{access=http,mux=ts,dst=:8090}'在一个树莓Pi零,你必须添加force_turbo=1到\boot\config.txt,但不设置over_voltage和arm_freq,因为这将取消保修。在没有force_turbo=1的情况下,该设备将在流媒体后冻结几个小时。
https://stackoverflow.com/questions/53280550
复制相似问题