close
تبلیغات در اینترنت
streaming X ExoPlayer X HttpURLConnection X local storage X streaming
صفحه اصلی پرشین استک

{ پرشین استک }

به دنیای برنامه نویسی خوش آمدید
|


پرشین استک تنها یک سایت نیست ، بلکه یک پروژه همگانی می باشد .


تعداد مطالب :
142


تعداد توسعه دهندگان :
11


تاریخ امروز :
سه شنبه 04 اردیبهشت 1397

به کانال تلگرام ما بپیوندید


×

لیست سوالات من

افزودن

Android ExoPlayer - دانلود ویدئو (غیر از DASH/HLS) و پخش به صورت همزمان

من می خواهم یک ویدئو را که در Android ExoPlayer در حال پخش است ، دانلود کنم .

قبل از استفاده از ExoPlayer ، یک فیلم را از جریان ورودی که توسط HttpURLConnection ارائه شده ، دانلود کردم و آنرا از حافظه محلی پخش کردم . این خوب بود اگر چه مشکل من را در پخش و ذخیره به صورت همزمان حل نکرد . ExoPlayer سیستم های ذخیره سازی را ارائه میدهد و به نظر می رسد که اینها فقط با جریان های DASH و HLS کار میکنند . من از هیچکدام از اینها استفاده نمی کنم و می  خواهم MP4 را با ExtractorRendererBuilder ذخیره کنم . (  این موضوع در اینجا به طور کامل توضیح داده شده است )

 DefaultHttpDataSource یک API دارد که HttpURLConnection را نشان می دهد ولی من مطمئن نیستم که دوباره از جریان استفاده کنم .

در اینجا نمونه هایی از ExoPlayer نشان داده شده :

 

@Override
public void buildRenderers(DemoPlayer player){
Allocator allocator = new DefaultAllocator(BUFFER_SEGMENT_SIZE);
Handler mainHandler = player.getMainHandler();


// Build the video and audio renderers.
DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(mainHandler,null);
DataSource dataSource = new DefaultUriDataSource(context, bandwidthMeter,userAgent);
ExtractorSampleSource sampleSource = new ExtractorSampleSource(uri,dataSource,allocator,
BUFFER_SEGMENT_COUNT * BUFFER_SEGMENT_SIZE, mainHandler, player,0);
MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer(context,
sampleSource,MediaCodecSelector.DEFAULT,MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT,5000,
mainHandler, player,50);
MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource,
MediaCodecSelector.DEFAULT,null,true, mainHandler, player,
AudioCapabilities.getCapabilities(context),AudioManager.STREAM_MUSIC);
TrackRenderer textRenderer = new TextTrackRenderer(sampleSource, player,
mainHandler.getLooper());


// Invoke the callback.
TrackRenderer[] renderers = new TrackRenderer[DemoPlayer.RENDERER_COUNT];
renderers[DemoPlayer.TYPE_VIDEO] = videoRenderer;
renderers[DemoPlayer.TYPE_AUDIO] = audioRenderer;
renderers[DemoPlayer.TYPE_TEXT] = textRenderer;
player.onRenderers(renderers, bandwidthMeter);
}

 

کاری که من انجام داده ام گسترش DefaultHttpDataSourceand با استفاده از HttpURLConnection برای گرفتن جریان ورودی (InputStream) ، نوشتن در یک فایل در ()getCacheDir است .

این نمونه کلاسی است که DefaultHttpDataSource را گسترش می دهد :

 

public class CachedHttpDataSource extends DefaultHttpDataSource{
public CachedHttpDataSource(String userAgent,Predicate<String> contentTypePredicate){
super(userAgent, contentTypePredicate);
}

public CachedHttpDataSource(String userAgent,Predicate<String> contentTypePredicate,TransferListener listener){
super(userAgent, contentTypePredicate, listener);
}

public CachedHttpDataSource(String userAgent,Predicate<String> contentTypePredicate,TransferListener listener,int connectTimeoutMillis,int readTimeoutMillis){
super(userAgent, contentTypePredicate, listener, connectTimeoutMillis, readTimeoutMillis);
}

public CachedHttpDataSource(String userAgent,Predicate<String> contentTypePredicate,TransferListener listener,int connectTimeoutMillis,int readTimeoutMillis,boolean allowCrossProtocolRedirects){
super(userAgent, contentTypePredicate, listener, connectTimeoutMillis, readTimeoutMillis, allowCrossProtocolRedirects);
}

public HttpURLConnection getURLConnection(){
HttpURLConnection connection = getConnection();

return getConnection();
}

}



حالا می توانم یک InputStream از طریق ()getURLConnection برای ذخیره ویدئو به یک فایل دریافت کنم، اما من واقعا خوشحال نیستم که از InputStream دوباره برای ذخیره ویدئو استفاده کنم .
آیا یک API دیگر یا روش دیگری وجود دارد که دسترسی به یک آرایه بایت را فراهم می کند که بتوانم یک فایل را بنویسم در حالیکه در حال جریان است ؟



پاسخ 1 :
جستجو به عقب یا جلو کار نمی کند.
این قسمتی از کد هست :

public void preparePlayer(String videoUri){
MediaSource videoSource =
new ExtractorMediaSource(Uri.parse( videoUri ), dataSourceFactory, extractorsFactory, handler,null);
exoPlayer.prepare( videoSource );
exoPlayer.setPlayWhenReady(true);
}

public DataSource.Factory buildDataSourceFactory(){
return new DataSource.Factory(){
@Override
public DataSource createDataSource(){
LeastRecentlyUsedCacheEvictor evictor = new LeastRecentlyUsedCacheEvictor( CACHE_SIZE_BYTES );
File cacheDir = //Your cache dir
SimpleCache simpleCache = new SimpleCache( cacheDir, evictor );
DataSource dataSource = buildMyDataSourceFactory().createDataSource();
int cacheFlags = CacheDataSource.FLAG_BLOCK_ON_CACHE |CacheDataSource.FLAG_CACHE_UNBOUNDED_REQUESTS;
return new CacheDataSource( simpleCache, dataSource, cacheFlags, CACHE_SIZE_BYTES );
}
};
}

private DefaultDataSource.Factory buildMyDataSourceFactory(){
return new DefaultDataSourceFactory( context,"jesty-android",new DefaultBandwidthMeter());
}

 

دریافت سورس کامل

صفحه اصلی

43

16 / 05 / 1396

PERSIAN STACK


دانلود تمامی API های اندروید

ادامه مطلب

689

چرا گاهی اوقات API موقعیت مکانی سرویس گوگل پلی ، موقعیت مکانی اشتباهی را برمی گرداند ؟

ادامه مطلب

651

چگونه نرم افزار ضبط صدای اندرویدی بسازیم ؟

ادامه مطلب

551

چرا TextView کلمات را با حروف می شکند ؟

ادامه مطلب

513

چگونه Google API برای سطح API 25 را پیدا کنیم ؟

ادامه مطلب

383

چرا وبسایت تجارت الکترونیک Magento 2 در Webview اندروید کار نمی کند ؟

ادامه مطلب

383

دانلود پروژه نمایش جستجوی کتاب برای اندروید

ادامه مطلب

347

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

273

دانلود کتابخانه Retrofit برای اندروید + پروژه

ادامه مطلب

269

دانلود سورس کد بازی اندرویدی Klooni 1010! + فایل APK

ادامه مطلب

261

در تکمیل خودکار اندروید ، دلیل dispatchProvideAutofillStructure() not laid out چیست ؟

ادامه مطلب

247

چرا زمانی که با استفاده از cordova در اندروید 7.0 ، اس ام اس ارسال می کنیم ، با اثتثنای (Exception) امنیتی مواج

ادامه مطلب

245

آیا راهی برای یافتن تغیرات ماه در نمای تقویم اندروید (calendar view) وجود دارد ؟

ادامه مطلب

243

چگونه ارور com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders را در اندروید رفع کنیم ؟

ادامه مطلب

209

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

199

دانلود سورس کد اپلیکیشن اسکنر بارکد برای اندروید + فایل APK

ادامه مطلب

157

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

155

آموزش استفاده از دیتابیس آماده در پروژه اندرویدی

ادامه مطلب

149

دانلودسورس کد اپلیکیشن موزیک پلیر برای اندروید + فایل APK

ادامه مطلب

143

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

143

دانلود اسکریپت جاوای PS-CH# - ایجاد ورودی متنی پیشرفته

ادامه مطلب

یکشنبه 05 آذر 1396

قسمت هفدهم - لیست ها در HTML

ادامه مطلب

یکشنبه 21 آبان 1396

چگونه می توان با استفاده از CSS ، رنگ placeholder را تغییر داد ؟

ادامه مطلب

یکشنبه 21 آبان 1396

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

شنبه 20 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

شنبه 20 آبان 1396

قسمت پانزدهم - عکس ها در HTML

ادامه مطلب

جمعه 19 آبان 1396

قسمت چهاردهم - لینک ها در HTML

ادامه مطلب

یکشنبه 14 آبان 1396

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

یکشنبه 14 آبان 1396

قسمت سیزدهم - CSS در HTML

ادامه مطلب

شنبه 13 آبان 1396

قسمت بیست و پنجم (قسمت آخر) - آموزش ساخت بازی حدس

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و چهارم - آموزش نحوه ی پردازش فایل ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و سوم - برنامه تکمیلی جاوا (6)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و دوم - معرفی آرایه ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و یکم - برنامه تکمیلی جاوا (5)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیستم - معرفی مفهوم وراثت در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت نوزدهم - برنامه تکمیلی جاوا (4)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هجدهم - معرفی عبارات کنترلی در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هفدهم - برنامه تکمیلی جاوا (2-3)

ادامه مطلب

چهارشنبه 10 آبان 1396

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید می توان آیدی موبایل را بدست آورد ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید برنامه تماس بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید یک منو ساده بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید از برنامه اسکرین شات بگیریم ؟

ادامه مطلب

چگونه می توان در اندروید RTL یا LTR صفحه را ثابت کرد ؟

ادامه مطلب

چگونه می توان در اندروید حالت افقی (landscape) را غیر فعال کرد ؟

ادامه مطلب

آموزش استفاده از دیتابیس آماده در پروژه اندرویدی

ادامه مطلب

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

دانلود کتابخانه GSON برای اندروید + پروژه

ادامه مطلب

دانلود سورس کد اپلیکیشن آموزش زبان انگلیسی + فایل APK

ادامه مطلب

چگونه نگذاریم در آغاز اکتیویتی ، EditText فوکوس را بدست آورد ؟

ادامه مطلب

چگونه کیبورد پیش فرض اندروید (Soft Keyboard) را پنهان کرده یا ببندیم ؟

ادامه مطلب

چرا سرعت مجازی ساز اندروید کم است و چگونه می توان سرعت آنرا افزایش داد ؟

ادامه مطلب

تفاوت بین واحد های اندازه گیری "px" , "dp" , "dip" و "sp" چیست ؟

ادامه مطلب

دانلود سورس کد اپلیکیشن آهنگ سازی برای اندروید + فایل APK

ادامه مطلب

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

× برای نظر گذاشتن یا پاسخ دادن به سوالات باید در سایت عضو باشید !

برای حمایت از ما روی بنر های زیر کلیک کنید .

برای سفارش تبلیغات به ما ایمیل بزنید .

×

ارتباط با ما