[问题] bufferstream 与 即时串流影音

楼主: DaVinciAnn (麦香红茶)   2014-07-08 22:37:33
大家好
小弟 正在写一个APP 遇到了一点问题
我使用 android smart phone 的 usb port
外接一个 MCU 微控制芯片 (RX TX 的传收方式) 获取 data
目前可以做到 filetransfer 没有问题
现在 想做成 如果收发 声音或影片档 可以做到即时串流播放
我的做法是
先令这两个 stream
public FileOutputStream fos_save;
public BufferedOutputStream buf_save;
两个stream 的关系
fos_save = new FileOutputStream(ACCESS_FILE);
buf_save = new BufferedOutputStream(fos_save);
之后 用一个 Thread 去 写入档案
save_file_thread(Handler h, BufferedOutputStream stream)
outstream = stream;
中间经过 MCU 获得 data
outstream.write 写到file 里
以上的步骤 可以精准的做 filetransfer
但我之后 同时 用一个Runnable 去 用 android mediaplayer 去拨放同一个正在写入
的档案
拨出来的声音 会失真 且 几秒后 就会拨不下去
请问这个问题 是因为 同时写入和读出同一个档案的缘故吗?
我也想请问 有没有 mediaplayer 可以直接 读取bufferstream 去做播放呢
谢谢各位
作者: GreenPikachu (皮卡皮卡^_^)   2014-07-08 23:31:00
试试看双缓冲(double buffer)的设计方式
作者: jerrysky (jerry~sky)   2014-07-09 01:34:00
这种做法是将档案下载下来进行拨放,所以你开mediaplayerbuffer抓了多少就只能拨多少~虽然你的thread还是一直在抓除非你要模拟成progressive HTTP streaming的方式才有办法做到,也因为mediaplayer呼叫底层mediaplayerservice是看source 来源 所以你也需要将档名变成网址开头

Links booklink

Contact Us: admin [ a t ] ucptt.com