相关疑难解决方法(0)

MediaPlayer在mp3播放开始时口吃

我在播放存储在原始资源中的mp3文件时遇到了问题:当文件首次开始播放时,它可能会生成四分之一秒的声音,然后重新启动.(我知道这基本上是这里描述的问题的重复,但是那里提供的解决方案对我来说没有用.)我已经尝试了几个方面并且在这个问题上取得了一些进展,但它并没有完全修复.

这是我设置播放文件的方式:

mPlayer.reset();
try {
    AssetFileDescriptor afd = getResources().openRawResourceFd(mAudioId);
    if (afd == null) {
        Toast.makeText(mOwner, "Could not load sound.",
                Toast.LENGTH_LONG).show();
        return;
    }
    mPlayer.setDataSource(afd.getFileDescriptor(),
            afd.getStartOffset(), afd.getLength());
    afd.close();
    mPlayer.prepare();
} catch (Exception e) {
    Log.d(LOG_TAG, "Could not load sound.", e);
    Toast.makeText(mOwner, "Could not load sound.", Toast.LENGTH_LONG)
            .show();
}
Run Code Online (Sandbox Code Playgroud)

如果我退出活动(调用mPlayer.release())并返回它(创建一个新的MediaPlayer),口吃通常(但不总是)消失 - 只要我加载相同的声音文件.我尝试了几件没有任何区别的事情:

  • 将声音文件作为资源而不是资源加载.
  • 使用创建的MediaPlayer MediaPlayer.create(getContext(), mAudioId),并跳到调用setDataSource(...)prepare().

然后我注意到LogCat总是在播放开始时显示这一行:

DEBUG/AudioSink(37): bufferCount (4) is too small and increased to 12
Run Code Online (Sandbox Code Playgroud)

它让我想知道口吃是否是由于明显的重新缓解.这导致我尝试别的东西:

  • 通话后prepare(),拨打电话mPlayer.start()并立即拨打电话 …

audio android playback android-mediaplayer

31
推荐指数
1
解决办法
3万
查看次数

使用socket fd将实时视频从手机传输到手机

我是Android编程的新手并且发现自己陷入困境我一直在研究各种方法从手机到手机直播视频直播,似乎主要是功能性的,当然除了最重要的部分:播放流.它似乎是从一部手机发送流,但第二部手机无法播放流.

这是播放方的代码

public class VideoPlayback extends Activity implements Callback {
MediaPlayer mp;
private SurfaceView mPreview;
private SurfaceHolder holder;
private TextView mTextview;
public static final int SERVERPORT = 6775;
public static String SERVERIP="192.168.1.126";
Socket clientSocket;
private Handler handler = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mPreview = (SurfaceView) findViewById(R.id.surfaceView1);
    mTextview = (TextView) findViewById(R.id.textView1);
    holder = mPreview.getHolder();
    holder.addCallback(this);
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    mTextview.setText("Attempting to connect");
    mp = new MediaPlayer();
    Thread t = …
Run Code Online (Sandbox Code Playgroud)

android file-descriptor video-streaming media-player live-streaming

24
推荐指数
1
解决办法
5万
查看次数