Changes between Initial Version and Version 1 of Ticket #1642, comment 6


Ignore:
Timestamp:
Aug 19, 2012, 1:28:45 AM (14 years ago)
Author:
kelexel

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1642, comment 6

    initial v1  
    22
    33Now, the real issue resides in the #EXT-X-TARGETDURATION being written at the end of the file.
    4 Because it is only written when ffmpeg exepects to have reached the end of the file, it will really, definitely, break HLS.
     4Because it is only written when ffmpeg exepects to have reached the end of the file, this behavior from your patch will really, definitely, break HLS.
    55
    6 Keep in mind I am talking about fetching a live (RTMP in my case) feed, for which you have no clue of when the feed ends - so no clue of when you will invoke segment_list_close)
     6Keep in mind I am talking about transcoding to -f segment a live (RTMP in my case) feed, for which you have no clue of when the feed ends - so no clue of when you will invoke segment_list_close)
    77
    88All I can do is encourage you to check by yourself, using any source file and -f segment, outputing mpegts files to a dir, and use an iOS device to read said files.
     9
    910The playlist will be read by the client each time the client will reach the last file specified in the playlist, and keep doing it until it eventually reaches a #EXT-X-ENDLIST) in said playlist.
     11
    1012If the iOS device has no clue of the segment length it should expect, it will miserably fail to read said stream (at least on iOS 5.x)
    1113
    1214So, once again, your patch will work for known duration files, i.e.: I'm transcoding a file, because the client will find in the playlist, at the end, both the EXT-X-TARGETDURATION and mostly EXT-X-ENDFILE tags, so the iOS device and mobile safari will be happy and know where your steam starts, when it ends and in how many segments it should expect it.
    13 But this logic breaks HTTPLiveStream !
     15
    1416I won't argue on the pseuso scarse (I agree) RFC on m3u8.
    1517But real-life tests show that if that tag is not present at the top of the file, it will simply not work.
     18
    1619iOS devices need to know that tag to accept reading the mpeg2ts segments. If it doesn't find that tag it simply throws an error. When you are doing live transcoding of a current video stream,  you have no idea when the stream will end, so your only chance is to put that tag in segment_list_open and really not in segment_list_close
    1720