On 1/10/16 4:29 PM, Deron wrote:
I'm using ffmpeg to generate an HLS stream from a tv tuner capture
card, and while it generates the sub-streams nicely, it seems that the
two streams get out of sync pretty quickly for some stations. What I
mean by that is the segments numbers (and the EXT-X-MEDIA-SEQUENCE)
differ. When the iPhone decides to switch from one to the other, it
will "hang" for several seconds before resuming.
The test command is:
ffmpeg -f lavfi -i
movie=/dev/dvb/adapter3/dvr0:f=mpegts:s=dv+da[out0+subcc][out1]
-force_key_frames expr:gte(t,n_forced*2) -c:v libx264 -vprofile
baseline -vf scale=1280:720 -s 1280x720 -aspect 1280:720 -pix_fmt
yuv420p -r 30 -preset veryfast -b:v 1200k -c:a libfaac -ar 48000 -ac 2
-async 2 -af volume=volume=11dB -flags:a -global_header -f hls
-hls_time 2 -hls_list_size 10 -hls_wrap 20000 -hls_flags
delete_segments -hls_segment_filename
/var/www/html/stream/wfgc/v.mid.%d.ts -y
/var/www/html/stream/wfgc/v.mid.m3u8 -force_key_frames
expr:gte(t,n_forced*2) -c:v libx264 -vprofile baseline -vf
scale=640:360 -s 640x360 -aspect 640:360 -pix_fmt yuv420p -r 30
-preset veryfast -b:v 200k -c:a libfaac -b:a 50k -ar 24000 -ac 1
-async 2 -af volume=volume=11dB -flags:a -global_header -f hls
-hls_time 2 -hls_list_size 10 -hls_wrap 2000 -hls_flags
delete_segments -hls_segment_filename
/var/www/html/stream/wfgc/v.portrait.%d.ts -y
/var/www/html/stream/wfgc/v.portrait.m3u8
I can provide console output, but I've not seen anything useful after
piles of output.
I'm guessing that chopping into 2 second segments, then passing to be
scale/encode in two sub-streams (instead of two sub-streams chopping
into 2 second segments) would solve the problem but I don't know of
any way to do that except write an libav* app?
Any suggestions?
Deron
No replies, so maybe I can ask a more specific question that someone has
an answer for.
Right now, I presume the above command does something like this (and
that force_key_frames is for some reason choosing different places
between the two process paths)
input stream ---> [force_key_frames] [scale] etc [segment] -> output1
|--> [force_key_frames] [scale] etc [segment] -> output2
Is there some way to cause this instead:
input stream [force_key_frames] ---> [scale] etc [segment] -> output1
|--> [scale] etc [segment] -> output2
Or better yet:
input stream [force_key_frames] [segment] ---> [scale] etc -> output1
|--> [scale] etc -> output2
?
Thanks!
Deron
--
Happy Trails,
Deron Kazmaier de...@dogstarkennel.com
KD0AYO Western South Dakota
Dog Star Kennel http://www.dogstarkennel.com
--- Racing AKC Sepp-Star Seppala Siberian Husky Sled Dogs
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user