پخش فیلم ویدئو آنلاین و ... با لایببری Vitamio
سلام
با توجه به اینکه بعضی از دوستان با ایمپورت کردن و استفاده از vitamio مخصوصا در اکلیپس مشکل داشتن برای همین تصمیم گرفتم تجربیات هرچند اندکم رو در اختیار شما قرار بدم
شما از این لایبرری برای پخش ویدئو های آنلاین (مثل شبکه 1 یا حرم امام رضا و...) و فایل های صوتی آنلاین (مثل رادیو ها) و ویدئو و فایل های صوتی ذخیره شده در سرور می باشد و از پروتکل های http , mms , rtsp rtmp , hls و m3u8 پشتیبانی می کند و فرمت های Dix , Xvid , WMV , FLV , TS , TP , MOV , MP4 , AVI و ... را به راحتی پخش می کند .
نکته : شما برای اجرای این لایبرری به api 19 نیاز دارید البته این مورد هیچ ربطی به min sdk ندارد و شما می توانید از هر api مثلا 15 استفاده کنید .
اگر از اندروید استادیو استفاده میکنید کافیه فقط کد زیر رو به بید گردل اضافه کنید و به بخش شرررروع برید و دیگر هیچ :
compile 'me.neavo:vitamio:4.2.2'
نحوه استفاده در اکلیپس :
ابتدا لایبرری رو دانلود کنید vitamio
بعد در اکلیپس ایمپورت کنید و سپس لایبرری رو به پروژه خودتان اضافه کنید
شررررررررررررررررروع:
سپس در اکتیوتی که می خواهد فیلم پخش شود این کد ها را اضافه کنید
ایمپورت ها :
mport io.vov.vitamio.LibsChecker;
import io.vov.vitamio.MediaPlayer;
import io.vov.vitamio.widget.MediaController;
import io.vov.vitamio.widget.VideoView;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.KeyEvent;
در بخش onCreate
if ( !LibsChecker.checkVitamioLibs(this))
return;
setContentView(R.layout.form_online_stream_player);
mVideoView = (VideoView) findViewById(R.id.buffer);
/*options = new HashMap<>();
options.put("rtmp_playpath", "");
options.put("rtmp_swfurl", "");
options.put("rtmp_live", "1");
options.put("rtmp_pageurl", "");*/
mVideoView.setVideoPath("rtmp://185.23.131.187/live//flv:rozeh2");
//mVideoView.setVideoURI(Uri.parse(path), options);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setBufferSize(300);
mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);
mVideoView.getHolder().setFormat(PixelFormat.RGBX_8888);
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
در کد بالا هر چه مقدار setBufferSize بیشتر باشد کیفیت پخش بیشتر شده ولی زمان شروع پخش کمی بیشتر می شود . و شاید اگر سرعت اینترنت کم باشد فیلم گاهی بایستد (مقدار 300 مقدار توصیه شد از نظر من است )
و بخش serVideoPath لینک مورد نظر ماست که این مورد لینک حرم امام رضا است .
بعد از بسته شدن onCreate کد زیر را اضافه کنید
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
finish();
}
return super.onKeyDown(keyCode, event);
}
برای اینکه سوالی باقی نماند اینم کل کدی که تا حالا نوشتیم
package sardary.sahand.app.online_tools;
import io.vov.vitamio.LibsChecker;
import io.vov.vitamio.MediaPlayer;
import io.vov.vitamio.widget.MediaController;
import io.vov.vitamio.widget.VideoView;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.KeyEvent;
public class ActivityStream extends Activity {
//private HashMap<String, String> options;
private VideoView mVideoView;
@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ( !LibsChecker.checkVitamioLibs(this))
return;
setContentView(R.layout.form_online_stream_player);
mVideoView = (VideoView) findViewById(R.id.buffer);
/*options = new HashMap<>();
options.put("rtmp_playpath", "");
options.put("rtmp_swfurl", "");
options.put("rtmp_live", "1");
options.put("rtmp_pageurl", "");*/
mVideoView.setVideoPath("rtmp://185.23.131.187/live//flv:rozeh2");
//mVideoView.setVideoURI(Uri.parse(path), options);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setBufferSize(300);
mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);
mVideoView.getHolder().setFormat(PixelFormat.RGBX_8888);
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
finish();
}
return super.onKeyDown(keyCode, event);
}
}
حالا صفحه form_online_stream_player.xml رو ایجاد کنید
و اون رو به این شکل کد نویسی کنید
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<io.vov.vitamio.widget.CenterLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<io.vov.vitamio.widget.VideoView
android:id="@+id/buffer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</io.vov.vitamio.widget.CenterLayout>
</RelativeLayout>
و در نهایت در manifest پرمیشن های زیر رو اضافه
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
و اکتیویتی زیر رو هم اضافه کنید
<activity
android:name="io.vov.vitamio.activity.InitActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden"/>
اینم کل کد manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.vov.vitamio"
android:versionCode="400"
android:versionName="4.0">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
<activity
android:name="io.vov.vitamio.activity.InitActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden"/>
</application>
</manifest>
حالا برنامه رو اجرا کنید و از برنامه زنده لذت ببرید هرچند با این روش هر لینکی که منتهی به یه فیلم یا صوت بشه رو میشه پخش کرد.
پایان!!!!!!!!! :)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .