Samuel Pitoiset <[email protected]> wrote:

>---
> libavformat/rtmpproto.c |   10 +++++++++-
> 1 files changed, 9 insertions(+), 1 deletions(-)
>
>diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
>index 9cdb639..209d108 100644
>--- a/libavformat/rtmpproto.c
>+++ b/libavformat/rtmpproto.c
>@@ -66,6 +66,7 @@ typedef struct RTMPContext {
>int           chunk_size;                 ///< size of the chunks RTMP
>packets are divided into
>     int           is_input;                   ///< input/output flag
>char          *playpath;                  ///< stream identifier to
>play (with possible "mp4:" prefix)
>+    int           live;                       ///< live stream
>     char          *app;                       ///< name of application
>     ClientState   state;                      ///< current state
>int           main_channel_id;            ///< an additional channel ID
>which is used for some invocations
>@@ -287,7 +288,7 @@ static void gen_play(URLContext *s, RTMPContext
>*rt)
> 
>av_log(s, AV_LOG_DEBUG, "Sending play command for '%s'\n",
>rt->playpath);
>     ff_rtmp_packet_create(&pkt, RTMP_VIDEO_CHANNEL, RTMP_PT_INVOKE, 0,
>-                          20 + strlen(rt->playpath));
>+                          32 + strlen(rt->playpath));
>     pkt.extra = rt->main_channel_id;
> 
>     p = pkt.data;
>@@ -295,6 +296,7 @@ static void gen_play(URLContext *s, RTMPContext
>*rt)
>     ff_amf_write_number(&p, ++rt->nb_invokes);
>     ff_amf_write_null(&p);
>     ff_amf_write_string(&p, rt->playpath);
>+    ff_amf_write_number(&p, rt->live);
> 
>ff_rtmp_packet_write(rt->stream, &pkt, rt->chunk_size,
>rt->prev_pkt[1]);
>     ff_rtmp_packet_destroy(&pkt);
>@@ -908,6 +910,11 @@ static int rtmp_open(URLContext *s, const char
>*uri, int flags)
>         strncat(rt->playpath, fname, PLAYPATH_MAX_LENGTH - 5);
>     }
> 
>+    /* If you pass -1 in the Start field (ie. the live field),
>+     * only the live stream is played. If you pass 0, a
>+     * recorded stream is played. */
>+    rt->live = (rt->live) ? -1 : 0;

-2 should be "try both". Please doublecheck.

>     rt->client_report_size = 1048576;
>     rt->bytes_read = 0;
>     rt->last_bytes_read = 0;
>@@ -1050,6 +1057,7 @@ static int rtmp_write(URLContext *s, const
>uint8_t *buf, int size)
> 
> static const AVOption rtmp_options[] = {
>{"rtmp_app", "Name of application to connect to on the RTMP server",
>OFFSET(app), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC},
>+    {"rtmp_live", "Specify that the media is a live stream.",
>OFFSET(live), AV_OPT_TYPE_INT, {0}, 0, 1, DEC},
>{"rtmp_playpath", "Stream identifier to play or to publish",
>OFFSET(playpath), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, DEC|ENC},
>     { NULL },
> };
>-- 
>1.7.7.5 (Apple Git-26)
>
>_______________________________________________
>libav-devel mailing list
>[email protected]
>https://lists.libav.org/mailman/listinfo/libav-devel

-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to