作者sorkayi (寻找奶昔)
看板LinuxDev
标题Re: [问题] 程式启动流程出错
时间Sun Nov 9 22:56:19 2014
板上各位大大好
目前已经有找到问题发生的可能地点了
目前发现 压缩成 H.264 那部分是没有问题的
主要发生原因是在档案写入至 硬碟的部分出错了
但是就是不知道为什麽会出错
只要在开档时 open 加入 O_SYNC 就能成功将影格写入
但由於 IO 动作太慢了 导致撷取的影格漏掉了
不知道有没有什麽方法可以 提高写入速度
原本只利用 Linux 原本的快取空间来写入就会出现破图问题
不知道 Linux 在登入动作时会有做一些 IO 相关的处理吗
感谢各位大大 >///<
※ 引述《sorkayi (寻找奶昔)》之铭言:
: 板上大大安安
: 最近我在 TI 的开发板上做了影像撷取转 H264 再存入硬碟中
: 如果我的所写的程式是利用手动启动的(./xxxxxx &)
: 录影出来的影像就不会破图
: 但若是透过 init.d/rcS 来开启程式
: 录出来的影像就会有一小段出现破图
: 不知道板上大大有没有什麽建议 @@
: 能够自动开启程式 又不会出现破图情形
: 感谢各位的阅读....
--
公告
D.
#1ByBycco (DSLR) [ptt.cc] [作品] 台湾山
→ sorkayi :白目 05/17 14:52
D.骂人白目违反 3-4 人身攻击相关规定,sorkayi 警告一次。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.2.251
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1415544983.A.4C8.html
1F:推 askacis: Linux IO调整的部分可以google dirty ratio 11/09 23:43
2F:→ askacis: 可以调整磁碟IO与记忆体cache的运用,比O_SYNC来的温和 11/09 23:46
3F:推 askacis: 又或者你可以把写入动作开成独立thread,用两个buffer 11/09 23:49
4F:→ askacis: 轮流切换避免waiting I/O之类的方式看看 11/09 23:50
5F:推 askacis: 太即时写入或是过依赖Cache到最後out of memory都有可能~ 11/09 23:52
感谢
目前的做法就是利用 thread 来将 buffer 资料写入硬碟中
影像Buf->压缩H264->压缩Buf->写入硬碟
这边都是同时开 thread 来做的 後来才发现写入时会有出错
※ 编辑: sorkayi (36.235.91.159), 11/10/2014 08:51:23
6F:→ carylorrk: 同时开 thread 的意思是? 11/10 12:47
7F:→ carylorrk: 各开一条 thread ,用 producer consumer 往下传吗? 11/10 12:50
没错中间再透过 Buff 缓冲 但目前查到是写入硬碟部分有出错了
因此有利用 fdatasync 来同步是没看到破图
但心里就是毛毛的
※ 编辑: sorkayi (36.235.91.159), 11/10/2014 17:11:37