Android-接收UDP TS流實現邊快取邊播放
Android播放本地檔案視訊是硬解,這樣對CPU佔用比較少,所以將直播收到的資料臨時快取3個檔案,給定每個檔案的大小,然後進行播放。後續還會進行優化。
具體實現程式碼如下:
- package com.cayden.videodemo;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import android.app.Activity;
- import
- import android.content.Intent;
- import android.media.MediaPlayer;
- import android.media.MediaPlayer.OnCompletionListener;
- import android.media.MediaPlayer.OnErrorListener;
- import android.media.MediaPlayer.OnPreparedListener;
- import android.os.Bundle;
- import android.os.Environment;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.View;
- import android.widget.MediaController;
- import android.widget.TextView;
- import android.widget.VideoView;
- import com.cayden.videodemo.R;
- /**
- *
- * 接收UDP TS流實現邊快取邊播放<br/>
- * 該類可以實現,但存在以下不足<br/>
- * 1、播放過程會稍微卡一下這是 由於播放時候setOnCompletionListener中方法被執行<br/>
- * 2、需要思考怎麼解決呼叫onError方法
- * @author cuiran
- * @version 1.0.0
- */
- publicclass UDPFileMPlayer extends Activity {
- privatestaticfinal String TAG="UDPFileMPlayer";
- private VideoView mVideoView;
- private TextView tvcache;
- private String remoteUrl;
- private String localUrl;
- private ProgressDialog progressDialog = null;
- private Thread receiveThread=null;
- /**
- * 定義了初始快取區的大小,當視訊載入到初始快取區滿的時候,播放器開始播放,
- */
- privatestaticfinalint READY_BUFF = 1316 * 1024*10;
- privatestaticfinal String FILE_DIR=Environment.getExternalStorageDirectory().getAbsolutePath()+"/VideoCache/";
- /**
- * 核心交換快取區,主要是用來動態調節快取區,當網路環境較好的時候,該快取區為初始大小,
- * 當網路環境差的時候,該快取區會動態增加,主要就是為了避免視訊播放的時候出現一卡一卡的現象。
- */
- privatestaticfinalint CACHE_BUFF = 10 * 1024;
- /**
- * 單播或組播埠
- */
- privatestaticfinalint PORT = 1234;
- privateboolean isready = false;
- privateboolean iserror = false;
- privateint errorCnt = 0;
- privateint curPosition = 0;
- privatelong mediaLength = 0;
- privatelong readSize = 0;
- @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.bbvideoplayer);
- findViews();
- init();
- playvideo();
- }
- /**
- * 初始化元件
- * 2013-11-21 下午2:20:10
- *
- */
- privatevoid findViews() {
- this.mVideoView = (VideoView) findViewById(R.id.bbvideoview);
- this.tvcache = (TextView) findViewById(R.id.tvcache);
- }
- privatevoid init() {
- Intent intent = getIntent();
- this.remoteUrl = intent.getStringExtra("url");
- System.out.println("remoteUrl: " + remoteUrl);
- if (this.remoteUrl == null) {
- finish();
- return;
- }
- // this.localUrl = intent.getStringExtra("cache");
- mVideoView.setMediaController(new MediaController(this));
- mVideoView.setOnPreparedListener(new OnPreparedListener() {
- publicvoid onPrepared(MediaPlayer mediaplayer) {
- Log.i(TAG, "onPrepared");
- dismissProgressDialog();
- mVideoView.seekTo(curPosition);
- mediaplayer.start();
- }
- });
- mVideoView.setOnCompletionListener(new OnCompletionListener() {
- publicvoid onCompletion(MediaPlayer mediaplayer) {
- Log.i(TAG, "onCompletion"+localUrl);
- // curPosition = 0;
- if(localUrl.endsWith("1.mp4")){
- localUrl=localUrl.replace("1.mp4", "2.mp4");
- mVideoView.setVideoPath(localUrl);
- mVideoView.start();
- }elseif(localUrl.endsWith("2.mp4")){
- localUrl=localUrl.replace("2.mp4", "3.mp4");
- mVideoView.setVideoPath(localUrl);
- mVideoView.start();
-
相關推薦
Android-接收UDP TS流實現邊快取邊播放
Android播放本地檔案視訊是硬解,這樣對CPU佔用比較少,所以將直播收到的資料臨時快取3個檔案,給定每個檔案的大小,然後進行播放。後續還會進行優化。具體實現程式碼如下:package com.cayden.videodemo; import java.io.File;
Android實現MP4邊下邊播(邊快取邊播放、線上播放)原理與程式碼
QQ群交流:425219113(計算機語言交流) 邊下邊播方法初試 **剛開始實現這個的時候,我第一下想到的是:**先將MP4檔案單純的從位元組的層次分為若干個檔案,然後播放的時候,不斷從伺服器一邊下載,一邊追加到一個原始檔裡面,最後直接播放這個原始檔就可
Android使用LruCache、DiskLruCache實現圖片快取+圖片瀑布流
PPS:本文僅用於學習利用LruCache、DiskLruCache圖片快取策略、實現瀑布流和Matix檢視大圖縮放移動等功能,如果想用到專案中,建議用更成熟的框架,如glide、picasso 等。 先上效果圖: ###圖片瀑布流 這個用
android邊快取邊播放mp4
在做一個新聞系統中間有視訊播放的要求,當時想著非常簡單,android的mediaplayer封裝的非常好了,基本就是做做介面。 介面寫好的時候才發現悲劇了,對方伺服器是http方式提供的mp4,android死活無法邊快取邊播放,快取到100%才能播放。 在網上找了找資料,網上有個邊下載mp3邊播放
使用live555 VLC傳送接收視訊TS流
從中可以看出,對於轉碼的需求,也僅僅是添加了藍色的一段options而已--sout "#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:duplicate{dst=display,dst=standard{mux=ts{pid-vid
Android視訊播放之邊快取邊播放
轉載地址:http://blog.zhourunsheng.com/2012/05/android%e8%a7%86%e9%a2%91%e6%92%ad%e6%94%be%e4%b9%8b%e8%be%b9%e7%bc%93%e5%ad%98%e8%be%b9%e6%92%ad%e6%94%be/ 最近在做
修改ffmpeg原始碼,並用它對多路節目TS流解複用及播放
原始碼地址會在這裡告訴大家https://edu.csdn.net/course/play/8542 目前,很多所謂的萬能播放器都沒有新增對多路視訊流視訊的支援。 DVB數字電視經常是多路複用的視訊流,如下圖用vlc播放一個多路視訊的視訊時,播放器首先要解析到所有節目資訊
如何將衛星電視信號轉成TS Over UDP網絡流實現手機APP播放
APP播放 4k高清 M3U8流 P2P流媒體 隨著網絡寬帶業務和數字電視的普及,家家戶戶都已經在用IPTV/OTT-TV的方式來看電視節目。但是從音視頻的畫面質量來看,廣電系統的電視信號質量最佳,可以真正實現1080P網絡電視畫面質量甚至是H.265 HEVC的4K超高清。
Android 實現視屏播放器、邊播邊快取功能,附原始碼
來源:http://www.apkbus.com/blog-938789-76574.html效果開源播放器選擇Android上最為人熟知的MediaPlayer,對,就是這貨,在上兩篇音訊文章中頻頻露臉的傢伙,這次又有它的身影,然而還是這次不講他,就連他的封裝類VideoV
node.js 利用流實現讀寫同步,邊讀邊寫
write 使用 類型 同步 node.js tar 利用 關閉 console //10個數 10個字節,每次讀4b,寫1b let fs=require("fs"); function pipe(source,target) { //先創建可讀流,再創
text-stroke實現文字描邊(鏤空)、text-fill-color實現文字填充&漸變(+animation實現流光字體)
stroke 顏色 width mas key ani kit mat idt text-stroke:<‘ text-stroke-width ‘> || <‘ text-stroke-color ‘>(text-stroke-width:設置或檢
Android 自定義View-----流式佈局(粗糙實現)
//首先檢視一下佈局介面吧 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app
前端接收資料流實現圖片預覽效果--ajax 請求二進位制流 圖片 檔案 XMLHttpRequest 請求並處理二進位制流資料 之最佳實踐
本文為轉載文章 原文連結:https://www.cnblogs.com/cdemo/p/5225848.html 首先要謝謝這位大神的無私貢獻!解決了我的問題也完美表達了我當時的心路歷程 ajax 請求二進位制流 圖片 檔案 XMLHttpRequest 請求並處理二進位制流資料 之最佳實踐
Android 實現邊聽邊錄音探究
場景描述 音樂中只有一種聲音有時候很單薄的,我們經常希望把不同的聲音加在一起,但是在錄製的時候我們需要嚴格同步起來,把兩種聲音的時差控制在聽覺允許的範圍內,才可能獲得我們想要的結果。另外一點,在錄製的時候,為了不把播放的聲音和人聲或者器樂聲混到一塊,通常都需要錄製者帶著耳機邊聽邊錄。 為了實現最終兩個或
android自定義View之仿通訊錄側邊欄滑動,實現A-Z字母檢索
我們的手機通訊錄一般都有這樣的效果,如下圖: OK,這種效果大家都見得多了,基本上所有的android手機通訊錄都有這樣的效果。那我們今天就來看看這個效果該怎麼實現。 一.概述 1.頁面功能分析 整體上來說,左邊是一個ListView,右邊是一個自定義View,但
【Android音視訊】TS流資料解析和Jni2Java回撥
為了解析傳輸到手機的TS流有效視訊資料,進行預覽播放和錄製等功能,在網上看到的部分關於android播放TS流,如UDP預覽播放,採取的方式真是夠標新立異,如通過儲存到本地ts檔案然後播放,會有閃屏現象等,當然也有很多的播放器支援播放,如ffmepg-and
Android ListView功能擴充套件,實現高效能的瀑布流佈局
經過前面兩篇文章的學習,我們已經對ListView進行了非常深層次的剖析,不僅瞭解了ListView的原始碼和它的工作原理,同時也將ListView中常見的一些問題進行了歸納和總結。那麼本篇文章是我們ListView系列三部曲的最後一篇,在這篇文章當中我們將對ListView
Android實現圖片快取與非同步載入
ImageManager2這個類具有非同步從網路下載圖片,從sd讀取本地圖片,記憶體快取,硬碟快取,圖片使用動畫漸現等功能,已經將其應用在包含大量圖片的應用中一年多,沒有出現oom。 Android程式常常會記憶體溢位,網上也有很多解決方案,如軟引用,手動呼叫recycle
vlc使用udp組播方式傳送ts流的特殊規則
當你寫程式去接收vlc傳送的ts流時,你會發現解析出來的一幀視訊幀有時候解碼會失敗,追究其原因,是因為前4個位元組不是0,0,0,1。 那為什麼會這樣呢? 這是因為vlc在處理大於65535位元組的視訊幀時,沒有按照ISO標準來。 ISO標準的做法是將PES_packe
Android中Recyclerview使用13----實現瀑布流遇到的各種問題(item移動,載入更多圖片閃爍,以及定製各種型別Header和Footer)
功能:圖片瀑布流 問題1:如何保持已顯示過的imageview的尺寸 解決方法:定義一個HashMap<Integer, Float> indexMap = new HashMap<Integer, Float>();用來儲存已顯示過的Ima