[Patch] flv: add support for time offset
Jianyong Chen
balus at foxmail.com
Mon Aug 12 14:01:13 UTC 2019
> On Aug 12, 2019, at 7:06 PM, winshining <winshining at 163.com> wrote:
>
> Hi, balus
> I think the second parameter of ngx_http_flv_read in ngx_http_flv_read_metadata and ngx_http_flv_read_tags is incorrect, it should be NGX_FLV_TAG_HEADER_SIZE.
> Besides, 'keyframes' is a non-standard object in metadata, there is no description about it in official tech document, you can refer to https://www.adobe.com/devnet/f4v.html <https://www.adobe.com/devnet/f4v.html> for details. Therefore, if a FLV file without the 'keyframes' object in metadata is played, the member 'times' of structure ngx_http_flv_file_t will be NULL, ngx_http_flv_timestamp_to_offset will crash then.
>
>
>
> _______________________________________________
> nginx-devel mailing list
> nginx-devel at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-devel
Thanks for reading my code!
The first problem is a little confusing indeed. Notice that
NGX_FLV_HEADER_SIZE == NGX_FLV_TAG_HEADER_SIZE + NGX_FLV_PREV_TAG_SIZE,
and when I read a tag, I actually read tag_header + tag_data + prev_tag_size,
thus NGX_FLV_HEADER_SIZE is just what I need. Anyway, this is my fault, I
should have unified the two macros.
The second probelm has been carefully considered in the code. If there is no
‘keyframes’ object found in metadata, ngx_http_flv_parse_metadata() will return
NGX_DECLINED, which means to send the whole file, and therefore
ngx_http_flv_timestamp_to_offset() won’t be called and thus won’t crash.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20190812/aeaa6279/attachment.html>
More information about the nginx-devel
mailing list