i4TV
Data structure - sorted sets:
key: stroke series field: hanzi value: weight
encoder with hls output based on gstreamer.
License: GNU General Public License v3.0
i4TV
Data structure - sorted sets:
key: stroke series field: hanzi value: weight
43798 ? Sl 5127:41 \_ /usr/bin/gstreamill -l /var/log/gstreamill -n Q0NUVi0y -q 4154
43799 ? Sl 5155:28 \_ /usr/bin/gstreamill -l /var/log/gstreamill -n Q0NUVi01 -q 4154
43800 ? Sl 5028:38 \_ /usr/bin/gstreamill -l /var/log/gstreamill -n Q0NUVi00 -q 4154
43801 ? Sl 4872:54 \_ /usr/bin/gstreamill -l /var/log/gstreamill -n Q0NUVi0x -q 4208
44085 ? S 0:00 \_ /usr/bin/gstreamill -l /var/log/gstreamill -n Q0NUVi0z -q 4154
subprocess log:
9076 Nov 16 19:47:15.435173 WARN gstreamill source.c:710: encoder stream video can not catch up source output.
9077 Nov 16 19:47:15.440641 WARN videodecoder gstvideodecoder.c:2365: decreasing timestamp (26:30:41.441037796 < 5124095:34:30.592897632)
9078 Nov 16 19:47:15.975623 WARN videodecoder gstvideodecoder.c:2365: decreasing timestamp (26:30:41.921037796 < 5124095:34:31.032897632)
9079 Nov 16 19:47:16.434490 WARN videodecoder gstvideodecoder.c:2365: decreasing timestamp (26:30:42.401037958 < 5124095:34:31.472897632)
9080 Nov 16 19:47:16.899478 WARN videodecoder gstvideodecoder.c:2365: decreasing timestamp (26:30:42.881040092 < 5124095:34:31.912897632)
9081 Nov 16 19:47:17.424976 WARN videodecoder gstvideodecoder.c:2365: decreasing timestamp (26:30:43.361041868 < 5124095:34:32.352897632)
9082 Nov 16 19:47:18.275650 WARN gstreamill job.c:799: Set source pipeline to play state ok
9083 Nov 16 19:47:18.280427 WARN gstreamill job.c:822: Set encoder encoder.0 to play state ok
9084 Nov 16 19:47:18.285469 WARN gstreamill job.c:822: Set encoder encoder.1 to play state ok
9085 Nov 16 19:47:18.286736 WARN gstreamill job.c:825: Set job CCTV-3 to play state ok
9086 Nov 16 19:47:18.287210 WARN gstreamill main.c:357: livejob CCTV-3 starting ...
9087 Nov 16 19:47:18.352677 WARN default descriptions.c:612: Unexpected MPEG-1 layer in audio/mpeg, mpegversion=(int)1
9088 Nov 16 19:47:18.364753 WARN default descriptions.c:612: Unexpected MPEG-1 layer in audio/mpeg, mpegversion=(int)1
9089 Nov 16 19:47:18.374080 WARN default descriptions.c:612: Unexpected MPEG-1 layer in audio/mpeg, mpegversion=(int)1
9090 Nov 16 19:47:18.393448 WARN default descriptions.c:612: Unexpected MPEG-1 layer in audio/mpeg, mpegversion=(int)1
9091 Nov 16 19:47:18.404053 WARN default descriptions.c:612: Unexpected MPEG-1 layer in audio/mpeg, mpegversion=(int)1
9092 Nov 16 19:47:18.423645 WARN default descriptions.c:612: Unexpected MPEG-1 layer in audio/mpeg, mpegversion=(int)1
9093 Nov 16 19:47:18.433961 WARN default descriptions.c:612: Unexpected MPEG-1 layer in audio/mpeg, mpegversion=(int)1
9094 Nov 16 19:47:18.897408 WARN videodecoder gstvideodecoder.c:2365: decreasing timestamp (0:00:00.782786642 < 0:00:00.822786642)
9095 Nov 16 19:47:19.361947 WARN videodecoder gstvideodecoder.c:2365: decreasing timestamp (0:00:01.262767076 < 0:00:01.262786642)
9096 Nov 16 19:47:56.647030 WARN gstreamill source.c:710: encoder stream audio can not catch up source output.
9097 Nov 16 19:47:58.302053 WARN gstreamill source.c:710: encoder stream audio can not catch up source output.
9098 Nov 16 19:47:59.588322 WARN gstreamill source.c:710: encoder stream audio can not catch up source output.
9099 Nov 16 19:48:01.234969 WARN gstreamill source.c:710: encoder stream audio can not catch up source output.
main process log:
4748 Nov 16 19:47:31.689968 ERROR gstreamill gstreamill.c:551: /var/lib/gstreamill/dvr/CCTV-5/1/13*.ts
4749 Nov 16 19:48:01.791698 ERROR gstreamill gstreamill.c:383: CCTV-3.encoder.0.audio heartbeat error 7427142290, restart
4750 Nov 16 19:48:01.791912 WARN gstreamill gstreamill.c:297: Restart job CCTV-3, pid 43797.
4751 Nov 16 19:48:01.857299 ERROR gstreamill gstreamill.c:783: Live job CCTV-3 exit on an unhandled signal, restart.
4752 Nov 16 19:48:01.870754 ERROR gstreamill gstreamill.c:786: Restart job CCTV-3 success
4753 Nov 16 19:57:31.239949 ERROR gstreamill gstreamill.c:551: /var/lib/gstreamill/dvr/CCTV-1/0/141605264*.ts
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/local/bin/gstreamill'.
Program terminated with signal SIGBUS, Bus error.
#0 encoder_stat (encoder=0x7f6e50019800) at gstreamill.c:1162
1162 time = gst_date_time_new_from_unix_epoch_local_time (stat->last_heartbeat/GST_SECOND);
(gdb) bt
#0 encoder_stat (encoder=0x7f6e50019800) at gstreamill.c:1162
#1 0x0000000000409d87 in encoders_stat (job=0x7f6e5001c030) at gstreamill.c:1206
#2 gstreamill_job_stat (gstreamill=<optimized out>, uri=uri@entry=0x2bb7918 "/stat/gstreamill/job/CCTV-4A") at gstreamill.c:1303
#3 0x0000000000414de7 in request_gstreamill_stat (request_data=0x2bab0d0, httpmgmt=0x21b49c0) at httpmgmt.c:239
#4 httpmgmt_dispatcher (data=0x2bab0d0, user_data=0x21b49c0) at httpmgmt.c:843
#5 0x000000000040a915 in invoke_user_callback (http_server=0x2849d90, request_data_pointer=0x284a060) at httpserver.c:746
#6 0x00007f6e6d42889c in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#7 0x00007f6e6d427f15 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#8 0x00007f6e6cd3c182 in start_thread (arg=0x7f6e5eff5700) at pthread_create.c:312
#9 0x00007f6e6c82330d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
Use last version gstreamill-0.5.3-alt2 from tag 0.5.3
[slava@dubrwork ~]$ rpm -qa | grep gst | grep '1.0' |sort
gst-plugins1.0-tools-1.4.3-alt1
gst-plugins-bad1.0-1.4.3-alt1
gst-plugins-bad1.0-doc-1.4.3-alt1
gst-plugins-base1.0-1.4.3-alt1
gst-plugins-good1.0-1.4.3-alt1
gst-plugins-good1.0-devel-doc-1.4.3-alt1
gst-plugins-nice1.0-0.1.4-alt1
gst-plugins-ugly1.0-1.4.3-alt1
gst-plugins-ugly1.0-devel-doc-1.4.3-alt1
gstreamer1.0-1.4.3-alt1
gstreamer1.0-utils-1.4.3-alt1
libgst-plugins1.0-1.4.3-alt1
libgst-plugins1.0-gir-1.4.3-alt1
libgstreamer1.0-1.4.3-alt1
libgstreamer1.0-gir-1.4.3-alt1
When I create test job and any job from examples folder I get the error:
окт 24 10:05:49.944839 ERROR gstreamill jobdesc.c:27: parse job error
The job config:
{
"name": "test1",
"type": "testsrc",
"source": {
"elements": {
"videotestsrc": {
"caps": "video/x-raw,width=720,height=576,framerate=25/1"
},
"audiotestsrc": {
"property": {
"wave": 8
}
}
},
"bins": [
"videotestsrc ! appsink name=video",
"audiotestsrc ! appsink name=audio"
]
},
"encoders": [],
"m3u8streaming": {
"version": 3,
"window-size": 10,
"segment-duration": 3
}
}
Seems it's bug.
Use last build from be8a842 . Create 2 jobs based on examples/ip.job
When run second job, first and second stop working and restart every 5-10sec.
Log from second job
*** Dec 01 19:52:26 : job ip102 starting ***
Dec 01 19:52:26.633062 FIXME default gstutils.c:3636: Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Dec 01 19:52:26.633345 FIXME default gstutils.c:3636: Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Dec 01 19:52:26.634766 FIXME default gstutils.c:3636: Creating random stream-id, consider implementing a deterministic way of creating a stream-id
*** Dec 01 19:52:26 : job ip102 started ***
Dec 01 19:52:26.635095 FIXME default gstutils.c:3636: Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Dec 01 19:52:26.680282 WARN mpegtsbase mpegtsbase.c:526: Stream already present !
Dec 01 19:52:26.680382 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:26.691928 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:26.696734 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:26.750065 WARN mpegtsbase mpegtsbase.c:526: Stream already present !
Dec 01 19:52:26.750134 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:26.753768 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:26.754564 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:26.799087 WARN mpegtsbase mpegtsbase.c:526: Stream already present !
Dec 01 19:52:26.799285 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:26.816654 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:26.875771 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:26.878910 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:26.938997 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:26.983895 WARN mpegtsbase mpegtsbase.c:526: Stream already present !
Dec 01 19:52:26.983990 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:26.984067 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:26.993414 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:27.9146 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:27.39912 WARN mpegtsbase mpegtsbase.c:526: Stream already present !
Dec 01 19:52:27.40009 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:27.40071 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:27.66241 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:27.108363 WARN mpegtsbase mpegtsbase.c:526: Stream already present !
Dec 01 19:52:27.108465 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:27.108574 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:27.116179 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:27.176243 WARN mpegtsbase mpegtsbase.c:526: Stream already present !
Dec 01 19:52:27.176350 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:27.179525 ERROR mpegtsbase mpegtsbase.c:983: Attempted to apply a PMT on a program that wasn't created
Dec 01 19:52:27.182947 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:27.238134 WARN mpegtsbase mpegtsbase.c:526: Stream already present !
Dec 01 19:52:27.238298 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
Dec 01 19:52:27.238406 WARN tsdemux tsdemux.c:1300: Didn't get the first packet of this PES
In master I see, that all configs moved to /usr/share. It seems not good place. Propose make such folder structure:
/etc/gstreamill/gstreamill.conf - main config. RW for group
/etc/gstreamill/jobs.d - config for jobs. RW for group
/var/lib/gstreamill - place for dvr and transcode. RW for group
/usr/share/gstreamill - place for admin interface. RO
What do you think?
sudo gdb src/gstreamill
GNU gdb (GDB) 7.6.1-ubuntu
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/...
Reading symbols from /home/dqzhangp/workdir/gstreamill/src/gstreamill...done.
(gdb) r --gst-debug=gstreamill:4 -m 10081 -a 10080 -j examples/test.job
Starting program: /home/dqzhangp/workdir/gstreamill/src/gstreamill --gst-debug=gstreamill:4 -m 10081 -a 10080 -j examples/test.job
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0:00:00.021903574 3066 0x7a8490 WARN gstreamill main.c:265:main: gstreamill started ...
[New Thread 0x7ffff5ba0700 (LWP 3070)]
[New Thread 0x7ffff7fef740 (LWP 3071)]
Program received signal SIGSEGV, Segmentation fault.
__GI_____strtol_l_internal (nptr=0x0, endptr=endptr@entry=0x0, base=base@entry=10, group=group@entry=0, loc=0x7ffff6d0d040 <_nl_global_locale>)
at ../stdlib/strtol_l.c:298
298 ../stdlib/strtol_l.c: No such file or directory.
(gdb) bt
#0 __GI_____strtol_l_internal (nptr=0x0, endptr=endptr@entry=0x0, base=base@entry=10, group=group@entry=0, loc=0x7ffff6d0d040 <_nl_global_locale>)
at ../stdlib/strtol_l.c:298
#1 0x00007ffff69881b2 in __GI_strtol (nptr=, endptr=endptr@entry=0x0, base=base@entry=10) at ../stdlib/strtol.c:109
#2 0x0000000000411bc3 in atoi (__nptr=) at /usr/include/stdlib.h:280
#3 httpstreaming_start (httpstreaming=0x7a8610, maxthreads=maxthreads@entry=10) at httpstreaming.c:506
#4 0x0000000000406283 in main (argc=1, argv=0x7fffffffe508) at main.c:275
with "push-server-uri" : "http://192.168.7.84/cctv1" and nginx webdav not start will cause gstreamill crash:
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `src/gstreamill --gst-debug=gstreamill:4'.
Program terminated with signal 11, Segmentation fault.
#0 ___fprintf_chk (fp=fp@entry=0x0, flag=flag@entry=1, format=format@entry=0x419e66 "%s %s%s %s:%d: %s\n") at fprintf_chk.c:31
31 fprintf_chk.c: No such file or directory.
(gdb) bt
#0 ___fprintf_chk (fp=fp@entry=0x0, flag=flag@entry=1, format=format@entry=0x419e66 "%s %s%s %s:%d: %s\n") at fprintf_chk.c:31
#1 0x0000000000412459 in fprintf (__fmt=0x419e66 "%s %s%s %s:%d: %s\n", __stream=0x0) at /usr/include/x86_64-linux-gnu/bits/stdio2.h:97
#2 log_func (category=, level=, file=0x419438 "encoder.c", function=, line=795, object=,
message=0x7f2c1fff6bb0, user_data=0xd23660) at log.c:147
#3 0x00007f2d3926dcdc in gst_debug_log_valist () from /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#4 0x00007f2d3926de47 in gst_debug_log () from /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#5 0x000000000040f581 in encoder_output_rap_timestamp (encoder_output=encoder_output@entry=0x7f2d1c013a98, rap_addr=4197356) at encoder.c:795
#6 0x0000000000410158 in notify_function (sv=sv@entry=...) at job.c:631
#7 0x00007f2d38ac2d4f in notification_function (arg=) at ../nptl/sysdeps/unix/sysv/linux/mq_notify.c:106
#8 0x00007f2d388a8f6e in start_thread (arg=0x7f2c1fff7700) at pthread_create.c:311
#9 0x00007f2d383919cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
ab -n 10000 -c 100 http://192.168.1.102:20119/live/cctv2/encoder/0/playlist.m3u8 cause gstreamill main process crash
948 ? Ssl 748:25 src/gstreamill --gst-debug=gstreamill:4
24095 ? Sl 292:02 _ /home/zhangping/workdir/gstreamill/src/gstreamill -l /var/log/gstreamill -n cctv6 -q 3556 --gst-debug=gstreamill:4
16310 ? Sl 65:42 _ /home/zhangping/workdir/gstreamill/src/gstreamill -l /var/log/gstreamill -n cctv8 -q 3556 --gst-debug=gstreamill:4
16377 ? Sl 65:28 _ /home/zhangping/workdir/gstreamill/src/gstreamill -l /var/log/gstreamill -n cctv1 -q 3560 --gst-debug=gstreamill:4
17003 ? Sl 62:54 _ /home/zhangping/workdir/gstreamill/src/gstreamill -l /var/log/gstreamill -n cctv5 -q 3556 --gst-debug=gstreamill:4
18952 ? Sl 132:41 _ /home/zhangping/workdir/gstreamill/src/gstreamill -l /var/log/gstreamill -n cctv7 -q 3610 --gst-debug=gstreamill:4
19079 ? Sl 62:46 _ /home/zhangping/workdir/gstreamill/src/gstreamill -l /var/log/gstreamill -n cctv2 -q 3583 --gst-debug=gstreamill:4
Raspberry Pi
subprocess log:
gstreamill source.c:225: source error found: No valid frames found before end of stream, exit
udp进udp出,标清电视转码,播放一段时间后界面死掉,但是工作进程还占用cpu和内存资源,无法恢复,只能杀掉进程并删除pid文件服务才能重启,但是该udp任务就不能重新启用。
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/home/zhangping/workdir/gstreamill/src/gstreamill -l /var/log/gstreamill -n cct'.
Program terminated with signal 11, Segmentation fault.
#0 __memcpy_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1474
1474 ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: No such file or directory.
(gdb) bt
#0 __memcpy_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1474
#1 0x000000000040e632 in memcpy (__len=18446744073709551612, __src=0x7f97e7ffe84c, __dest=)
at /usr/include/x86_64-linux-gnu/bits/string3.h:51
#2 move_last_rap (encoder=encoder@entry=0x1616980, buffer=buffer@entry=0x7f97e0054d20) at encoder.c:227
#3 0x000000000040fbf6 in new_sample_callback (sink=, user_data=0x1616980) at encoder.c:345
#4 0x00007f9807e28806 in ?? () from /usr/lib/x86_64-linux-gnu/libgstapp-1.0.so.0
#5 0x00007f980696dfc0 in ?? () from /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0
#6 0x00007f980696f524 in ?? () from /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0
#7 0x00007f9807b80baa in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#8 0x00007f97fac24d42 in ?? () from /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstcoreelements.so
#9 0x00007f9807bae189 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#10 0x00007f980763bab6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007f980763b0f5 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x00007f98071b0f6e in start_thread (arg=0x7f97e7fff700) at pthread_create.c:311
#13 0x00007f9806c999cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
flush log buffer before terminate process
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-TARGETDURATION:10
#EXTINF:10,ciao
segment00000.ts
#EXTINF:10,ciao
it can't be played normally use vlc.
in daemon mode, start invalid job cause it cant be clear from job list, start it again, gstreamill tell you failure for duplicate.
clean /dev/shm and mq before start gstreamill in upstart job and systemd service unit.
after gstreamill crash, there are files unclean in /dev/shm and mq filesystem, which make start subprocess failure.
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `gstreamill'.
Program terminated with signal 6, Aborted.
#0 0x00007fb473f79f77 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007fb473f79f77 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007fb473f7d5e8 in __GI_abort () at abort.c:90
#2 0x00007fb473fb74fb in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7fb4740c8f10 "*** %s ***: %s terminated\n")
at ../sysdeps/unix/sysv/linux/libc_fatal.c:199
#3 0x00007fb47405508c in __GI___fortify_fail (msg=<optimized out>, msg@entry=0x7fb4740c8ea7 "buffer overflow detected") at fortify_fail.c:37
#4 0x00007fb474054020 in __GI___chk_fail () at chk_fail.c:28
#5 0x000000000040f1b8 in memcpy (__len=<optimized out>, __src=<optimized out>, __dest=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/string3.h:51
#6 encoder_output_rap_timestamp (encoder_output=0xa4a, encoder_output@entry=0x7fb458011250, rap_addr=2641, rap_addr@entry=18446744071559692473)
at encoder.c:760
#7 0x000000000041275e in get_mpeg2ts_segment (encoder_output=0x7fb458011250, request_data=0x21adbb0) at httpstreaming.c:311
#8 httpstreaming_dispatcher (data=0x21adbb0, user_data=0x1e806a0) at httpstreaming.c:440
#9 0x000000000040b728 in thread_pool_func (data=0x1e896a8, user_data=0x1e89400) at httpserver.c:803
#10 0x00007fb4749dfaa6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007fb4749df0e5 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x00007fb474554f6e in start_thread (arg=0x7fb46bfff700) at pthread_create.c:311
#13 0x00007fb47403d9cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `src/gstreamill'.
Program terminated with signal 11, Segmentation fault.
#0 0x000000000040761f in child_watch_cb (pid=22361, status=, livejob=0x7fc0140029f0) at gstreamill.c:674
674 *(livejob->output->state) = GST_STATE_NULL;
(gdb) bt
#0 0x000000000040761f in child_watch_cb (pid=22361, status=, livejob=0x7fc0140029f0) at gstreamill.c:674
#1 0x00007fc03088e424 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fc0308913b6 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007fc030891708 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4 0x00007fc030891b0a in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5 0x0000000000406676 in main (argc=1, argv=0x7fffbbed4d88) at main.c:308
Wed Dec 18 19:57:01 2013: INFO gstreamill gstreamill.c:830: live job arrived.
Wed Dec 18 19:57:01 2013: ERROR gstreamill gstreamill.c:737: Start livejob test error, reason: Failed to create pipe for communicating with child process (Too many open files).
create_livejob_process failure is ignore
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/local/bin/gstreamill -l /var/log/gstreamill -n cctv21 -q 3151 --gst-debug='.
Program terminated with signal 11, Segmentation fault.
#0 __memcpy_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1474
1474 ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: No such file or directory.
(gdb) bt
#0 __memcpy_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1474
#1 0x000000000040e1f2 in move_last_rap (encoder=0x76d8d0, buffer=0x7fa5640fa5e0) at encoder.c:226
#2 0x000000000040f5d6 in udp_streaming (buffer=0x7fa5640fa5e0, encoder=0x76d8d0) at encoder.c:299
#3 encoder_appsink_callback (sink=<optimized out>, user_data=0x76d8d0) at encoder.c:357
#4 0x00007fa58a4e7806 in ?? () from /usr/lib/x86_64-linux-gnu/libgstapp-1.0.so.0
#5 0x00007fa58902cfc0 in ?? () from /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0
#6 0x00007fa58902e524 in ?? () from /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0
#7 0x00007fa58a23fbaa in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#8 0x00007fa57f4c1d42 in ?? () from /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstcoreelements.so
#9 0x00007fa58a26d189 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#10 0x00007fa589cfaab6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007fa589cfa0f5 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x00007fa58986ff6e in start_thread (arg=0x7fa5737fe700) at pthread_create.c:311
#13 0x00007fa5893589cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
subprocess do not dump core
When I play stream by ffplay or avplay I get a lot of messages like:
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473409041, dts=473409048, size=944
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473405441, dts=473412638, size=1071
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473416234, dts=473419840, size=1016
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473423437, dts=473427031, size=713
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473430628, dts=473434226, size=1207
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473437824, dts=473441430, size=1298
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473445026, dts=473448620, size=1918
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473452219, dts=473459416, size=1145
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473463015, dts=473466612, size=1240
[mpegts @ 0x7f5e48005b60] Invalid timestamps stream=0, pts=473470207, dts=473473814, size=1761
Audio only m3u8 output support
For stream via UDP used section
"udpstreaming" : "127.0.0.1:22345"
How can add other options to udpsink ?
For example bind-address or multicast-iface ?
channel log:
Jan 21 08:19:36 WARN mpegtsmux mpegtsmux.c:1010: ignoring DTS going backward
Jan 21 08:19:36 WARN videodecoder gstvideodecoder.c:2315: decreasing timestamp (14:41:09.692418392 < 14:41:09.772420341)
Jan 21 08:19:36 WARN mpegtsmux mpegtsmux.c:1010: ignoring DTS going backward
Jan 21 08:19:36 WARN mpegtsmux mpegtsmux.c:1010: ignoring DTS going backward
Jan 21 08:19:36 WARN x264enc :0: non-strictly-monotonic PTS
Jan 21 08:19:36 WARN mpegtsmux mpegtsmux.c:1010: ignoring DTS going backward
Jan 21 08:19:37 WARN x264enc :0: non-strictly-monotonic PTS
Jan 21 08:19:37 WARN mpegtsmux mpegtsmux.c:1010: ignoring DTS going backward
Jan 21 08:19:37 WARN x264enc :0: invalid DTS: PTS is less than DTS
Jan 21 08:19:37 WARN videodecoder gstvideodecoder.c:2315: decreasing timestamp (14:41:09.812415527 < 14:41:09.892417429)
Jan 21 08:19:37 WARN x264enc :0: invalid DTS: PTS is less than DTS
Use augease
access http://192.168.1.1:20119/live/CCTV-1/encoder/0/playlist.m3u8 failure
access http://192.168.1.1:20119/live/CCTV-1/encoder/0 success
log fallow:
18174 Oct 16 20:33:52.287214 ERROR gstreamill job.c:477: Segment not found!
18175 Oct 16 20:33:54.996570 ERROR gstreamill encoder.c:870: FATAL: CCTV-1.encoder.1 rap_addr value is 18446744072591216340
18176 Oct 16 20:33:54.996710 ERROR gstreamill job.c:477: Segment not found!
18177 Oct 16 20:33:58.139506 ERROR gstreamill encoder.c:870: FATAL: CCTV-1.encoder.1 rap_addr value is 18446744072591216340
18178 Oct 16 20:33:58.139598 ERROR gstreamill job.c:477: Segment not found!
18179 Oct 16 20:34:01.498866 ERROR gstreamill encoder.c:870: FATAL: CCTV-1.encoder.1 rap_addr value is 18446744072591216340
18180 Oct 16 20:34:01.498993 ERROR gstreamill job.c:477: Segment not found!
18181 Oct 16 20:34:04.411247 ERROR gstreamill encoder.c:870: FATAL: CCTV-1.encoder.1 rap_addr value is 18446744072591216340
18182 Oct 16 20:34:04.411433 ERROR gstreamill job.c:477: Segment not found!
18183 Oct 16 20:34:07.430129 ERROR gstreamill encoder.c:870: FATAL: CCTV-1.encoder.1 rap_addr value is 18446744072591216340
18184 Oct 16 20:34:07.430337 ERROR gstreamill job.c:477: Segment not found!
18185 Oct 16 20:34:10.597925 ERROR gstreamill encoder.c:870: FATAL: CCTV-1.encoder.1 rap_addr value is 18446744072591216340
18186 Oct 16 20:34:10.598049 ERROR gstreamill job.c:477: Segment not found!
18187 Oct 16 20:34:13.204793 ERROR gstreamill encoder.c:870: FATAL: CCTV-1.encoder.1 rap_addr value is 18446744072591216340
replace httpserver_write with httpserver user_callback, that means asynchronou write.
httpserver_write cause pipe broken
Jun 02 10:15:58 WARN GST_PADS gstpad.c:3669: could not send sticky events
Jun 02 10:15:58 INFO task gsttask.c:300: Task going to paused
Jun 02 10:15:58 INFO task gsttask.c:300: Task going to paused
Jun 02 10:15:58 WARN basesrc gstbasesrc.c:2865: error: Internal data flow error.
Jun 02 10:15:58 WARN basesrc gstbasesrc.c:2865: error: streaming task paused, reason not-negotiated (-4)
Jun 02 10:15:58 INFO GST_ERROR_SYSTEM gstelement.c:1835: posting message: Internal data flow error.
Jun 02 10:15:58 INFO GST_ERROR_SYSTEM gstelement.c:1858: posted error message: Internal data flow error.
Jun 02 10:15:58 INFO task gsttask.c:300: Task going to paused
Jun 02 10:15:58 WARN gstreamill source.c:221: source error: Internal data flow error.
pause and halt, dont exit.
live window duration configuration support
gst-launch-1.0 -v audiotestsrc ! voaacenc ! mpegtsmux ! fakesink --gst-debug=mpegtsmux:7,voaacenc:7
gst-launch-1.0 -v audiotestsrc ! voaacenc ! aacparse ! mpegtsmux ! fakesink
^
see here --------------------------------------
You need a parser to convert the voaacenc output to the stream format
that mpegtsmux requires. From the complete debug logs you would see that
something there complains about incompatible caps.
Always add parsers after encoders and before muxers, unless there is no
parser.
Sebastian Dröge, Centricular Ltd · http://www.centricular.com
#0 0x00007f8a7a80c6de in ?? () from /usr/lib/x86_64-linux-gnu/libvo-aacenc.so.0
#1 0x00007f8a7a80f23b in ?? () from /usr/lib/x86_64-linux-gnu/libvo-aacenc.so.0
#2 0x00007f8a7a8182f4 in ?? () from /usr/lib/x86_64-linux-gnu/libvo-aacenc.so.0
#3 0x00007f8a7a80d145 in ?? () from /usr/lib/x86_64-linux-gnu/libvo-aacenc.so.0
#4 0x00007f8a7a80c95f in ?? () from /usr/lib/x86_64-linux-gnu/libvo-aacenc.so.0
#5 0x00007f8a7aa2a4e2 in gst_voaacenc_handle_frame (benc=0xfa8680, buf=0x7f8a6c01c4c0) at gstvoaacenc.c:486
#6 0x00007f8a7c8ef58d in gst_audio_encoder_push_buffers (enc=enc@entry=0xfa8680, force=force@entry=0) at gstaudioencoder.c:978
#7 0x00007f8a7c8efafc in gst_audio_encoder_chain (pad=<optimized out>, parent=0xfa8680, buffer=0x7f8a6c012a40) at gstaudioencoder.c:1197
#8 0x00007f8a8983ad08 in gst_pad_chain_data_unchecked (data=0x7f8a6c012a40, type=4112, pad=0xfa4500) at gstpad.c:3760
#9 gst_pad_push_data (pad=0xfa42d0, type=type@entry=4112, data=<optimized out>) at gstpad.c:3990
#10 0x00007f8a898419b6 in gst_pad_push (pad=<optimized out>, buffer=<optimized out>) at gstpad.c:4093
#11 0x00007f8a880582a9 in gst_base_transform_chain (pad=<optimized out>, parent=0xfa16e0, buffer=<optimized out>) at gstbasetransform.c:2237
#12 0x00007f8a8983ad08 in gst_pad_chain_data_unchecked (data=0x7f8a6c01e8d0, type=4112, pad=0xfa40a0) at gstpad.c:3760
#13 gst_pad_push_data (pad=0xf91d80, type=type@entry=4112, data=<optimized out>, data@entry=0x7f8a6c01e8d0) at gstpad.c:3990
#14 0x00007f8a898419b6 in gst_pad_push (pad=<optimized out>, buffer=buffer@entry=0x7f8a6c01e8d0) at gstpad.c:4093
#15 0x00007f8a7d3c5eb0 in gst_queue_push_one (queue=0xf96260) at gstqueue.c:1115
#16 gst_queue_loop (pad=<optimized out>) at gstqueue.c:1244
#17 0x00007f8a89868549 in gst_task_func (task=0xfdd5f0) at gsttask.c:316
#18 0x00007f8a88d1c89c in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007f8a88d1bf15 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007f8a88890182 in start_thread (arg=0x7f8a6affd700) at pthread_create.c:312
#21 0x00007f8a8837730d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
add deinterlace after video decode:
... mpeg2dec ! queue ! deinterlace ! queue ! appsink name = video
the output segment duration is 5s, but it's 10s in job file:
"segment-duration" : 10.00
0:00:06.970572065 30100 0x7fe468020980 ERROR gstreamill livejob.c:575:notify_function: add segement 0.ts
0:00:11.991578931 30100 0x7fe468020c90 ERROR gstreamill livejob.c:575:notify_function: add segement 5770853909.ts
0:00:17.011150355 30100 0x7fe46800c900 ERROR gstreamill livejob.c:575:notify_function: add segement 10770734416.ts
0:00:22.015128171 30100 0x7fe46c004520 ERROR gstreamill livejob.c:575:notify_function: add segement 15770611535.ts
log level is not reasonable, too many error and warning.
Time shift url format:
http://host.name.or.ip:port/dvr/job_name/playlist.m3u8?offset=-nnnn
or
http://host.name.or.ip:port/dvr/job_name/encoder/n/playlist.m3u8?offset=-nnnn
nnnn = nnnn seconds, minus means before。
DVR url format
http://host.name.or.ip:port/dvr/job_name/playlist.m3u8?start=nnn&duration=ddd
or
http://host.name.or.ip:port/dvr/job_name/encoder/n/playlist.m3u8?start=nnn&duration=ddd
start = unix time
duration = seconds
support transcode
GET /dvr/CCTV-10/encoder/1/playlist.m3u8?offset=-1350 HTTP/1.1
Host: 192.168.7.40:20119
User-Agent: VLC/2.1.5 LibVLC/2.1.5
Range: bytes=0-
Connection: close
Icy-MetaData: 1
HTTP/1.1 200 Ok
Server: gstreamill-0.5.3
Content-Type: application/vnd.apple.mpegurl
Content-Length: 257
Access-Control-Allow-Origin: *
Cache-Control: max-age=60
Connection: Close
1414139295775469_177345_3000000000.ts
1414139298288771_177346_3000000000.ts
1414139309651873_177347_3000000000.ts
180858 != 177345
GET /dvr/CCTV-10/encoder/0/playlist.m3u8?offset=-1350 HTTP/1.1
Host: 192.168.7.40:20119
User-Agent: VLC/2.1.5 LibVLC/2.1.5
Range: bytes=0-
Connection: close
Icy-MetaData: 1
HTTP/1.1 200 Ok
Server: gstreamill-0.5.3
Content-Type: application/vnd.apple.mpegurl
Content-Length: 257
Access-Control-Allow-Origin: *
Cache-Control: max-age=60
Connection: Close
1414139295912776_180858_3000000000.ts
1414139298864660_180859_3000000000.ts
1414139301863288_180860_3000000000.ts
IMHO run the program under the root user is not safe.
MPEG DASH support
for example:
ExecStart=/usr/local/bin/gstreamill (gstreamill.service)
env DAEMON=/usr/local/bin/gstreamill (gstreamill.conf)
install -c -m 755 tools/startjobs.sh '/usr/local/bin/startjobs.sh'; (Makefile.am)
job hungui-6 is transcode job, rss is < 0
Jun 03 17:58:12 INFO gstreamill gstreamill.c:460: Job hungui-6's average cpu: 8%, cpu: 8%, rss: -2008379392
添加高清转码任务,不管有没有勾选DVR选项,服务后台运行后,频繁重启,vlc无法播放
但是前台调试模式运行,只打印警告信息,vlc可播放
Use parson serialization in *_stat function in gstreamill.c
怎么推流到gstreamill 服务器上呀?
能否给个例子
use unix domain socket instead mqueue,
使用mqueue的时候,如果多个(比如5个)job频繁重启,就会造成mq_notify突然消失,使得主进程不响应子进程的分片消息。
因此决定采用unix damin socket.
reproduce: repeat start and stop job over http
Thu Dec 19 16:52:23 2013: INFO gstreamill httpmgmt.c:236: new request arrived, socket is 13, uri is /stop/test
Thu Dec 19 16:52:33 2013: ERROR gstreamill httpserver.c:408: accept error Too many open files
Thu Dec 19 16:52:33 2013: INFO gstreamill httpmgmt.c:236: new request arrived, socket is 13, uri is /start
Thu Dec 19 16:52:33 2013: INFO gstreamill gstreamill.c:834: live job arrived.
Thu Dec 19 16:52:33 2013: ERROR gstreamill livejob.c:1670: ftruncate error: Bad file descriptor
Thu Dec 19 16:52:43 2013: ERROR gstreamill httpserver.c:408: accept error Too many open files
Thu Dec 19 16:52:43 2013: INFO gstreamill httpmgmt.c:236: new request arrived, socket is 13, uri is /stop/test
Thu Dec 19 16:52:53 2013: ERROR gstreamill httpserver.c:408: accept error Too many open files
Thu Dec 19 16:52:53 2013: INFO gstreamill httpmgmt.c:236: new request arrived, socket is 13, uri is /start
-rw-r--r-- 1 gstreamill gstreamill 357776 Oct 24 13:50 1414129833798941_307507_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 427524 Oct 24 13:50 1414129836833052_307508_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 400076 Oct 24 13:50 1414129839929286_307509_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 375636 Oct 24 13:50 1414129842774120_307510_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 429592 Oct 24 13:50 1414129845815109_307511_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 339728 Oct 24 13:50 1414129848872426_307512_3000000000.ts
a hole of 1414129862 - 1414129848 = 12s
-rw-r--r-- 1 gstreamill gstreamill 387856 Oct 24 13:51 1414129862808764_307513_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 412108 Oct 24 13:51 1414129865837019_307514_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 371876 Oct 24 13:51 1414129868825547_307515_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 430344 Oct 24 13:51 1414129871648973_307516_3000000000.ts
-rw-r--r-- 1 gstreamill gstreamill 383344 Oct 24 13:51 1414129874692193_307517_3000000000.ts
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.