mp4 module

Igor Sysoev igor на sysoev.ru
Чт Сен 29 13:21:30 UTC 2011


On Wed, Sep 28, 2011 at 05:46:40AM -0400, arty777 wrote:
> Пришлось откатиться обратно .... а так
> хочется нативный модуль под высокой
> нагрузкой поюзать :) 
> 
> в общем бы хотелось получить
> адекватную реакцию на 
> http://fs1.uakino.net/video/10607.mp4?start=3774.2915999998888888888888888888

А какие плееры настолько неадекватны ?
Прилагаемый патч увеличивает число цифр после запятой до 4.


-- 
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
Index: src/http/modules/ngx_http_mp4_module.c
===================================================================
--- src/http/modules/ngx_http_mp4_module.c	(revision 4155)
+++ src/http/modules/ngx_http_mp4_module.c	(working copy)
@@ -499,7 +499,7 @@
 
         if (ngx_http_arg(r, (u_char *) "start", 5, &value) == NGX_OK) {
 
-            start = ngx_atofp(value.data, value.len, 3);
+            start = ngx_atofp(value.data, value.len, 4);
 
             if (start != NGX_ERROR) {
                 r->allow_ranges = 0;
@@ -1168,7 +1168,7 @@
                    "mvhd timescale:%uD, duration:%uL, time:%.3fs",
                    timescale, duration, (double) duration / timescale);
 
-    duration -= (uint64_t) mp4->start * timescale / 1000;
+    duration -= (uint64_t) mp4->start * timescale / 10000;
 
     ngx_log_debug2(NGX_LOG_DEBUG_HTTP, mp4->file.log, 0,
                    "mvhd new duration:%uL, time:%.3fs",
@@ -1341,7 +1341,7 @@
                    "tkhd duration:%uL, time:%.3fs",
                    duration, (double) duration / mp4->timescale);
 
-    duration -= (uint64_t) mp4->start * mp4->timescale / 1000;
+    duration -= (uint64_t) mp4->start * mp4->timescale / 10000;
 
     ngx_log_debug2(NGX_LOG_DEBUG_HTTP, mp4->file.log, 0,
                    "tkhd new duration:%uL, time:%.3fs",
@@ -1472,7 +1472,7 @@
                    "mdhd timescale:%uD, duration:%uL, time:%.3fs",
                    timescale, duration, (double) duration / timescale);
 
-    duration -= (uint64_t) mp4->start * timescale / 1000;
+    duration -= (uint64_t) mp4->start * timescale / 10000;
 
     ngx_log_debug2(NGX_LOG_DEBUG_HTTP, mp4->file.log, 0,
                    "mdhd new duration:%uL, time:%.3fs",
@@ -1875,7 +1875,7 @@
     }
 
     entries = trak->time_to_sample_entries;
-    start_time = mp4->start * trak->timescale / 1000;
+    start_time = mp4->start * trak->timescale / 10000;
 
     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, mp4->file.log, 0,
                    "time-to-sample start_time:%uL", start_time);


Подробная информация о списке рассылки nginx-ru