diff options
-rw-r--r-- | user/rtmpdump/APKBUILD | 39 | ||||
-rw-r--r-- | user/rtmpdump/fix-chunk-size.patch | 46 |
2 files changed, 85 insertions, 0 deletions
diff --git a/user/rtmpdump/APKBUILD b/user/rtmpdump/APKBUILD new file mode 100644 index 000000000..aeaf04c49 --- /dev/null +++ b/user/rtmpdump/APKBUILD @@ -0,0 +1,39 @@ +# Contributor: Carlo Landmeter +# Maintainer: +pkgname=rtmpdump +verbase=2.4 +pkgver=2.4_git20160909 +pkgrel=4 +pkgdesc="A tool to download rtmp:// and rtmpe:// streams" +url="http://rtmpdump.mplayerhq.hu/" +arch="all" +options="!check" # No test suite. +license="GPL-2.0+" +depends="" +depends_dev="zlib-dev" +makedepends="$depends_dev linux-headers openssl-dev" +subpackages="$pkgname-dev $pkgname-doc librtmp" +giturl="git://git.ffmpeg.org/rtmpdump" +disturl="dev.alpinelinux.org:/archive/rtmpdump" +source="http://dev.alpinelinux.org/archive/rtmpdump/rtmpdump-${pkgver}.tar.gz + fix-chunk-size.patch" + +build() { + cd "$builddir" + make +} + +package() { + cd "$builddir" + make -j1 prefix=/usr MANDIR="$pkgdir/usr/share/man" DESTDIR="$pkgdir" install +} + +librtmp() { + pkgdesc="Real Time Messaging Protocol (RTMP) library" + replaces="rtmpdump" + mkdir -p "$subpkgdir"/usr + mv "$pkgdir"/usr/lib "$subpkgdir"/usr/ +} + +sha512sums="e42eda75679addb6f919f42ddce2d27a6988f505602bb70ecb4d071324b59f21d573f8b73fda3b29960c095e20303b84f6eb6254cd327803430d8065cf5d172b rtmpdump-2.4_git20160909.tar.gz +f97b4780fb8cfffccf59785c5a89c8d4929e21ec587192f10602caaf9a0b008dfbfebaa09db1d9d955fc9911fc443d76bf19972cc59fedfab5a8889f7fe70b5d fix-chunk-size.patch" diff --git a/user/rtmpdump/fix-chunk-size.patch b/user/rtmpdump/fix-chunk-size.patch new file mode 100644 index 000000000..b71427327 --- /dev/null +++ b/user/rtmpdump/fix-chunk-size.patch @@ -0,0 +1,46 @@ +diff --git a/librtmp/rtmp.c b/librtmp/rtmp.c +index a2863b0..ac1b3be 100644 +--- a/librtmp/rtmp.c ++++ b/librtmp/rtmp.c +@@ -2077,6 +2077,29 @@ RTMP_SendClientBW(RTMP *r) + } + + static int ++SendClientChunkSize(RTMP *r, int chunkSize) ++{ ++ RTMPPacket packet; ++ char pbuf[256], *pend = pbuf + sizeof(pbuf); ++ int ret; ++ ++ packet.m_nChannel = 0x02; /* control channel (invoke) */ ++ packet.m_headerType = RTMP_PACKET_SIZE_LARGE; ++ packet.m_packetType = RTMP_PACKET_TYPE_CHUNK_SIZE; ++ packet.m_nTimeStamp = 0; ++ packet.m_nInfoField2 = 0; ++ packet.m_hasAbsTimestamp = 0; ++ packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; ++ ++ packet.m_nBodySize = 4; ++ ++ AMF_EncodeInt32(packet.m_body, pend, chunkSize); ++ ret = RTMP_SendPacket(r, &packet, FALSE); ++ r->m_outChunkSize = chunkSize; ++ return ret; ++} ++ ++static int + SendBytesReceived(RTMP *r) + { + RTMPPacket packet; +@@ -3349,6 +3372,11 @@ HandleChangeChunkSize(RTMP *r, const RTMPPacket *packet) + r->m_inChunkSize = AMF_DecodeInt32(packet->m_body); + RTMP_Log(RTMP_LOGDEBUG, "%s, received: chunk size change to %d", __FUNCTION__, + r->m_inChunkSize); ++ if (r->Link.protocol & RTMP_FEATURE_WRITE) ++ { ++ RTMP_Log(RTMP_LOGDEBUG, "%s, updating outChunkSize too", __FUNCTION__); ++ SendClientChunkSize(r, r->m_inChunkSize); ++ } + } + } + |