Loading Remote ffmpeg FMP4 HLS Streams Return Faulty Codec with Missing Pixel Format
|Reported by:||Offek||Owned by:|
|Blocking:||Reproduced by developer:||no|
|Analyzed by developer:||no|
Summary of the bug:
An HLS stream of the fmp4 segment format created with ffmpeg is not playable (using ffplay), and is not able to be copied/streamed using another ffmpeg instance from remote machines because it returns faulty codec parameters with missing pixel format "none(left)" instead of yuv420p.
How to reproduce:
In one machine, in the correct html directory, create the fmp4 hls stream
sudo ffmpeg -y -analyzeduration 6M -probesize 6M -i "udp://..." -map 0 -profile:v main -bf 0 -preset faster -ar 48000 -crf 20 -b:a 96k -c:v h264 -c:a aac -movflags faststart -f hls -hls_segment_type fmp4 -hls_time 5 -hls_list_size 12 -hls_flags delete_segments -hls_segment_filename high_%d.m4s high.m3u8
In any other machine
sudo ffmpeg -loglevel debug -y -analyzeduration 10M -probesize 10M -f hls -i http://184.108.40.206/transcode/fmp4test1/high.m3u8 -map 0 -codec copy -preset fast -f hls -hls_segment_type fmp4 -hls_time 5 -hls_list_size 725 -hls_flags delete_segments -hls_segment_filename high_%d.m4s high.m3u8
This second set of commands fail, as they can't detect the pixel format and throw the partial file error.
I made sure the correct file format is returned in http. Been trying to fix it for weeks. Adding pix_fmt doesn't help here.
You can test using a short fmp4 hls stream I created:
As you can see, vlc and quicktime can play the video because they force the pixel format, however ffmpeg and ffplay fail to do so.
Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.