我正在使用 Youtube Player api 在我的应用程序中播放 youtube 视频。视频开始播放并在 1-2 秒后暂停
我创建了 Video Fragment 和 ViewGroup。随后我创建了一些 youtobe videoview。
视频 fragment
public static final class VideoFragment extends YouTubePlayerSupportFragment implements
OnInitializedListener
{
private YouTubePlayer player;
private String videoId;
public static VideoFragment newInstance()
{
return new VideoFragment();
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initialize(Constants.DEVELOPER_KEY, this);
}
@Override
public void onDestroy()
{
if (player != null)
{
player.release();
}
super.onDestroy();
}
public void setVideoId(String videoId)
{
if (videoId != null && !videoId.equals(this.videoId))
{
this.videoId = videoId;
if (player != null)
{
player.cueVideo(videoId);
}
}
}
public void pause()
{
if (player != null)
{
player.pause();
}
}
@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player,
boolean restored)
{
this.player = player;
if (!restored && videoId != null)
{
player.cueVideo(videoId);
}
}
@Override
public void onInitializationFailure(Provider provider, YouTubeInitializationResult result)
{
this.player = null;
}
}
创建Youtobe videoview的函数
private ViewGroup createYouTubePlayer(final VideoData data, final FrameLayout youTubePlayer)
{
youTubePlayer.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
FragmentManager fm = mActivity.getSupportFragmentManager();
if (v.getId() == mCurrentYouTubePlayer)
{
return;
}
VideoFragment fragment = (VideoFragment) fm.findFragmentById(mCurrentYouTubePlayer);
if (fragment == null)
{
fragment = VideoFragment.newInstance();
fragment.setVideoId(data.srcPath);
fm.beginTransaction().add(youTubePlayer.getId(), fragment).commit();
mCurrentYouTubePlayer = v.getId();
}
else
{
fm.beginTransaction().remove(fragment).commit();
fragment = VideoFragment.newInstance();
fragment.setVideoId(data.srcPath);
fm.beginTransaction().add(youTubePlayer.getId(), fragment).commit();
mCurrentYouTubePlayer = v.getId();
}
}
});
return youTubePlayer;
}
最佳答案
无法按照 Google 的规定在播放器上方添加按钮,否则播放器将停止:
Note that while videos are playing, this View has a minimum size of 200x110 dp. If you make the view any smaller, videos will automatically stop playing. Also, it is not permitted to overlay the view with other views while a video is playing.
This view does not support padding. To achieve the same effect, wrap the view in another ViewGroup or give it margins.
YouTubePlayer 也不支持填充。
要在视频上叠加您的 View ,我建议您使用 ExoPlayer, 它不是 android sdk 的一部分,但由 google 推荐并包含在 android 开发人员文档中:
http://google.github.io/ExoPlayer/
Exoplayer 允许您流式传输任何类型的视频,而不仅仅是 Youtube 视频。
还值得一提的是,YouTube 应用程序中使用了 Exoplayer。
关于android - 1-2 秒后暂停 youtube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23015127/
动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
在Ruby中,我需要在n毫秒秒后暂停一段代码的执行。我知道RubyTimeout库支持秒的超时:http://ruby-doc.org/stdlib/libdoc/timeout/rdoc/index.html这可能吗? 最佳答案 只需为超时使用十进制值。n毫秒的示例:Timeout::timeout(n/1000.0){sleep(100)} 关于Ruby在n*milli*秒后超时一段代码,我们在StackOverflow上找到一个类似的问题: https:
我仍然收到标题中的“错误”消息,但不知道如何解决。在ApplicationController中,classApplicationController在routes.rb#match'set_activity_account/:id/:value'=>'users#account_activity',:as=>:set_activity_account--thisdoesn'tworkaswell..resources:usersdomemberdoget:action_a,:action_bendcollectiondoget'account_activity'endend和User
目前我正在使用这个正则表达式从YoutubeURL中提取视频ID:url.match(/v=([^&]*)/)[1]我怎样才能改变它,以便它也可以从这个没有v参数的YoutubeURL获取视频ID:http://www.youtube.com/user/SHAYTARDS#p/u/9/Xc81AajGUMU感谢阅读。编辑:我正在使用ruby1.8.7 最佳答案 对于Ruby1.8.7,这就可以了。url_1='http://www.youtube.com/watch?v=8WVTOUh53QY&feature=feedf'url
我正在尝试使用YouTubeAPIv3来更新和删除视频与OAuth2forauthentication通过google-api-client(0.6.4)Rubygem。但是,当我尝试执行这两个操作中的任何一个时,我看到以下错误消息:Google::APIClient::ClientError:InsufficientPermission奇怪的是:使用与update和delete完全相同的身份验证过程,我可以insert(上传)成功,没问题!所以,我不认为这是我的身份验证设置的问题,而是我代码中的其他地方。我的读写scope在所有这些操作中始终相同:https://www.google
一、什么是web项目ui自动化测试?通过测试工具模拟人为操控浏览器,使软件按照测试人员的预定计划自动执行测试的一种方式,可以完成许多手工测试无法完成或者不易实现的繁琐工作。正确使用自动化测试,可以更全面的对软件进行测试,从而提高软件质量进而缩短迭代周期。二、构建测试用例的“九部曲”(一)创建流程包划分功能模块日常测试活动中,都会根据功能模块进行拆分,所以在设计器中我们可以通过创建流程包的方式来拆分需要测试的功能模块,如下图中操作创建一个电脑流程包并且取名为对应的功能模块名称,如果有多个功能模块就创建多个对应的流程包,实在RPA设计器有易用的图形可视化界面,方便管理较多的功能模块。(二)在流程包
目录需求基于JavaCV跨平台执行ffmpeg命令[^1]坑一内存不足坑二多个ffmpeg进程并行导致IO负载大,进而导致ioerror?坑三使用Java操作ffmpeg时,有时会卡死坑四Process的waitFor死锁问题及解决办法需求给透明背景的视频自动叠加一张背景图片基于JavaCV跨平台执行ffmpeg命令1我测试发现的本需求的最小依赖:dependency>groupId>org.bytedecogroupId>artifactId>ffmpeg-platform-gplartifactId>version>5.0-1.5.7version>dependency>核心代码:Stri