在 android 原生应用中实现 Brightcove 播放器
Posted
技术标签:
【中文标题】在 android 原生应用中实现 Brightcove 播放器【英文标题】:Implement Brightcove player in android native app 【发布时间】:2012-08-08 07:10:40 【问题描述】:我只想在 android.i 中实现 Brightcove 播放器,来自
http://support.brightcove.com/en/docs/accessing-video-content-media-api
http://support.brightcove.com/en/docs/best-practices-android-app-development
由此,我得到的视频网址为“http://api.brightcove.com/services/library?command=find_video_by_id&video_id=1520880903001&video_fields=name,length,FLVURL&media_delivery=http&token=jskS1rEtQHy9exQKoc14IcMq8v5x2gCP6yaB7d0hraRtO__6HUuxMg..”
我在 videocloud 上获得了特定视频的 VideoId,Video_fields。我只想在 android 本机应用程序的 Brightcove 播放器上使用这些信息播放该视频。
我的代码:
private static final String MyApiToken = "我的令牌"; 私有 ReadAPI mReadAPI = new ReadAPI(MyApiToken); 私人 com.brightcove.mobile.mediaapi.model.Video pVideo;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
makeAPICall();
private void makeAPICall()
Log.d("Sample", "Beginning makeAPICall");
EnumSet<VideoFieldEnum> videoFields = VideoFieldEnum.createEmptyEnumSet();
videoFields.add(VideoFieldEnum.NAME);
videoFields.add(VideoFieldEnum.LENGTH);
videoFields.add(VideoFieldEnum.FLVURL);
try
long videoId =My videoId;
pVideo = mReadAPI.findVideoById(videoId, videoFields, null);
catch(Exception e)
String msg = e.getMessage();
Log.e("Sample", msg);
//Create the player
BCPlayerView mPlayer;
mPlayer = (BCPlayerView) findViewById(R.id.player);
mPlayer.load(pVideo);
mPlayer.start();
我还添加了诸如 bc-android-mediapi.jar 和 bc-android-player.jar 之类的库 jar。当我尝试运行时。,我得到了黑屏,视频播放器控制器可见。但是视频没有播放。我什么都没有需要进一步包括吗?
谢谢。
【问题讨论】:
【参考方案1】:我知道这是一篇旧帖子,但我在寻找相同答案时遇到了麻烦。
我是这样解决的:
确保您的应用有权访问互联网
<uses-permission android:name="android.permission.INTERNET"/>
将读取 API 令牌密钥用于 URL 访问 (How to get this token)
通过强制媒体传输类型为 H264
theReadAPI.setMediaDeliveryType(MediaDeliveryTypeEnum.HTTP);
希望这可以帮助其他遇到此库问题的人。这是我的完整代码示例:
Logger mAPILogger = Logger.getLogger("BCAndroidAPILogger");
ReadAPI theReadAPI = new ReadAPI("read with URL Access token");
theReadAPI.setMediaDeliveryType(MediaDeliveryTypeEnum.HTTP);
theReadAPI.setLogger(mAPILogger);
EnumSet<VideoFieldEnum> videoFields = VideoFieldEnum
.createEmptyEnumSet();
videoFields.add(VideoFieldEnum.ID);
videoFields.add(VideoFieldEnum.NAME);
videoFields.add(VideoFieldEnum.LENGTH);
videoFields.add(VideoFieldEnum.RENDITIONS);
videoFields.add(VideoFieldEnum.FLVURL);
videoFields.add(VideoFieldEnum.THUMBNAILURL);
videoFields.add(VideoFieldEnum.VIDEOFULLLENGTH);
try
// Get My Playlist
Playlist thePlaylist = theReadAPI.findPlaylistById(1234567890123,
videoFields, null, null);
BCPlayerView thePlayer = (BCPlayerView) findViewById(R.id.player);
thePlayer.logEnabled(true);
thePlayer.load(thePlaylist.getVideos().get(0));
thePlayer.start();
catch (Exception e)
e.printStackTrace();
【讨论】:
以上是关于在 android 原生应用中实现 Brightcove 播放器的主要内容,如果未能解决你的问题,请参考以下文章
在 Activity 中实现 getContentView 操作