第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從標(biāo)準(zhǔn)輸入管道輸入時ffmpeg損壞

從標(biāo)準(zhǔn)輸入管道輸入時ffmpeg損壞

人到中年有點甜 2022-01-18 13:37:11
我有一個程序可以生成圖像并從中創(chuàng)建視頻。目前可行的是一次創(chuàng)建所有圖像,然后在子進(jìn)程中運行 FFmpeg 并通過標(biāo)準(zhǔn)輸入管道圖像以創(chuàng)建視頻:cmd = ['ffmpeg', '-y',       '-s', '{}x{}'.format(OUTPUT_WIDTH, OUTPUT_HEIGHT),       '-r', str(OUTPUT_VIDEO_FPS),       '-an',       '-pix_fmt', colour,       '-c:v', 'rawvideo', '-f', 'rawvideo',       '-i', '-',       '-vcodec', 'libx264',       '-pix_fmt', 'yuv420p',       '-preset', 'medium', OUTPUT_VIDEO_PATH]out_frames = []for i in range(num_frames):    out_frame = render_frame(...)    out_frames.append(out_frame)with _call_subprocess(sp.Popen(cmd, stdin=sp.PIPE, stderr=sp.PIPE, stdout=DEVNULL)) as pipe:    for frame_no, frame in enumerate(out_frames):        pipe.stdin.write(frame)但是,當(dāng)我有數(shù)千張無法全部放入內(nèi)存的圖像時,這變得不可行,因為子進(jìn)程 fork 調(diào)用請求了太多內(nèi)存并且失敗了。我的解決方案是在程序開始時分叉(避免內(nèi)存錯誤),然后在創(chuàng)建幀時將幀通過管道傳輸?shù)綐?biāo)準(zhǔn)輸入:cmd = ['ffmpeg', '-y',       '-s', '{}x{}'.format(OUTPUT_WIDTH, OUTPUT_HEIGHT),       '-r', str(OUTPUT_VIDEO_FPS),       '-an',       '-pix_fmt', colour,       '-c:v', 'rawvideo', '-f', 'rawvideo',       '-i', '-',       '-vcodec', 'libx264',       '-pix_fmt', 'yuv420p',       '-preset', 'medium', OUTPUT_VIDEO_PATH]with _call_subprocess(sp.Popen(cmd, stdin=sp.PIPE, stderr=sp.PIPE, stdout=DEVNULL)) as pipe:    for i in range(num_frames):        out_frame = render_frame(...)        pipe.stdin.write(out_frame)但是,ffmpeg 的輸出現(xiàn)在已損壞。我很確定這與以下事實有關(guān)到標(biāo)準(zhǔn)輸入,輸出也損壞了!cmd = ['ffmpeg', '-y',       '-s', '{}x{}'.format(OUTPUT_WIDTH, OUTPUT_HEIGHT),       '-r', str(OUTPUT_VIDEO_FPS),       '-an',       '-pix_fmt', colour,       '-c:v', 'rawvideo', '-f', 'rawvideo',       '-i', '-',       '-vcodec', 'libx264',       '-pix_fmt', 'yuv420p',       '-preset', 'medium', OUTPUT_VIDEO_PATH]out_frames = []for i in range(num_frames):    out_frame = render_frame(...)    out_frames.append(out_frame)但是我不確定是什么導(dǎo)致了這個或如何修復(fù)它(FFmpeg 是否以某種方式輪詢一個空管道然后被損壞?我不明白子進(jìn)程通信是如何工作的......)。任何幫助,將不勝感激。
查看完整描述

1 回答

?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗 獲得超8個贊

不知道為什么會這樣,但是將sp.Popen運行 FFmpeg 的調(diào)用從工作更改sp.Popen(cmd, stdin=sp.PIPE, stderr=sp.PIPE, stdout=DEVNULL)sp.Popen(cmd, stdin=sp.PIPE, stderr=DEVNULL, stdout=DEVNULL)工作。我猜這與這個關(guān)于 stderr 管道問題的問題有關(guān)


查看完整回答
反對 回復(fù) 2022-01-18
  • 1 回答
  • 0 關(guān)注
  • 266 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號