Does anyone have a working ffmpeg -> ffserver config for hls/m3u8?
I've been searching around the net found only a few examples but so far not having much success. My objective is to get a camera stream (available as input to ffmpeg as m3u8) and feed it to ffserver, and play it out also as m3u8. First, what I'm doing is simulating that by taking an mp4 file as input instead. Here's the info on the sample file: ~/bin/ffmpeg -i sample.mp4 ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --prefix=/home/ubuntu/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/ubuntu/ffmpeg_build/include --extra-ldflags=-L/home/ubuntu/ffmpeg_build/lib --bindir=/home/ubuntu/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 54. 23.101 / 54. 23.101 libavcodec 56. 35.101 / 56. 35.101 libavformat 56. 31.100 / 56. 31.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 16.100 / 5. 16.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt creation_time : 1970-01-01 00:00:00 encoder : Lavf52.73.0 Duration: 00:09:56.46, start: 0.000000, bitrate: 524 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 424x240, 420 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler encoder : libx264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 99 kb/s (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler Here's my ffmpeg feed to ffserver. ~/bin/ffmpeg -re -i sample.mp4 -c copy -hls_time 10 -hls_list_size 6 -hls_wrap 18 -start_number 1 -override_ffserver http://localhost:8090/feed1.ffm ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --prefix=/home/ubuntu/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/ubuntu/ffmpeg_build/include --extra-ldflags=-L/home/ubuntu/ffmpeg_build/lib --bindir=/home/ubuntu/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 54. 23.101 / 54. 23.101 libavcodec 56. 35.101 / 56. 35.101 libavformat 56. 31.100 / 56. 31.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 16.100 / 5. 16.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt creation_time : 1970-01-01 00:00:00 encoder : Lavf52.73.0 Duration: 00:09:56.46, start: 0.000000, bitrate: 524 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 424x240, 420 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler encoder : libx264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 99 kb/s (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler Output #0, ffm, to 'http://localhost:8090/feed1.ffm': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt creation_time : now encoder : Lavf56.31.100 Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p, 424x240, q=2-31, 420 kb/s, 24 fps, 24 tbr, 1000k tbn, 24 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler encoder : libx264 Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, 99 kb/s (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Using username "ubuntu". Authenticating with public key "imported-openssh-key" Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-51-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Tue May 5 11:17:35 PDT 2015 System load: 0.0 Processes: 120 Usage of /: 39.1% of 7.74GB Users logged in: 1 Memory usage: 2% IP address for eth0: 172.31.17.7 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 8 packages can be updated. 8 updates are security updates. Last login: Tue May 5 11:17:36 2015 from 147.21.8.1 ubuntu@aws01:~$ cd video ubuntu@aws01:~/video$ ~/bin/ffmpeg -i sample.mp4 ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --prefix=/home/ubuntu/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/ubuntu/ffmpeg_build/include --extra-ldflags=-L/home/ubuntu/ffmpeg_build/lib --bindir=/home/ubuntu/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 54. 23.101 / 54. 23.101 libavcodec 56. 35.101 / 56. 35.101 libavformat 56. 31.100 / 56. 31.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 16.100 / 5. 16.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt creation_time : 1970-01-01 00:00:00 encoder : Lavf52.73.0 Duration: 00:09:56.46, start: 0.000000, bitrate: 524 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 424x240, 420 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler encoder : libx264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 99 kb/s (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler At least one output file must be specified ubuntu@aws01:~/video$ !links links http://localhost:8090/stat.html ffserver Status (p1 of 2) ffserver Status Available Streams Path Served Format Bit Video Audio Feed Conns bytes rate kbits/s Codec kbits/s Codec kbits/s live.m3u8 0 libfdk_aac feed1. stat.html 1 +------------ Exit Links -------------+ index.html 0 | | | Do you really want to exit Links? | Feed feed1.ffm | | | [ Yes ] [ No ] | Stream type +-------------------------------------+ 0 video 4 1 audio 99 libfdk_aac 2 channel(s), 48000 Hz Connection Status Number of connections: 2 / 1000 Bandwidth in use: 0k / 1000k http://localhost:8090/live.m3u8 ubuntu@aws01:~/video$ links http://localhost:8090/stat.html ffserver Status (p1 of 2) ffserver Status Available Streams Path Served Format Bit Video Audio Feed Conns bytes rate kbits/s Codec kbits/s Codec kbits/s live.m3u8 0 0 hls 464 420 libx264 99 libfdk_aac feed1. stat.html 2 1868 - - - - index.html 0 0 - - - - Feed feed1.ffm Stream type kbits/s codec Parameters 0 video 420 libx264 424x240, q=2-31, fps=24 1 audio 99 libfdk_aac 2 channel(s), 48000 Hz Connection Status Number of connections: 2 / 1000 Bandwidth in use: 0k / 1000k http://localhost:8090/live.m3u8 Using username "ubuntu". Authenticating with public key "imported-openssh-key" Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-51-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Tue May 5 11:17:35 PDT 2015 System load: 0.0 Processes: 120 Usage of /: 39.1% of 7.74GB Users logged in: 1 Memory usage: 2% IP address for eth0: 172.31.17.7 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 8 packages can be updated. 8 updates are security updates. Last login: Tue May 5 11:17:36 2015 from 147.21.8.1 ubuntu@aws01:~$ cd video ubuntu@aws01:~/video$ ~/bin/ffmpeg -i sample.mp4 ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --prefix=/home/ubuntu/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/ubuntu/ffmpeg_build/include --extra-ldflags=-L/home/ubuntu/ffmpeg_build/lib --bindir=/home/ubuntu/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 54. 23.101 / 54. 23.101 libavcodec 56. 35.101 / 56. 35.101 libavformat 56. 31.100 / 56. 31.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 16.100 / 5. 16.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt creation_time : 1970-01-01 00:00:00 encoder : Lavf52.73.0 Duration: 00:09:56.46, start: 0.000000, bitrate: 524 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 424x240, 420 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler encoder : libx264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 99 kb/s (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler At least one output file must be specified ubuntu@aws01:~/video$ !links links http://localhost:8090/stat.html ffserver Status (p1 of 2) ffserver Status Available Streams Path Served Format Bit Video Audio Feed Conns bytes rate kbits/s Codec kbits/s Codec kbits/s live.m3u8 0 libfdk_aac feed1. stat.html 1 +------------ Exit Links -------------+ index.html 0 | | | Do you really want to exit Links? | Feed feed1.ffm | | | [ Yes ] [ No ] | Stream type +-------------------------------------+ 0 video 4 1 audio 99 libfdk_aac 2 channel(s), 48000 Hz Connection Status Number of connections: 2 / 1000 Bandwidth in use: 0k / 1000k http://localhost:8090/live.m3u8 ubuntu@aws01:~/video$ links http://localhost:8090/stat.html ffserver Status (p1 of 2) ffserver Status Available Streams Path Served Format Bit Video Audio Feed Conns bytes rate kbits/s Codec kbits/s Codec kbits/s live.m3u8 0 0 hls 464 420 libx264 99 libfdk_aac feed1. stat.html 2 1868 - - - - index.html 0 0 - - - - Feed feed1.ffm Stream type kbits/s codec Parameters 0 video 420 libx264 424x240, q=2-31, fps=24 1 audio 99 libfdk_aac 2 channel(s), 48000 Hz Connection Status Number of connections: 2 / 1000 Bandwidth in use: 0k / 1000k http://localhost:8090/live.m3u8 Using username "ubuntu". Authenticating with public key "imported-openssh-key" Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-51-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Tue May 5 11:17:35 PDT 2015 System load: 0.0 Processes: 120 Usage of /: 39.1% of 7.74GB Users logged in: 1 Memory usage: 2% IP address for eth0: 172.31.17.7 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 8 packages can be updated. 8 updates are security updates. Last login: Tue May 5 11:17:36 2015 from 147.21.8.1 ubuntu@aws01:~$ cd video ubuntu@aws01:~/video$ ~/bin/ffmpeg -i sample.mp4 ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --prefix=/home/ubuntu/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/ubuntu/ffmpeg_build/include --extra-ldflags=-L/home/ubuntu/ffmpeg_build/lib --bindir=/home/ubuntu/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 54. 23.101 / 54. 23.101 libavcodec 56. 35.101 / 56. 35.101 libavformat 56. 31.100 / 56. 31.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 16.100 / 5. 16.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt creation_time : 1970-01-01 00:00:00 encoder : Lavf52.73.0 Duration: 00:09:56.46, start: 0.000000, bitrate: 524 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 424x240, 420 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler encoder : libx264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 99 kb/s (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler Using username "ubuntu". Authenticating with public key "imported-openssh-key" Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-51-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Tue May 5 11:17:35 PDT 2015 System load: 0.0 Processes: 120 Usage of /: 39.1% of 7.74GB Users logged in: 1 Memory usage: 2% IP address for eth0: 172.31.17.7 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 8 packages can be updated. 8 updates are security updates. Last login: Tue May 5 11:17:36 2015 from 147.21.8.1 ubuntu@aws01:~$ cd video ubuntu@aws01:~/video$ ~/bin/ffmpeg -i sample.mp4 ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --prefix=/home/ubuntu/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/ubuntu/ffmpeg_build/include --extra-ldflags=-L/home/ubuntu/ffmpeg_build/lib --bindir=/home/ubuntu/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 54. 23.101 / 54. 23.101 libavcodec 56. 35.101 / 56. 35.101 libavformat 56. 31.100 / 56. 31.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 16.100 / 5. 16.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt creation_time : 1970-01-01 00:00:00 encoder : Lavf52.73.0 Duration: 00:09:56.46, start: 0.000000, bitrate: 524 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 424x240, 420 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler encoder : libx264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 99 kb/s (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : DataHandler Here's output of stat.html ubuntu@aws01:~/video$ links http://localhost:8090/stat.html ffserver Status (p1 of 2) ffserver Status Available Streams Path Served Format Bit Video Audio Feed Conns bytes rate kbits/s Codec kbits/s Codec kbits/s live.m3u8 0 0 hls 464 420 libx264 99 libfdk_aac feed1. stat.html 2 1868 - - - - index.html 0 0 - - - - Feed feed1.ffm Stream type kbits/s codec Parameters 0 video 420 libx264 424x240, q=2-31, fps=24 1 audio 99 libfdk_aac 2 channel(s), 48000 Hz Connection Status Number of connections: 2 / 1000 Bandwidth in use: 0k / 1000k ffserver Status (p2 of 2) # File IP Proto State Target Actual Bytes bits/sec bits/sec transf 1 stat.html 127.0.0.1 HTTP/1.1 HTTP_WAIT_REQUEST 0 0 2 feed1.ffm(input) 127.0.0.1 HTTP/1.1 RECEIVE_DATA 841k 653k ---------------------------------------------------------------------- Generated at Tue May 5 11:20:51 2015 My ffserver config is very simple, since I'm trying to use the original input and using override_ffserver. <Stream live.m3u8> Feed feed1.ffm Format hls </Stream> Now when I try to access http://<ip addr>:8090/live.m3u8 I get a ton of repeated errors on ffserver Tue May 5 11:29:23 2015 [mpegts @ 0x3cdad60]AAC bitstream not in ADTS format and extradata missing Tue May 5 11:29:23 2015 Error writing frame to output for stream 'live.m3u8': Invalid data found when processing input Tue May 5 11:29:23 2015 [mpegts @ 0x3cdad60]AAC bitstream not in ADTS format and extradata missing Tue May 5 11:29:23 2015 Error writing frame to output for stream 'live.m3u8': Invalid data found when processing input Tue May 5 11:29:23 2015 [mpegts @ 0x3cdad60]H.264 bitstream error, startcode missing, size 258 data 000000FE Tue May 5 11:29:23 2015 [mpegts @ 0x3cdad60]AAC bitstream not in ADTS format and extradata missing Tue May 5 11:29:23 2015 Error writing frame to output for stream 'live.m3u8': Invalid data found when processing input Tue May 5 11:29:23 2015 [mpegts @ 0x3cdad60]AAC bitstream not in ADTS format and extradata missing Tue May 5 11:29:23 2015 Error writing frame to output for stream 'live.m3u8': Invalid data found when processing input I don't know if the fact that I'm using a file and attempting to stream that as a simulation for live is the problem...? I haven't tried with the real live stream from camera yet. If anyone has gotten a working config to have ffserver stream hls, I'd really appreciate the help thanks Ricardo
Any updates? I'm looking for the same. Ricardo Kleemann <ricardo <at> americasnet.com> writes:
I've been searching around the net found only a few examples but so far
not
having much success.
My objective is to get a camera stream (available as input to ffmpeg as m3u8) and feed it to ffserver, and play it out also as m3u8.
First, what I'm doing is simulating that by taking an mp4 file as input instead.
participants (2)
-
Cassiano -
Ricardo Kleemann