carsonmcdonald / HTTP-Live-Video-Stream-Segmenter-and-Distributor

Segments live video streams based on the Apple HTTP Live Streaming protocol and pushes the resulting files to various locations.
http://www.ioncannon.net/projects/http-live-video-stream-segmenter-and-distributor/
605 stars 134 forks source link

Issue with cat %s source_command and multirate #27

Open tatejones opened 11 years ago

tatejones commented 11 years ago

Hi,

When attempting to run the config-recommended-ipad-16x9-multirate.yml on a Mac OS X I receive the following error.

[buffer @ 0x7f9190c0da20] Unable to parse option value "-1" as pixel format Error opening filters! [mpegts @ 0x7faf89806600] Could not detect TS packet size, defaulting to non-FEC/DVHS [mpegts @ 0x7faf89806600] Estimating duration from bitrate, this may be inaccurate Segmenter error: Could not read stream information

If I manually run the command i receive the same error.

cat ~/Downloads/IMG_0045.MOV | ffmpeg -i - -f mpegts -acodec libmp3lame -ar 32000 -ab 48k -s 400x224 -vcodec libx264 -b 110k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 1 -refs 5 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b:v 110k -maxrate 110k -bufsize 110k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 16:9 -r 10 -g 30 -async 2 - | /Users/tate/Downloads/HTTP-Live-Video-Stream-Segmenter-and-Distributor-master/live_segmenter 10 /tmp/ sample_cell_16x9_150k cell_16x9_150k

ffmpeg version 1.1.3 Copyright (c) 2000-2013 the FFmpeg developers built on Mar 9 2013 16:48:10 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn) configuration: --prefix=/usr/local/Cellar/ffmpeg/1.1.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid libavutil 52. 13.100 / 52. 13.100 libavcodec 54. 86.100 / 54. 86.100 libavformat 54. 59.106 / 54. 59.106 libavdevice 54. 3.102 / 54. 3.102 libavfilter 3. 32.100 / 3. 32.100 libswscale 2. 1.103 / 2. 1.103 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fde4a806600] stream 1, offset 0x24: partial file [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fde4a806600] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), 1280x720, 10586 kb/s): unspecified pixel format Consider increasing the value for the 'analyzeduration' and 'probesize' options

If I remove the 'cat | ' and supply the filename manually to ffmpeg it works fine.

Any ideas what I could be doing wrong? The movies are short, only10-15 seconds.

Full output.

HTTP-Live-Video-Stream-Segmenter-and-Distributor-master tate$ ruby http_streamer.rb example-configs/config-recommended-iphone-16x9-multirate.yml I, [2013-06-29T14:34:22.798221 #9359] INFO -- : HTTP Streamer started I, [2013-06-29T14:34:22.798441 #9359] INFO -- : Transfer thread started I, [2013-06-29T14:34:22.798536 #9359] INFO -- : Transfer initiated with value = _mrindex I, [2013-06-29T14:34:22.798577 #9359] INFO -- : Master encoding thread started D, [2013-06-29T14:34:22.798627 #9359] DEBUG -- : Creating multirate index I, [2013-06-29T14:34:22.798695 #9359] INFO -- : Encoding thread started: cell_16x9_150k D, [2013-06-29T14:34:22.798819 #9359] DEBUG -- : Executing: cat /Users/tate/Downloads/IMG_0045.MOV D, [2013-06-29T14:34:22.798930 #9359] DEBUG -- : Executing: ffmpeg -i - -f mpegts -acodec libmp3lame -ar 32000 -ab 48k -s 400x224 -vcodec libx264 -b 110k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 1 -refs 5 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b:v 110k -maxrate 110k -bufsize 110k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 16:9 -r 10 -g 30 -async 2 - | /Users/tate/Downloads/HTTP-Live-Video-Stream-Segmenter-and-Distributor-master/live_segmenter 10 /tmp/ sample_cell_16x9_150k cell_16x9_150k D, [2013-06-29T14:34:22.805269 #9359] DEBUG -- : Transfering multirate index I, [2013-06-29T14:34:22.807655 #9359] INFO -- : Transfer done D, [2013-06-29T14:34:23.199288 #9359] DEBUG -- : Return code from master encoding: 0 I, [2013-06-29T14:34:23.199362 #9359] INFO -- : Master encoding thread terminated D, [2013-06-29T14:34:23.203414 #9359] DEBUG -- : Encoder cell_16x9_150k: ffmpeg version 1.1.3 Copyright (c) 2000-2013 the FFmpeg developers built on Mar 9 2013 16:48:10 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn) configuration: --prefix=/usr/local/Cellar/ffmpeg/1.1.3 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid libavutil 52. 13.100 / 52. 13.100 libavcodec 54. 86.100 / 54. 86.100 libavformat 54. 59.106 / 54. 59.106 libavdevice 54. 3.102 / 54. 3.102 libavfilter 3. 32.100 / 3. 32.100 libswscale 2. 1.103 / 2. 1.103 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9191006600] stream 1, offset 0x24: partial file [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9191006600] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), 1280x720, 10586 kb/s): unspecified pixel format Consider increasing the value for the 'analyzeduration' and 'probesize' options Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'pipe:': Metadata: major_brand : qt
minor_version : 0 compatible_brands: qt
creation_time : 2013-06-29 04:24:45 model : iPhone 4 model-eng : iPhone 4 encoder : 6.1.3 encoder-eng : 6.1.3 date : 2013-06-29T14:24:45+1000 date-eng : 2013-06-29T14:24:45+1000 location : -17.3359+145.5777+724.797/ location-eng : -17.3359+145.5777+724.797/ make : Apple make-eng : Apple Duration: 00:00:34.35, bitrate: N/A Stream #0:0(und): Video: h264 (avc1 / 0x31637661), 1280x720, 10586 kb/s, 29.97 fps, 600 tbr, 600 tbn, 1200 tbc Metadata: creation_time : 2013-06-29 04:24:45 handler_name : Core Media Data Handler Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s Metadata: creation_time : 2013-06-29 04:24:45 handler_name : Core Media Data Handler Please use -b:a or -b:v, -b is ambiguous [buffer @ 0x7f9190c0da20] Unable to parse option value "-1" as pixel format Error opening filters! [mpegts @ 0x7faf89806600] Could not detect TS packet size, defaulting to non-FEC/DVHS [mpegts @ 0x7faf89806600] Estimating duration from bitrate, this may be inaccurate Segmenter error: Could not read stream information

sebi1990 commented 11 years ago

Hi, had the same problem. The file name of the ffmpeg-command is "-" when using multi rate. Fixed it with changing hs_encoder.rb line 159:

process_encoding(profile_name, '-', encoding_pipes)

to

process_encoding(profile_name, @config['input_location'], encoding_pipes)