我是 android 新手,我已经编写了链接媒体播放器播放歌曲的代码
我创建了一个文件夹 path="//localhost/Android/sd/vande.mp3 文件存在
public class MainActivity extends Activity {
Button start,pause,stop;
boolean flag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start=(Button)findViewById(R.id.button1);
pause=(Button)findViewById(R.id.button2);
stop=(Button)findViewById(R.id.button3);
final MediaPlayer mp=new MediaPlayer();
try{
mp.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/Android/music/vande.mp3");
mp.prepare();
}catch(Exception e){e.printStackTrace();}
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
public void onPrepared(MediaPlayer player)
{
//mp.start();
flag = true;
}
});
if(flag ==true)
{
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.start();
}
});
}
else
{
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mp.stop();
}
}); …Run Code Online (Sandbox Code Playgroud) 我为每个 Gstreamer 类型编写了 C++ 包装器。它们简单直观,所以我认为不需要在此处发布它们的实现(尽管我可以在需要时发布它们(也许在 github 上))。
我面临的问题是我开始播放视频(并同时使用 gst tee 元素将其保存到文件中)......在播放时,我暂停(来自不同的线程),效果很好。但是,当我想恢复它时,它不起作用:
void pause()
{
_pipeline.state(GST_STATE_PAUSED)
}
void resume()
{
_pipeline.state(GST_STATE_PLAYING);
}
Run Code Online (Sandbox Code Playgroud)
这是play()我创建管道并将其状态设置为 GST_STATE_PLAYING的函数。
int play(std::string const & source_path, std::string const & save_as_file)
{
gst::element source(source_path.substr(0,4) == "http" ? "souphttpsrc" : "filesrc", "media-source");
gst::element demuxer("decodebin", "decoder");
gst::element vconv("videoconvert", "vconverter");
gst::element vsink("autovideosink", "video-output");
gst::element aconv("audioconvert", "aconverter");
gst::element asink("autoaudiosink", "audio-output");
gst::element filesink("filesink", "file-sink");
gst::element fq("queue", "file-queqe");
gst::element tee("tee", "media-tee");
gst::element aq("queue", "audio-queue");
gst::element vq("queue", "video-queue");
source.set("location", source_path.c_str());
gst::bus bus = _pipeline.bus(); …Run Code Online (Sandbox Code Playgroud) 我在 Objective-C 中有一个问题,我正在开发一个 iOS 应用程序,该应用程序应该播放一组特定的 mp3 文件 -242 个 mp3 文件,所以有人可以告诉我播放它们的最佳方式是什么,我意思是我应该把它们放在一个服务器上,让它们都是本地的还是什么?以及我应该如何在 Xcode 中对它们进行编码。
我尝试仅使用一个按钮来播放和暂停音乐。当按下按钮时,音乐开始播放,但是当尝试暂停音乐时,出现了问题。我做错了什么?
我收到以下错误:
可能未处理的 Promise Rejection (id:0): TypeError: Sound.pauseAsync 不是函数。
这是我的音频功能
const { sound } = await Audio.Sound.createAsync(
{ uri: props.songURL }
);
await Audio.setIsEnabledAsync(true);
setSound(songs);
setSongs(userSongPosts)
if (isPlaying === true) {
try {
await sound.pauseAsync();
setIsPlaying(false);
} catch (error) {
console.error(error);
}
} else {
try {
await sound.playAsync();
setIsPlaying(true);
} catch (error) {
console.error(error);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的按钮
<TouchableOpacity
style={styles.profilContainer}
onPress={() => playSound() }>
<Text>{isPlaying ? 'Pause' : 'Play'}</Text>
<View style={styles.buttonView}>
<Text style={styles.textButton}>{props.submitText}</Text>
<MatetrialCommunityIcons
style={styles.iconStyles}
name={props.icon}
/>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用媒体播放器播放资源文件夹中的视频.我先把它复制到SD卡上.详细代码如下.
活动
public class ActivityMediaPlayer extends Activity implements Callback, OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener{
private SurfaceView mPreview;
private SurfaceHolder holder;
private MediaPlayer mMediaPlayer;
private int mVideoWidth;
private int mVideoHeight;
private static final String TAG = "MediaPlayerDemo";
File fvvVideoFile;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.lt_mediaplayer);
mPreview = (SurfaceView) findViewById(R.id.surface);
holder = mPreview.getHolder();
holder.addCallback(ActivityMediaPlayer.this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
String FICHIER_BLOW = "testvideo.mp4";
fvvVideoFile=new File(Environment.getExternalStorageDirectory(), FICHIER_BLOW);
BufferedOutputStream bufEcrivain;
try {
bufEcrivain = new BufferedOutputStream((new FileOutputStream(fvvVideoFile)));
BufferedInputStream VideoReader = new BufferedInputStream(getResources().getAssets().open("video/testvideo.mp4"));
byte[] buff = new byte[32 * …Run Code Online (Sandbox Code Playgroud) 我使用以下代码暂停播放音频文件.但它并没有停顿.代码有什么问题.任何建议......
boolean play=false;
int flag=0;
mPlay.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mPlayer = new MediaPlayer();
if(play==false)
{
flag++;
if(flag==1)
{
playAudio();
}
else
{
mPlayer.start();
}
mPlay.setText("Pause");
play=true;
}
else if(play==true)
{
mPlayer.pause();
mPlay.setText("Play");
play=false;
}
mPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
play=false;
flag=0;
}
});
Run Code Online (Sandbox Code Playgroud) 我正在android上构建一个无线电应用程序,我想知道当我做好准备时如何使我的"播放"按钮可以点击?MediaPlayer
我想通过Android服务流式传输exoplayer版本rc2.xx的在线广播.
我一直试图在线学习所有教程,但它们都是2.xx版之前的版本,其中很多都是视频流相关的(我不需要).
有没有人有一个非常好的教程?
android media-player android-mediaplayer exoplayer exoplayer2.x
media-player ×10
android ×5
c++ ×2
mp3 ×2
azure ×1
c ×1
exoplayer ×1
exoplayer2.x ×1
expo ×1
gstreamer ×1
ios ×1
java ×1
objective-c ×1
react-native ×1
video ×1
windows ×1
xcode ×1