如何划分或剪切YUV文件?

时间:2014-07-09 10:21:53

标签: yuv

我有一个150帧的YUV文件,我想把它分成2个文件,每个75帧。怎么去做这个?有没有软件可以做到这一点?

2 个答案:

答案 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