0
我有一個150幀的YUV文件,我想把它分成兩個75幀的文件。如何去做這個?有沒有什麼軟件可以做到這一點?如何分割或剪切YUV文件?
我有一個150幀的YUV文件,我想把它分成兩個75幀的文件。如何去做這個?有沒有什麼軟件可以做到這一點?如何分割或剪切YUV文件?
不需要特定的SW。您只需將與幀對應的字節數讀/寫入新文件即可。 「正常情況下」使用的YCbCr格式按照4:2:0進行二次採樣,即色度採樣在水平和垂直方向上均減小2倍;這意味着1幀中的YCbCr 4:2:0對應於
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幀到一個新的文件(每次一幀),它tweek您的需求:
#!/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)
在此命令中,如果DD = input.yuv bs = 1 count = $((1920 * 1080 * 3/2 * 10))= output.yuv 我必須給出135個num_frames才能獲得90幀的文件。爲什麼這樣? – pradeep
很可能是由於您的YCbCr文件不是4:2:0格式而是4:2:2。然後,您需要將計算更改爲'$((1920 * 1080 * 2 * 10))'。 –