Android TV Box を介したビデオ オン デマンドに関するプロジェクトがあります。問題があります。RTMP プレーヤーのオープン ソースが見つかりません。誰かが私を助けたり、rtmp プレーヤーのソース コードについて教えてくれませんか?
私は red5 を使用して、Android 2.2(froyo) のストリーミングとビルドを行います。
Android TV Box を介したビデオ オン デマンドに関するプロジェクトがあります。問題があります。RTMP プレーヤーのオープン ソースが見つかりません。誰かが私を助けたり、rtmp プレーヤーのソース コードについて教えてくれませんか?
私は red5 を使用して、Android 2.2(froyo) のストリーミングとビルドを行います。
RTSP の使用
public class PlayVideoRemote extends Activity
{
private VideoView vView;
private String vSource;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
//sets the Bundle
super.onCreate(savedInstanceState);
//sets the context
setContentView(R.layout.main);
//get the VideoView from the layout file
vView = (VideoView)findViewById(R.id.vview);
//use this to get touch events
vView.requestFocus();
//loads video from remote server
//set the video path
vSource ="rtsp://v6.cache1.c.youtube.com/CjYLENy73wIaLQnF4qJzpSt4nhMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYMDFmvL1wMysTQw=/0/0/0/video.3gp";
//set the video URI, passing the vSource as a URI
vView.setVideoURI(Uri.parse(vSource));
//enable this if you want to enable video controllers, such as pause and forward
vView.setMediaController(new MediaController(this));
//plays the movie
vView.start();
}
}
RTMP については、このConvert video Input Stream to RTMPを参照してください
rtmpライブストリームは、AndroidWebview埋め込みFlashPlayerで再生できます。以下に、rtmpを再生するための完全なソースコードを示します。
このURLhttp://www.adobe.com/devnet-apps/flashruntimes/certified-devices.htmlを確認する必要がありますが 、 ここにフラッシュがサポートされているデバイスがリストされています。したがって、フラッシュをサポートするそのようなデバイスでコードをテストします。
public class WebViewPlayer extends Activity {
WebView webView;
Utils utils;
String bodyHtml;
String rtmpUrl;
String fileName;
String htmlVideoEmbedCode ;
String htmlPost = "</body></html>";
String htmlPre = "<!DOCTYPE html>"
+ "<html lang=\"en\">"
+ "<head><meta charset=\"utf-8\">"
+ "</head>"
+ "<body style='margin:0; pading:0;"
+ " background-color: #71D5CA;'>";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.flash_player);
RegisterActivities.registerActivity(this);
utils = new Utils(this);
if(! utils.isConnectionPossible()){
utils.getMessageDialogBox("Alert", "The Device cannot connect to the internet."
+ "Please make sure internet is available.", "OK",
true)
.show();
}
rtmpUrl = YOUR_RTMP_URL);
fileName = YOUR_FILE_NAME);
htmlVideoEmbedCode = getVideoEmbedCode();
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setAppCacheEnabled(true);
webView.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view, int progress) {
if(progress == 100)
((ProgressBar)findViewById(R.id.progressBarWebView))
.setVisibility(View.INVISIBLE);
}
});
refreshFileName();
}
@Override
protected void onResume() {
super.onResume();
webView.refreshPlugins(true);
}
private String getVideoEmbedCode() {
return "<embed "
+ "type=\"application/x-shockwave-flash\""
+ "id=\"player1\" " + "name=\"player1\" "
+ "src=\"http://www.c-span.org/"
+ "cspanVideoHD.swf\""
+ "width=\""+utils.getDisplayWidth()+"\""
+ "height=\""+(utils.getDisplayHeight()+40)+"\"" + " flashvars=@FILESRC@"
+ "allowfullscreen=\"true\""
+ "allowscripaccess=\"always\""
+ "/>";
}
private void refreshFileName() {
if (fileName.endsWith(".flv")) {
fileName = "flv:" + fileName;
}
bodyHtml = htmlVideoEmbedCode ;
bodyHtml = bodyHtml.replaceAll("@FILESRC@",
"\"file=" + fileName
+ "&streamer=" + rtmpUrl + "\"");
webView.loadDataWithBaseURL("http://127.0.0.1",
htmlPre + bodyHtml
+ htmlPost, "text/html", "UTF-8", null);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
webView.stopLoading();
webView.destroy();
// webView = null;
}
}