使用ffmpeg在流上自动显示方面
目前,我尝试通过以下配置每秒从udp流获取一个映像:使用ffmpeg在流上自动显示方面,ffmpeg,scale,aspect,Ffmpeg,Scale,Aspect,目前,我尝试通过以下配置每秒从udp流获取一个映像: ffmpeg -i udp://localhost:1234 -vf "scale=iw*sar:ih , pad=max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2" -aspect 16:9 -update 1 img.jpg Metadata: encoder : Lavf57.83.100 Stream #0:0: Video: mjpeg, yuv
ffmpeg -i udp://localhost:1234 -vf "scale=iw*sar:ih , pad=max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2" -aspect 16:9 -update 1 img.jpg
Metadata:
encoder : Lavf57.83.100
Stream #0:0: Video: mjpeg, yuvj420p(pc), 1024x576 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc57.107.100 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
如果流的第一帧为4:3,则会将黑色边框添加到输出图像中。如果纵横比在流中从4:3更改为16:9,则输出图像仍包含黑色broder,并且边框之间的图像纵横比为4:3
如果在纵横比为16:9时重新启动ffmpeg,将从输出中删除边框,输出图像看起来很好
在控制台中,我获得了有关流的方面更改的以下日志:
[swscaler @ 0x7fc6b1035600] deprecated pixel format used, make sure you did set range correctly
是否有任何选项可以解决此问题。设置过滤器以计算每个帧的表达式
ffmpeg -i udp://localhost:1234 \
-vf "scale=iw*sar:ih:eval=frame,setsar=1,\
pad=max(iw\,ih*(16/9)):ow/(16/9):(ow-iw)/2:(oh-ih)/2:eval=frame" \
-aspect 16:9 -update 1 img.jpg