Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
78e05457
authored
Jul 10, 2017
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Re-add RTMP extension classes
parent
68827878
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
156 additions
and
0 deletions
extensions/rtmp/src/main/AndroidManifest.xml
extensions/rtmp/src/main/java/com/google/android/exoplayer2/ext/rtmp/RtmpDataSource.java
extensions/rtmp/src/main/java/com/google/android/exoplayer2/ext/rtmp/RtmpDataSourceFactory.java
extensions/rtmp/src/main/AndroidManifest.xml
0 → 100644
View file @
78e05457
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2017 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manifest
package=
"com.google.android.exoplayer2.ext.rtmp"
/>
extensions/rtmp/src/main/java/com/google/android/exoplayer2/ext/rtmp/RtmpDataSource.java
0 → 100644
View file @
78e05457
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
google
.
android
.
exoplayer2
.
ext
.
rtmp
;
import
android.net.Uri
;
import
android.support.annotation.Nullable
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.upstream.DataSource
;
import
com.google.android.exoplayer2.upstream.DataSpec
;
import
com.google.android.exoplayer2.upstream.TransferListener
;
import
java.io.IOException
;
import
net.butterflytv.rtmp_client.RtmpClient
;
import
net.butterflytv.rtmp_client.RtmpClient.RtmpIOException
;
/**
* A Real-Time Messaging Protocol (RTMP) {@link DataSource}.
*/
public
final
class
RtmpDataSource
implements
DataSource
{
@Nullable
private
final
TransferListener
<?
super
RtmpDataSource
>
listener
;
private
RtmpClient
rtmpClient
;
private
Uri
uri
;
public
RtmpDataSource
()
{
this
(
null
);
}
/**
* @param listener An optional listener.
*/
public
RtmpDataSource
(
@Nullable
TransferListener
<?
super
RtmpDataSource
>
listener
)
{
this
.
listener
=
listener
;
}
@Override
public
long
open
(
DataSpec
dataSpec
)
throws
RtmpIOException
{
rtmpClient
=
new
RtmpClient
();
rtmpClient
.
open
(
dataSpec
.
uri
.
toString
(),
false
);
this
.
uri
=
dataSpec
.
uri
;
if
(
listener
!=
null
)
{
listener
.
onTransferStart
(
this
,
dataSpec
);
}
return
C
.
LENGTH_UNSET
;
}
@Override
public
int
read
(
byte
[]
buffer
,
int
offset
,
int
readLength
)
throws
IOException
{
int
bytesRead
=
rtmpClient
.
read
(
buffer
,
offset
,
readLength
);
if
(
bytesRead
==
-
1
)
{
return
C
.
RESULT_END_OF_INPUT
;
}
if
(
listener
!=
null
)
{
listener
.
onBytesTransferred
(
this
,
bytesRead
);
}
return
bytesRead
;
}
@Override
public
void
close
()
{
if
(
uri
!=
null
)
{
uri
=
null
;
if
(
listener
!=
null
)
{
listener
.
onTransferEnd
(
this
);
}
}
if
(
rtmpClient
!=
null
)
{
rtmpClient
.
close
();
rtmpClient
=
null
;
}
}
@Override
public
Uri
getUri
()
{
return
uri
;
}
}
extensions/rtmp/src/main/java/com/google/android/exoplayer2/ext/rtmp/RtmpDataSourceFactory.java
0 → 100644
View file @
78e05457
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
google
.
android
.
exoplayer2
.
ext
.
rtmp
;
import
android.support.annotation.Nullable
;
import
com.google.android.exoplayer2.upstream.DataSource
;
import
com.google.android.exoplayer2.upstream.HttpDataSource.Factory
;
import
com.google.android.exoplayer2.upstream.TransferListener
;
/**
* A {@link Factory} that produces {@link RtmpDataSource}.
*/
public
final
class
RtmpDataSourceFactory
implements
DataSource
.
Factory
{
@Nullable
private
final
TransferListener
<?
super
RtmpDataSource
>
listener
;
public
RtmpDataSourceFactory
()
{
this
(
null
);
}
/**
* @param listener An optional listener.
*/
public
RtmpDataSourceFactory
(
@Nullable
TransferListener
<?
super
RtmpDataSource
>
listener
)
{
this
.
listener
=
listener
;
}
@Override
public
DataSource
createDataSource
()
{
return
new
RtmpDataSource
(
listener
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment