بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

پخش فیلم ویدئو آنلاین و ... با لایببری Vitamio

مدیریت گفتگو
sahand77 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام 

با توجه به اینکه بعضی از دوستان با ایمپورت کردن و استفاده از 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>

 حالا برنامه رو اجرا کنید و از برنامه زنده لذت ببرید هرچند با این روش هر لینکی که منتهی به یه فیلم یا صوت بشه رو میشه پخش کرد.

پایان!!!!!!!!! :)

 

نظرات

kamal_hajatmand 10 سال پیش
اولا تشکر از آموزش مفید تون ، من یه سوال داشتم : با استفاده از کتابخونه ویتامینو برنامه در همه گوشی ها به درستی نمایش داده میشه ؟ من یه جا خوندم نوشته بود توی گوشی هایی که پردازنده ARM6+ دارند فایل اجرا نمیشه آیا این درسته ؟ و دوم سرعت پخش این برنامه چگونه است ؟
sahand77 10 سال پیش
خواهش میکنم من با این لایبرری یه تلوزیون آنلاین نوشتم که با اینترنت گوشی و adsl به زیبایی و راحتی کار میکنه و در مورد پردازنده هم من تابحال این مورد رو نداشتم به خصوص که پردازنده خودمم ARM هستش
محمد 10 سال پیش
لایبرری ویتامیو لایسنس داره یا رایگانه؟ منظورم اینه که اگه بخوایم توی گوگل پلی ازش استفاده بکنیم رایگانه یا باید لایسنسشو بخریم؟
sahand77 10 سال پیش
طبق چیزی که تو صفحه اول سایت ویتامیو خوندم ویتامیو sdk اوپن سورس برای اندورید و ios و کاملا رایگانه

پاسخ‌ها 1

amraee 10 سال پیش

تشکر از sahand77

کد کلاس G را فراموش کردید

 

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .