亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

問個額外的問題,jpg序列組合成一個視頻有什么好方法?

問個額外的問題,jpg序列組合成一個視頻有什么好方法?

iOS
四季花海 2023-05-02 14:10:11
小生最近做個產品 socket通信,對這塊了解甚少,同樣對C也了解甚少。把需要的功能實現了,但是異常方面總覺得應該做些什么,但不了解有什么地方需要實現。服務器過來的是逐楨圖片,大概的實現流程,使用的AsyncSocket,服務器發送數據量,先放入NSMutableData *totalData中,每過來一個數據就appendData,加入到totalData里面,然后到數據模塊里面對16進制數據進行處理,得到一張完整的圖片后將其從toatlData中使用subdataWithRange將其remove.因為測試環境也是我自個搭建的,不知道正常使用下會有多少異常,我有幾個疑惑的地方: 1,我沒實現ringbuffer,直接通過NSMutableData來處理,這個會有影響不? 2,對于數據的接受方面,直接append會不會有數據錯位的情況,對于數據的部分丟失一般是直接remove掉還是保留? 3,每接受到一次數據才處理一次。也就是說每響應一次socket的delegate才處理一次數據會不會太慢?- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
查看完整描述

2 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

1,關于接收數據那塊,didReadData的delegate中用一個NSMutableData即可,接收到數據后先判斷,看是否需要使用appendData加入進來,如果剛好讀取完一個完整的數據,先copy出來去操作,并將NSMutableData設置為nil,下一個數據進來重新初始化并添加。這樣保證內存中最多只有一個完整的數據。 而且處理完就得繼續readData。

2,關于數據的容錯,是否完整這個就得根據文件楨頭來進行判斷,客戶端自己決定如何丟棄。

3,實際上接收的速度是和服務器發送的速度相關的,服務器控制發送時間間隔即可。客戶端就得不斷的讀取,操作。

最后如何組合圖片序列為視頻 使用AVAssetWriter即可,可以控制每秒多少張,包括儲存的格式,沒必要去使用ffmpeg或者自己寫數據頭。


查看完整回答
反對 回復 2023-05-05
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

你發送端就要序列化數據,接收端就不會錯位的。一般情況下是不會產生錯位的。每次接收數據你可以計算NSData的大小的,不需要使用什么subdataWithRange,最好的好就是使用append。delegate這個是接收到一定的長度或者小于這個長度就會delegate。如果數據量很大的話,會產生分成很多個數據包傳輸。所以一次delegate有可能不是一個完整的數據

查看完整回答
反對 回復 2023-05-05
  • 2 回答
  • 0 關注
  • 341 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號