branch master updated. e0056c5 Add option --realtime (-R) to rtmpdump to disable the BUFX hack
The branch, master has been updated via e0056c51cc1710c9a44d2a2c4e2f344fa9cabcf4 (commit) via 603ff20e9e717a70b5b0c011f3413cf376d0c2f6 (commit) from 7340f6dbc6b3c8e552baab2e5a891c2de75cddcc (commit) - Log ----------------------------------------------------------------- commit e0056c51cc1710c9a44d2a2c4e2f344fa9cabcf4 Author: Ulrik Dickow <u.dickow@gmail.com> AuthorDate: Tue Jul 24 17:17:26 2012 +0200 Commit: Howard Chu <hyc@highlandsun.com> CommitDate: Thu Jul 26 04:59:16 2012 -0700 Add option --realtime (-R) to rtmpdump to disable the BUFX hack diff --git a/rtmpdump.1 b/rtmpdump.1 index 0d9de8d..7bb5328 100644 --- a/rtmpdump.1 +++ b/rtmpdump.1 @@ -1,4 +1,4 @@ -.TH RTMPDUMP 1 "2011-07-20" "RTMPDump v2.4" +.TH RTMPDUMP 1 "2012-07-24" "RTMPDump v2.4" .\" Copyright 2011 Howard Chu. .\" Copying permitted according to the GNU General Public License V2. .SH NAME @@ -177,6 +177,12 @@ live streams is possible. Name of live stream to subscribe to. Defaults to .IR playpath . .TP +.B \-\-realtime \-R +Download approximately in realtime, without attempting to speed up via +Pause/Unpause commands ("the BUFX hack"). +Useful for servers that jump backwards in time at the Unpause command. +Resuming and seeking in realtime streams is still possible. +.TP .B \-\-resume \-e Resume an incomplete RTMP download. .TP diff --git a/rtmpdump.1.html b/rtmpdump.1.html index 826f722..4c39b35 100644 --- a/rtmpdump.1.html +++ b/rtmpdump.1.html @@ -6,7 +6,7 @@ <tr><td>RTMPDUMP(1)<td align="center"><td align="right">RTMPDUMP(1) </thead> <tfoot> -<tr><td>RTMPDump v2.4<td align="center">2011-07-20<td align="right">RTMPDUMP(1) +<tr><td>RTMPDump v2.4<td align="center">2012-07-24<td align="right">RTMPDUMP(1) </tfoot> <tbody><tr><td colspan="3"><br><br><ul> <!-- Copyright 2011 Howard Chu. @@ -34,6 +34,7 @@ rtmpdump − RTMP streaming media client [<b>−y</b><i> playpath</i>] [<b>−Y</b>] [<b>−v</b>] +[<b>−R</b>] [<b>−d</b><i> subscription</i>] [<b>−e</b>] [<b>−k</b><i> skip</i>] @@ -218,6 +219,15 @@ Name of live stream to subscribe to. Defaults to </dl> <p> <dl compact><dt> +<b>−−realtime −R</b> +<dd> +Download approximately in realtime, without attempting to speed up via +Pause/Unpause commands ("the BUFX hack"). +Useful for servers that jump backwards in time at the Unpause command. +Resuming and seeking in realtime streams is still possible. +</dl> +<p> +<dl compact><dt> <b>−−resume −e</b> <dd> Resume an incomplete RTMP download. diff --git a/rtmpdump.c b/rtmpdump.c index 34bfdba..e52f7d4 100644 --- a/rtmpdump.c +++ b/rtmpdump.c @@ -441,7 +441,7 @@ GetLastKeyframe(FILE * file, // output file [in] int Download(RTMP * rtmp, // connected RTMP object - FILE * file, uint32_t dSeek, uint32_t dStopOffset, double duration, int bResume, char *metaHeader, uint32_t nMetaHeaderSize, char *initialFrame, int initialFrameType, uint32_t nInitialFrameSize, int nSkipKeyFrames, int bStdoutMode, int bLiveStream, int bHashes, int bOverrideBufferTime, uint32_t bufferTime, double *percent) // percentage downloaded [out] + FILE * file, uint32_t dSeek, uint32_t dStopOffset, double duration, int bResume, char *metaHeader, uint32_t nMetaHeaderSize, char *initialFrame, int initialFrameType, uint32_t nInitialFrameSize, int nSkipKeyFrames, int bStdoutMode, int bLiveStream, int bRealtimeStream, int bHashes, int bOverrideBufferTime, uint32_t bufferTime, double *percent) // percentage downloaded [out] { int32_t now, lastUpdate; int bufferSize = 64 * 1024; @@ -492,6 +492,8 @@ Download(RTMP * rtmp, // connected RTMP object bResume ? "Resuming" : "Starting", (double) size / 1024.0); } + if (bRealtimeStream) + RTMP_LogPrintf(" in approximately realtime (disabled BUFX speedup hack)\n"); } if (dStopOffset > 0) @@ -682,6 +684,8 @@ void usage(char *prog) RTMP_LogPrintf ("--subscribe|-d string Stream name to subscribe to (otherwise defaults to playpath if live is specifed)\n"); RTMP_LogPrintf + ("--realtime|-R Don't attempt to speed up download via the Pause/Unpause BUFX hack\n"); + RTMP_LogPrintf ("--flv|-o string FLV output file name, if the file name is - print stream to stdout\n"); RTMP_LogPrintf ("--resume|-e Resume a partial RTMP download\n"); @@ -748,6 +752,7 @@ main(int argc, char **argv) int protocol = RTMP_PROTOCOL_UNDEFINED; int retries = 0; int bLiveStream = FALSE; // is it a live stream? then we can't seek/resume + int bRealtimeStream = FALSE; // If true, disable the BUFX hack (be patient) int bHashes = FALSE; // display byte counters not hashes by default long int timeout = DEF_TIMEOUT; // timeout connection after 120 seconds @@ -832,6 +837,7 @@ main(int argc, char **argv) #endif {"flashVer", 1, NULL, 'f'}, {"live", 0, NULL, 'v'}, + {"realtime", 0, NULL, 'R'}, {"flv", 1, NULL, 'o'}, {"resume", 0, NULL, 'e'}, {"timeout", 1, NULL, 'm'}, @@ -851,7 +857,7 @@ main(int argc, char **argv) while ((opt = getopt_long(argc, argv, - "hVveqzr:s:t:p:a:b:f:o:u:C:n:c:l:y:Ym:k:d:A:B:T:w:x:W:X:S:#j:", + "hVveqzRr:s:t:p:a:b:f:o:u:C:n:c:l:y:Ym:k:d:A:B:T:w:x:W:X:S:#j:", longopts, NULL)) != -1) { switch (opt) @@ -936,6 +942,9 @@ main(int argc, char **argv) case 'v': bLiveStream = TRUE; // no seeking or resuming possible! break; + case 'R': + bRealtimeStream = TRUE; // seeking and resuming is still possible + break; case 'd': STR2AVAL(subscribepath, optarg); break; @@ -1181,7 +1190,7 @@ main(int argc, char **argv) &flashVer, &subscribepath, &usherToken, dSeek, dStopOffset, bLiveStream, timeout); /* Try to keep the stream moving if it pauses on us */ - if (!bLiveStream && !(protocol & RTMP_FEATURE_HTTP)) + if (!bLiveStream && !bRealtimeStream && !(protocol & RTMP_FEATURE_HTTP)) rtmp.Link.lFlags |= RTMP_LF_BUFX; off_t size = 0; @@ -1348,8 +1357,8 @@ main(int argc, char **argv) nStatus = Download(&rtmp, file, dSeek, dStopOffset, duration, bResume, metaHeader, nMetaHeaderSize, initialFrame, - initialFrameType, nInitialFrameSize, - nSkipKeyFrames, bStdoutMode, bLiveStream, bHashes, + initialFrameType, nInitialFrameSize, nSkipKeyFrames, + bStdoutMode, bLiveStream, bRealtimeStream, bHashes, bOverrideBufferTime, bufferTime, &percent); free(initialFrame); initialFrame = NULL; commit 603ff20e9e717a70b5b0c011f3413cf376d0c2f6 Author: Ulrik Dickow <u.dickow@gmail.com> AuthorDate: Thu Jul 26 04:57:23 2012 -0700 Commit: Howard Chu <hyc@highlandsun.com> CommitDate: Thu Jul 26 04:58:17 2012 -0700 Add .gitignore to ignore generated files diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c7ec44f --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.[oa] +*.exe +*.so +*.so.[0-9] +*.dylib +rtmpdump +rtmpgw +rtmpsrv +rtmpsuck ----------------------------------------------------------------------- Summary of changes: .gitignore | 9 +++++++++ rtmpdump.1 | 8 +++++++- rtmpdump.1.html | 12 +++++++++++- rtmpdump.c | 19 ++++++++++++++----- 4 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 .gitignore hooks/post-receive --
participants (1)
-
gil@avcodec.org