i4tv / gstreamill

encoder with hls output based on gstreamer.
GNU General Public License v3.0
247 stars 84 forks source link

sendto segment msg error #80

Closed zhangping closed 7 years ago

zhangping commented 8 years ago

job process log:

Jan 17 07:02:53.251900 ERROR  gstreamill encoder.c:319: sendto segment msg error: Resource temporarily unavailable

dvr segment:

-rw-rw-r-- 1 root zhangping  944512 Jan 17 07:02 0153666934_2424003_5000000000.ts
-rw-rw-r-- 1 root zhangping  839044 Jan 17 07:02 0158666932_2424004_5000000000.ts
-rw-rw-r-- 1 root zhangping  909544 Jan 17 07:02 0163666943_2424005_5000000000.ts
-rw-rw-r-- 1 root zhangping  909356 Jan 17 07:02 0173666959_2424006_5000000000.ts
-rw-rw-r-- 1 root zhangping  861416 Jan 17 07:03 0178666954_2424007_5000000000.ts

missing a segment before 0173666959_2424006_5000000000.ts: 0168xxxxxxx_nnnn_xxxxx.ts

zhangping commented 8 years ago

70635b4 , 这次修改后,经调试,问题确实在这里,不过最好的修改方法是改为异步的,而不是用usleep的方法轮询等待send_msg成功

zhangping commented 8 years ago

把写分片放在独立的线程中进行,这样让dvr_record_segment线程变成非阻塞的;本来考虑用aio+eventfd+epoll,但是由于写分片调用了glib的库,处理起来比较麻烦,所以采用多线程的方法。