我有一个150帧的YUV文件,我想把它分成2个文件,每个75帧。怎么去做这个?有没有软件可以做到这一点?
答案 0 :(得分:4)
不需要特定的SW。您需要做的就是将与帧对应的字节数读/写到新文件中。 “通常”使用的YCbCr格式根据4:2:0进行二次采样,即色度样本在水平和垂直方向上减少2倍;意味着YCbCr 4:2:0中的1帧对应于
1 frame = width x height x 3 / 2 bytes
如果您使用的是基于Linux的系统,则可以使用dd
实用程序将前n帧提取到新文件中,如下所示:
dd if=input.yuv bs=1 count=$((width*height*3/2*num_frames)) of=output.yuv
对于1080p剪辑的前10帧,上面将是:
dd if=input.yuv bs=1 count=$((1920*1080*3/2*10)) of=output.yuv
或
dd if=input.yuv bs=1 count=3110400 of=output.yuv
或使用您喜欢的编程/脚本语言来执行此操作。
例如,以下python脚本将前10帧写入新文件(一次一帧),根据需要进行调整:
#!/usr/bin/env python
f_in = 'BQMall_832x480_60.yuv'
f_out = 'BQMall_first_10_frames.yuv'
f_size = 832*480*3/2
with open(f_in, 'rb') as fd_in, open(f_out, 'wb') as fd_out:
for i in range(10):
data = fd_in.read(f_size)
fd_out.write(data)
答案 1 :(得分:0)
我建议“不要使用bs = 1
”
dd if=176x144.yuv bs= $((176 * 144 * 3 / 2)) count=$FrameNo of=output.yuv