#6673: fmp4/hls not working with remote paths -------------------------------------+------------------------------------- Reporter: | Owner: thecodeassassin | Status: reopened Type: defect | Component: avformat Priority: normal | Resolution: Version: git-master | Blocked By: Keywords: fmp4 hls | Reproduced by developer: 0 Blocking: | Analyzed by developer: 0 | -------------------------------------+-------------------------------------
Comment (by stevenliu): Replying to [comment:6 thecodeassassin]: > Yeah this patch solves the problem. However my playlist doesn't seem to play in a test player: > > #EXTM3U > #EXT-X-VERSION:7 > #EXT-X-MEDIA-SEQUENCE:0 > #EXT-X-ALLOW-CACHE:YES > #EXT-X-PLAYLIST-TYPE:VOD > #EXT-X-TARGETDURATION:4 > #EXT-X-INDEPENDENT-SEGMENTS > #EXT-X-MAP:URI="init_720p.mp4" > > #EXTINF:4.000000, > 720p_segment_1505824953.m4s > #EXTINF:4.000000, > 720p_segment_1505824958.m4s > #EXTINF:2.200000, > 720p_segment_1505824962.m4s > #EXT-X-ENDLIST > > Playlist: https://d3ksou5z0j9mc7.cloudfront.net/stephen- test-7/master.m3u8 > > {{{ > ffmpeg -i https://d3ksou5z0j9mc7.cloudfront.net/stephen- test-7/master.m3u8 -acodec aac -b:a 128k -vcodec libx264 -b:v 3000k -preset ultrafast -movflags +faststart -f mp4 pipe:1 > ~/test.mp4 > ffmpeg version N-87327-g18821e3 Copyright (c) 2000-2017 the FFmpeg developers > built with Apple LLVM version 8.0.0 (clang-800.0.42.1) > configuration: --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libx264 > libavutil 55. 75.100 / 55. 75.100 > libavcodec 57.106.101 / 57.106.101 > libavformat 57. 82.100 / 57. 82.100 > libavdevice 57. 8.101 / 57. 8.101 > libavfilter 6.105.100 / 6.105.100 > libswscale 4. 7.103 / 4. 7.103 > libswresample 2. 8.100 / 2. 8.100 > libpostproc 54. 6.100 / 54. 6.100 > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen-test-7/720p/playlist.m3u8' for reading > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen-test-7/480p/playlist.m3u8' for reading > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen-test-7/240p/playlist.m3u8' for reading > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen-test-7/720p/init_720p.mp4' for reading > Could not read complete segment. > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen- test-7/720p/720p_segment_1505824953.m4s' for reading > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen-test-7/480p/init_480p.mp4' for reading > Could not read complete segment. > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen- test-7/480p/480p_segment_1505824953.m4s' for reading > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen-test-7/240p/init_240p.mp4' for reading > Could not read complete segment. > [hls,applehttp @ 0x7fa63c800000] Opening 'https://d3ksou5z0j9mc7.cloudfront.net/stephen- test-7/240p/240p_segment_1505824953.m4s' for reading > [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fa63b817e00] stream 0, offset 0xc76: partial file > [hls,applehttp @ 0x7fa63c800000] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none, 1280x720, 2239 kb/s): unspecified pixel format > Consider increasing the value for the 'analyzeduration' and 'probesize' options > [hls,applehttp @ 0x7fa63c800000] Could not find codec parameters for stream 2 (Video: h264 (avc1 / 0x31637661), none, 854x480, 1110 kb/s): unspecified pixel format > Consider increasing the value for the 'analyzeduration' and 'probesize' options > [hls,applehttp @ 0x7fa63c800000] Could not find codec parameters for stream 4 (Video: h264 (avc1 / 0x31637661), none, 426x240, 379 kb/s): unspecified pixel format > Consider increasing the value for the 'analyzeduration' and 'probesize' options > Input #0, hls,applehttp, from 'https://d3ksou5z0j9mc7.cloudfront.net /stephen-test-7/master.m3u8': > Duration: 00:05:18.87, bitrate: 0 kb/s > Program 0 > Metadata: > variant_bitrate : 3000000 > Stream #0:0: Video: h264 (avc1 / 0x31637661), none, 1280x720, 2239 kb/s, 15360 tbr, 15360 tbn, 30720 tbc > Metadata: > variant_bitrate : 3000000 > Stream #0:1: Audio: aac (mp4a / 0x6134706D), 44100 Hz, 5.1, fltp, 127 kb/s > Metadata: > variant_bitrate : 3000000 > Program 1 > Metadata: > variant_bitrate : 1500000 > Stream #0:2: Video: h264 (avc1 / 0x31637661), none, 854x480, 1110 kb/s, 15360 tbr, 15360 tbn, 30720 tbc > Metadata: > variant_bitrate : 1500000 > Stream #0:3: Audio: aac (mp4a / 0x6134706D), 44100 Hz, 5.1, fltp, 127 kb/s > Metadata: > variant_bitrate : 1500000 > Program 2 > Metadata: > variant_bitrate : 800000 > Stream #0:4: Video: h264 (avc1 / 0x31637661), none, 426x240, 379 kb/s, 15360 tbr, 15360 tbn, 30720 tbc > Metadata: > variant_bitrate : 800000 > Stream #0:5: Audio: aac (mp4a / 0x6134706D), 44100 Hz, 5.1, fltp, 127 kb/s > Metadata: > variant_bitrate : 800000 > Stream mapping: > Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) > Stream #0:1 -> #0:1 (aac (native) -> aac (native)) > Press [q] to stop, [?] for help > [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fa63b817e00] stream 0, offset 0xc76: partial file > https://d3ksou5z0j9mc7.cloudfront.net/stephen-test-7/master.m3u8: Invalid data found when processing input > Finishing stream 0:0 without any data written to it. > Finishing stream 0:1 without any data written to it. > Nothing was written into output file 0 (pipe:1), because at least one of its streams received no packets. > frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A > video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown > [aac @ 0x7fa63c01ee00] Qavg: na > }}} > > However, the same structure with ts segments work fine. > > Replying to [comment:5 stevenliu]: > > Replying to [comment:3 thecodeassassin]: > > > hi stevenliu, thanks for the quick reponse. It seems that it does not upload the init.mp4 to the remote endpoint. As in i'm not getting PUT request here for that file. > > > > https://patchwork.ffmpeg.org/patch/5191/ > > > > Try this patch please. > > > > > > > > {{{ > > liuqideMBP:hlsdemux liuqi$ ls -hl /usr/local/nginx/html/ > > total 48 > > -rwxrwxrwx 1 root admin 537B 5 17 2016 50x.html > > -rw-r--r-- 1 liuqi admin 1.0K 1 28 2017 a.html > > -rw-r--r-- 1 liuqi admin 1.1K 7 1 08:17 aaa.mpd > > -rw-r--r-- 1 liuqi admin 1.1K 6 30 23:20 aaa_bbb.mpd > > drwxrwxrwx 2 root admin 68B 10 12 2016 flowstream > > -rwxrwxrwx 1 root admin 612B 5 17 2016 index.html > > drwxrwxrwx 7 liuqi admin 238B 7 18 19:59 test > > -rwxrwxrwx 1 nobody admin 239B 5 18 2016 upload.hls > > liuqideMBP:hlsdemux liuqi$ ./ffmpeg -i ~/Movies/objectC/facebook.mp4 -loglevel warning -hls_fmp4_init_filename http://192.168.0.157/init.mp4 -c:a aac -b:a 128k -ar 44100 -c:v libx264 -max_muxing_queue_size 400 -x264opts no-scenecut -force_key_frames "expr:gte(t,n_forced*2)" -crf 23 -start_number 0 -hls_time 4 -hls_list_size 3 -use_localtime 1 -hls_segment_type fmp4 -hls_segment_filename "http://192.168.0.157/segment_%s.m4s" -preset ultrafast -profile:v main -level 3.1 -r 30 -threads 0 -vf "scale=-2:720" -bufsize 2000k -maxrate 2000k -b:v 2000k -f hls -method PUT -t 20 "http://192.168.0.157/playlist.m3u8" > > [libx264 @ 0x7f9198030e00] frame MB size (81x45) > level limit (3600) > > [libx264 @ 0x7f9198030e00] MB rate (109350) > level limit (108000) > > [hls @ 0x7f91980a4c00] Cannot use rename on non file protocol, this may lead to races and temporary partial files > > [mp4 @ 0x7f9198000600] Track 0 starts with a nonzero dts 357, while the moov already has been written. Set the delay_moov flag to handle this case. > > [hls muxer @ 0x7f91980a5200] Duplicated segment filename detected: segment_1505815744.m4s > > [hls muxer @ 0x7f91980a5200] Duplicated segment filename detected: segment_1505815745.m4s > > liuqideMBP:hlsdemux liuqi$ ls -hl /usr/local/nginx/html/ > > total 8800 > > -rwxrwxrwx 1 root admin 537B 5 17 2016 50x.html > > -rw-r--r-- 1 liuqi admin 1.0K 1 28 2017 a.html > > -rw-r--r-- 1 liuqi admin 1.1K 7 1 08:17 aaa.mpd > > -rw-r--r-- 1 liuqi admin 1.1K 6 30 23:20 aaa_bbb.mpd > > drwxrwxrwx 2 root admin 68B 10 12 2016 flowstream > > -rwxrwxrwx 1 root admin 612B 5 17 2016 index.html > > -rw-rw-rw- 1 nobody admin 1.2K 9 19 18:09 init.mp4 > > -rw-rw-rw- 1 nobody admin 217B 9 19 18:09 playlist.m3u8 > > -rw-rw-rw- 1 nobody admin 1.2M 9 19 18:09 segment_1505815744.m4s > > -rw-rw-rw- 1 nobody admin 1.0M 9 19 18:09 segment_1505815745.m4s > > -rw-rw-rw- 1 nobody admin 1.0M 9 19 18:09 segment_1505815746.m4s > > -rw-rw-rw- 1 nobody admin 1.0M 9 19 18:09 segment_1505815747.m4s > > drwxrwxrwx 7 liuqi admin 238B 7 18 19:59 test > > -rwxrwxrwx 1 nobody admin 239B 5 18 2016 upload.hls > > }}} base on the previous patch , and use this patch : https://patchwork.ffmpeg.org/patch/5200/ to play the hls like this: ffplay cache:http://xxxxxx/xxxx.m3u8 for example: ./ffplay cache:http://192.168.0.157/playlist.m3u8 -- Ticket URL: <https://trac.ffmpeg.org/ticket/6673#comment:8> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://ffmpeg.org/mailman/listinfo/ffmpeg-trac