作为一个从来没做过视频处理的萌新,给我y4m格式的视频真是一脸懵逼
后来尝试了一些笨方法。。。终于至少能拿出来处理了,记录一下
y4m 格式介绍:https://wiki.multimedia.cx/index.php/YUV4MPEG2
y4m 与 yuv(yuv420 8bit planar) 互转命令:
y4mtoyuv: ffmpeg -i xx.y4m -vsync 0 xx.yuv -y
yuvtoy4m: ffmpeg -s 1920x1080 -i xx.yuv -vsync 0 xx.y4m -y
y4m 与 png 互转命令:
y4mtobmp: ffmpeg -i xx.y4m -vsync 0 xx%3d.bmp -y
bmptoy4m: ffmpeg -i xx%3d.bmp -pix_fmt yuv420p -vsync 0 xx.y4m -y
y4m 每25帧抽样命令:
ffmpeg -i xxx.y4m -vf select='not(mod(n\,25))' -vsync 0 -y xxx_sub25.y4m
为了能拿来给opencv处理,我先把y4m转成了一堆bmp图片帧,用法就是
y4mtobmp: ffmpeg -i xx.y4m -vsync 0 xx%3d.bmp -y
这里的 xx%3d.bmp 中的xx可以省略,出来就是0.bmp 1.bmp这样的文件
然后拿来处理,但是bmp转y4m的命令实在不会用。。。干脆就直接用python-opencv中的
cv2.VideoWriter()函数把图片写成avi格式,然后转成YUV,最后转成y4m。。。。方法很蠢但是有用呀哈哈 注意里面的size 是 宽x高,而图像np数组是写作 高x宽,一定要看清楚,被坑了好久。。。
利用ffmpeg常见转换的的用法就是
ffmpeg -i input.avi output.yuv
ffmpeg -s 1920x1080 -i output.yuv -vsync 0 0.y4m -y
上面的yuv可以换成各种格式
avi转gif
ffmpeg -i input.avi output.gif
博主作为视频处理萌新,面对y4m格式视频,先将其转为bmp图片帧用于opencv处理,因不会bmp转y4m命令,用python - opencv的cv2.VideoWriter()函数将图片写成avi格式,再转成YUV最后转成y4m,还提及ffmpeg常见转换用法及avi转gif。

2316

被折叠的 条评论
为什么被折叠?



