首先创建一个RenderTexture,然后放到需要成像的摄像头的TargetTexture位置,如下图红线所示,
最后将此RenderTexture放在需要看到的模型上,我是创建了个
红线处摄像头的为上面添加了RenderTexsture的摄像头,下面的蓝色的板就是放了相同RenderTexture的Panel,这样就可以将红线的摄像头看到的东西呈现在下面的板上了,
可可工作室出品:
欢迎使用可可直播视频播放器:
http://pan.baidu.com/share/link?shareid=3291150676&uk=4111208708
1、流媒体开发之--直播实现
2、流媒体开发之-直播自定义列表
3、流媒体开发之-服务器图片的加载
4、流媒体开发之-直播自定义分类
5、流媒体开发之-获取直播节目预告-1
6、流媒体开发之-直播界面切换电视台频道
在5、流媒体开发之-获取直播节目预告-1 中我们使用了jsoup来获取了网页中的节目预告,为什么上面会添加一个-1呢,因为之前的解析的网页是我随便在网上找到的,因此解析的时候有时并不是最佳的,所以我们需要多寻找几个直播节目预告的网站,寻找一个比较适合的,在-2中我会用一个比较好的网页来解析,这一章我们也会用到之前的jsoup,解析优酷中的网页链接,然后使用vparse来解析这个网页链接获取真正的视频的m3u8,然后传递给播放器进行播放,下面我们先介绍一下Vparse这个工具,它的下载地址http://download.csdn.net/detail/jwzhangjie/6025551,
下载下来后,把VParser.jar放到libs下面,使用的方式很简单
Video video = new VParser(context).parse(url); String videoTitle = video.title; String videoUri = video.videoUri;
当然在程序里面我们不能这样写,因为这个功能是消耗时间的,所以我们要放在一个与主线程无关的后台,可以使用异步,Handler, Thread,这里我们使用官方的一个实例,放在异步里面,首先是布局代码:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/website_url" /> <EditText android:id="@+id/et_website" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textMultiLine" android:text="@string/sample" > </EditText> <Button android:id="@+id/bt_parser" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_parser" /> <TextView android:id="@+id/tv_title" android:layout_marginTop="10dp" android:selectAllOnFocus="true" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_uri" android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:selectAllOnFocus="true" /> </LinearLayout>
接下来就是主代码了:
MainActivity.java
package com.yixia.sample.vparser; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.yixia.vparser.VParser; import com.yixia.vparser.model.Video; public class MainActivity extends Activity implements OnClickListener { private VParser mVParser; private EditText mEditText; private Button mParserButton; private TextView mTitleView; private TextView mUriView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mVParser = new VParser(this); mEditText = (EditText)findViewById(R.id.et_website); mParserButton = (Button)findViewById(R.id.bt_parser); mParserButton.setOnClickListener(this); mTitleView = (TextView)findViewById(R.id.tv_title); mUriView = (TextView)findViewById(R.id.tv_uri); } @Override public void onClick(View v) { String website = mEditText.getText().toString(); if (TextUtils.isEmpty(website)) { return; } new AsyncTask<Object, Void, Video>() { @Override protected Video doInBackground(Object... params) { return mVParser.parse(String.valueOf(params[0])); } @Override protected void onPostExecute(Video result) { super.onPostExecute(result); String title = result.title; String uri = result.videoUri; String website = result.videoSiteUri; mTitleView.setText(title); mUriView.setText(uri); } }.execute(website); } }
看一下解析效果:
我不太清楚大家看见这个链接会想到什么,反正我一看见这个解析出来的m3u8(当然我测试过是好用的),我看见网页链接中的id_后面的XNTY4NTE0OTc2与解析出来的m3u8中vid/后面,type之前的内容是一样的,所以我就想这会不会是巧合呢,所以我就试验了另一个中国合伙人http://v.youku.com/v_show/id_XNTk1MzY5MDE2.html 然后用里面的XNTk1MzY5MDE2替换解析出来的m3u8中的XNTY4NTE0OTc2,然后测试了一下链接是好用的,说明优酷电影频道资源是mp4格式的链接是样式是一样的,这样最便捷的方式获取链接的方式就是使用jsoup把http://movie.youku.com/ 中所有的视频链接获取出现,然后用户点击某一个链接后,取出链接中的id,放在vid和type之间就是这个视频的m3u8链接了,最后放在视频播放器里面播放就可以了,我实验过电视台,电影,综艺都可以以这样的方式获取。
当然这种方式不是最保险的,一旦优酷该变了路径就不行了,你就需要重新去解析一个看看,在下一章中我会讲解解析优酷电影频道,把里面的电影的缩略图,标题,链接解析到本地
可可工作室出品:
欢迎使用可可直播视频播放器:
http://pan.baidu.com/share/link?shareid=3291150676&uk=4111208708
在android中如果有很多文字需要在TextView中进行展示,经常会出现边对不齐的现象,经常是由于标点符号和数字的占据位置不一样导致,这时下面的转换就会有用武之地了。
/** * 半角转换为全角 * * @param input * @return */ public static String ToDBC(String input) { char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 12288) { c[i] = (char) 32; continue; } if (c[i] > 65280 && c[i] < 65375) c[i] = (char) (c[i] - 65248); } return new String(c); } /** * 去除特殊字符或将所有中文标号替换为英文标号 * * @param str * @return */ public static String stringFilter(String str) { str = str.replaceAll("【", "[").replaceAll("】", "]") .replaceAll("!", "!").replaceAll(":", ":");// 替换中文标号 String regEx = "[『』]"; // 清除掉特殊字符 Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); return m.replaceAll("").trim(); }
1楼u0111144784天前 09:51来踩踩,回踩哦