Media player error 1 2147483648 андроид аудио

#android #audio #android-recyclerview #media-player #record

#android #audio #android-recyclerview #media-player #record

#Android #Аудио #android-recyclerview #медиаплеер #запись

Вопрос:

Запись и остановка работают нормально, но когда я пытаюсь воспроизвести, это вызывает ошибку. Я пробовал запустить метод воспроизведения в фоновом потоке и пробовал его с помощью и без передачи имени файла через метод воспроизведения, но безуспешно. Также, когда я устанавливаю точку останова в своем методе воспроизведения, он пропускает mPlayer.start(). Я использую recyclerview для хранения своих аудиофайлов.

 import static android.Manifest.permission.READ_EXTERNAL_STORAGE; import static android.Manifest.permission.RECORD_AUDIO; import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView;   import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast;  import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date;  public class MainActivity extends AppCompatActivity {  private static final int STORAGE_PERMISSION_CODE = 279;  public static final int AUDIO_PERMISSION_CODE = 555;   private String fileName;  private MediaRecorder mRecorder;  private MediaPlayer mPlayer;  Button recordBtn, stopBtn;  private TextView tv;  private ArrayListlt;Recordgt; recordingList;  private RecyclerView recyclerView;   @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  recordBtn = (Button) findViewById(R.id.playB);  stopBtn = (Button) findViewById(R.id.stopB);  tv = (TextView) findViewById(R.id.tv);  checkPermission(WRITE_EXTERNAL_STORAGE, STORAGE_PERMISSION_CODE);  checkPermission(READ_EXTERNAL_STORAGE, STORAGE_PERMISSION_CODE);  checkPermission(RECORD_AUDIO,AUDIO_PERMISSION_CODE);   mRecorder = new MediaRecorder();   recordingList = new ArrayListlt;gt;();  recyclerView = findViewById(R.id.rv);  setRecordinfo(fileName);  setAdapter();  }   private void setRecordinfo(String fileName){   recordingList.add(new Record(fileName));  }   private void setAdapter() {  RecyclerAdapter adapter = new RecyclerAdapter(recordingList);  RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());  recyclerView.setLayoutManager(layoutManager);  recyclerView.setItemAnimator(new DefaultItemAnimator());  recyclerView.setAdapter(adapter);  }   public void onRecordClick(View v) {  record();  }   public void onStopClick(View v) {  stop();  }   public void onPlayClick(View v) {  play(fileName);  }   public void play(String fileName){  mPlayer = new MediaPlayer();  tv.setText("Recording Playing");   try {  mPlayer.setDataSource(fileName);  mPlayer.prepare();  mPlayer.start();  } catch (IOException e) {  Log.e("TAG", "play failed");  }  }   public void stop(){  if (mRecorder != null) {  mRecorder.stop();  mRecorder.reset();  mRecorder.release();  mRecorder = null;   tv.setText("Recording stopped");  }  if (mPlayer != null) {  mPlayer.stop();  mPlayer.release();  mPlayer = null;  tv.setText("Player Stopped");  } }   public void record(){  // we are initializing our filename variable  // with the path of the recorded audio file.  Date createdTime = new Date();  fileName = getExternalCacheDir().getAbsolutePath();  fileName  = "/"   createdTime  "test.mp4" ;  mRecorder.reset();  mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);  mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);  mRecorder.setOutputFile(fileName);  mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  try {  mRecorder.prepare();  mRecorder.start();  tv.setText("Recording");  //mRecorder.stop();  } catch (IOException e) {  e.printStackTrace();  Log.d("Audio","unable to prepare");  }  }  // Function to check and request permission.  public void checkPermission(String permission, int requestCode)  {  if (ContextCompat.checkSelfPermission(MainActivity.this, permission) == PackageManager.PERMISSION_DENIED) {   // Requesting the permission  ActivityCompat.requestPermissions(MainActivity.this, new String[] { permission }, requestCode);  }  else {  Toast.makeText(MainActivity.this, "Storage Permission Granted", Toast.LENGTH_SHORT).show();  }  }   @Override  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,  @NonNull int[] grantResults) {  super.onRequestPermissionsResult(requestCode,  permissions,  grantResults);   if (requestCode == STORAGE_PERMISSION_CODE) {  if (grantResults.length gt; 0  amp;amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {  Toast.makeText(MainActivity.this, "Storage Permission Granted", Toast.LENGTH_SHORT).show();  } else {  Toast.makeText(MainActivity.this, "Storage Permission Denied", Toast.LENGTH_SHORT).show();  }  if (requestCode == AUDIO_PERMISSION_CODE) {  if (grantResults.length gt; 0  amp;amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {  Toast.makeText(MainActivity.this, "audio Permission Granted", Toast.LENGTH_SHORT).show();  } else {  Toast.makeText(MainActivity.this, " Permission Denied", Toast.LENGTH_SHORT).show();  }  }  }  }}  

 import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView;  import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView;  import java.util.ArrayList;  //The adapter is the piece that will connect our data to our RecyclerView and determine the ViewHolder(s) which will need to be used to display that data. public class RecyclerAdapter extends RecyclerView.Adapterlt;RecyclerAdapter.MyViewHoldergt; {   private ArrayListlt;Recordgt; recordingList;   public RecyclerAdapter(ArrayListlt;Recordgt; recordingList){   this.recordingList = recordingList; }  public class MyViewHolder extends RecyclerView.ViewHolder{  private TextView recordText;   public MyViewHolder(@NonNull View view){  super(view);  recordText = view.findViewById(R.id.r2);  } }  //creates a new RecyclerView.ViewHolder and initializes some private fields to be used by RecyclerView.  // allows us to use the resource id with the LayoutInflater in the onCreateViewHolder() method and then return the ViewHolder.  @NonNull  @Override  public RecyclerAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {  View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recordings,parent,false); return new MyViewHolder(itemView); }   //displays data at a specific index using recycled views  //This method is called for each ViewHolder to bind it to the adapter. This is where we will pass our data to our ViewHolder.  @Override  public void onBindViewHolder(@NonNull RecyclerAdapter.MyViewHolder holder, int position) {  String record = recordingList.get(position).getRecordings();  holder.recordText.setText(record);  }  //returns size of arraylist  //This method returns the size of the collection that contains the items we want to display.  @Override  public int getItemCount() {   return recordingList.size();  } }  

 import android.content.Context;  import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List;  public class Record { private String recording;   public Record(String recording) {  this.recording = recording;  }   public String getRecordings() {  return recording;  }   public void setRecordings(String recordings) {  this.recording = recording;  } }  

Комментарии:

1. Я все понял! Медиаплееру не удалось найти файл. Я отредактировал путь к файлу, и теперь он работает!

у меня есть два разных видео, которые я пытаюсь загрузить в VideoView используя

videoView.setVideoURI(Uri.parse(url));

два видео, пусть они будут видео 1 и видео 2, имеет следующие технические характеристики (взяты с использованием ffmpeg -i); по сути, это две разные кодировки одного и того же видео:

  1. Видео 1:

    Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 90000.00 (180000/2)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '4fbfd5ece4b0932236fc234d.mp4':
    Metadata:
    major_brand : mp42
    minor_version : 0
    compatible_brands: mp42isomavc1
    creation_time : 2011-12-03 04:43:46
    genre : Trailer
    artist : Paramount Pictures
    title : Captain America: The First Avenger - Theatrical Trailer #2
    encoder : HandBrake 4344svn 2011111001
    date : 2011
    Duration: 00:02:30.67, start: 0.000000, bitrate: 6738 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 1920x800 [PAR 1:1 DAR 12:5], 6575 kb/s, 23.97 fps, 90k tbr, 90k tbn, 180k tbc
    Metadata:
    creation_time : 2011-12-03 04:43:46
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 159 kb/s
    Metadata:
    creation_time : 2011-12-03 04:43:46

  2. видео 2:

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '500416ea44aeb4b95d5ae8a0_hd.mp4':
    Metadata:
    major_brand : isom
    minor_version : 512
    compatible_brands: isomiso2avc1mp41
    creation_time : 2011-12-03 04:43:46
    title : Captain America: The First Avenger - Theatrical Trailer #2
    artist : Paramount Pictures
    date : 2011
    encoder : Lavf53.32.100
    genre : Trailer
    Duration: 00:02:30.69, start: 0.000000, bitrate: 2045 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720 [PAR 27:20 DAR 12:5], 1889 kb/s, 23.99 fps, 90k tbr, 180k tbn, 180k tbc
    Metadata:
    creation_time : 2011-12-03 04:43:46
    Stream #0.1(eng): Audio: aac, 44100 Hz, stereo, s16, 151 kb/s
    Metadata:
    creation_time : 2011-12-03 04:43:46

я знаю, что поддержка AAC пришел с Honeycomb, и поэтому я протестировал видео с несколькими устройствами; результаты приведены ниже:

  1. SGS II with custom 4.0.3 OS(Sensation ROM 3.4 with CF-Root kernel) - Video 1:OK - Video2:OK
  2. SGS I with Samsung 2.3.3 OS - Video 1:error (1, -2147483648) - Video 2:OK
  3. SGS I with custom 4.0.3 OS(ICS SGS TEAM ROM with Devil kernel) - Video 1:error (1, -2147483648) - Video 2:OK
  4. Nexus One with original 2.3.6 OS - Video 1:See (1) below - Video 2:See (2) below
  5. Emulator with 2.2 OS - Video 1:error (1, -2147483648) - Video 2:error (1, -2147483648)
  6. Emulator with 4.0.3 OS - Video 1:error (1, -2147483648) - Video 2:error (1, -2147483648)

оба видео отлично воспроизводятся в Google Chrome на ПК. Может быть полезно добавить, что в случае OK видео и аудио воспроизводятся правильно. В случае ошибки (1, -2147483648) тот же журнал извергается со всех устройств (кроме Nexus One):

07-18 10:25:10.996: I/MediaPlayer(17860): uri is:http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4
07-18 10:25:10.996: I/MediaPlayer(17860): path is null
07-18 10:25:10.996: D/MediaPlayer(17860): Couldn't open file on client side, trying server side
07-18 10:25:39.859: D/MediaPlayer(17860): getMetadata
07-18 10:25:45.070: E/MediaPlayer(17860): error (1, -2147483648)
07-18 10:25:45.074: E/MediaPlayer(17860): Error (1,-2147483648)
07-18 10:25:45.078: D/VideoView(17860): Error: 1,-2147483648

в случае (1) следующий журнал извергается из Nexus One, и видео никогда не загружается:

07-18 13:49:20.115: D/MediaPlayer(10109): Couldn't open file on client side, trying server side
07-18 13:49:20.115: I/StagefrightPlayer(68): setDataSource('http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4')
07-18 13:49:20.135: I/NuHTTPDataSource(68): connect to s3-eu-west-1.amazonaws.com:80/cf-templates-k6ohn88yswx5-eu-west-1/videos/4fbc88e7e4b0b0896e877764/4fbfd5ece4b0932236fc234d.mp4 @0
07-18 13:49:20.155: I/ActivityManager(98): Displayed com.woisio/.video.VideoActivity: +450ms
07-18 13:49:20.795: I/NuCachedSource2(68): Keep alive
07-18 13:49:22.185: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 4 buffers of size 460800 on input port
07-18 13:49:22.195: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 8 buffers of size 2304000 on output port
07-18 13:49:25.325: D/dalvikvm(9499): GC_EXPLICIT freed 13K, 50% free 2726K/5379K, external 1625K/2137K, paused 116ms
07-18 13:49:27.525: I/NuCachedSource2(68): Keep alive
07-18 13:49:28.235: I/NuCachedSource2(68): Cache full, done prefetching for now
07-18 13:49:30.275: D/dalvikvm(9902): GC_EXPLICIT freed 8K, 50% free 2714K/5379K, external 1625K/2137K, paused 69ms
07-18 13:49:34.255: D/Finsky(9066): [1] 5.onFinished: Installation state replication succeeded.
07-18 13:49:35.855: I/NuCachedSource2(68): Keep alive
07-18 13:49:39.055: D/dalvikvm(9911): GC_EXPLICIT freed 22K, 50% free 2710K/5379K, external 1625K/2137K, paused 38ms
07-18 13:49:42.575: I/NuCachedSource2(68): Keep alive
07-18 13:49:43.285: I/NuCachedSource2(68): Keep alive
07-18 13:49:44.095: D/dalvikvm(9918): GC_EXPLICIT freed 7K, 50% free 2708K/5379K, external 1625K/2137K, paused 66ms
07-18 13:49:49.085: D/dalvikvm(9925): GC_EXPLICIT freed 15K, 49% free 3268K/6407K, external 1625K/2137K, paused 50ms
07-18 13:49:50.925: I/NuCachedSource2(68): Keep alive
07-18 13:49:54.115: D/dalvikvm(6756): GC_EXPLICIT freed 9K, 44% free 3774K/6727K, external 1625K/2137K, paused 77ms
07-18 13:49:57.685: I/NuCachedSource2(68): Keep alive
07-18 13:49:58.375: I/NuCachedSource2(68): Keep alive
07-18 13:49:59.105: D/dalvikvm(9066): GC_EXPLICIT freed 385K, 53% free 3186K/6727K, external 1625K/2137K, paused 66ms
07-18 13:50:05.955: I/NuCachedSource2(68): Keep alive
07-18 13:50:06.045: D/dalvikvm(8047): GC_EXPLICIT freed 9K, 47% free 3830K/7111K, external 1625K/2137K, paused 86ms
07-18 13:50:09.465: I/3gw.Service(488): Mobile Network not connected - not roaming
07-18 13:50:12.765: I/NuCachedSource2(68): Keep alive
07-18 13:50:13.465: I/NuCachedSource2(68): Keep alive
07-18 13:50:18.775: I/WindowManager(98): Setting rotation to 3, animFlags=0
07-18 13:50:18.795: I/ActivityManager(98): Config changed: { scale=1.0 imsi=286/2 loc=en_US touch=3 keys=1/1/2 nav=3/1 orien=2 layout=34 uiMode=17 seq=34}
07-18 13:50:18.895: D/dalvikvm(169): GC_EXTERNAL_ALLOC freed 108K, 48% free 3253K/6215K, external 5172K/5180K, paused 37ms
07-18 13:50:21.005: I/NuCachedSource2(68): Keep alive
07-18 13:50:21.265: D/dalvikvm(98): GC_EXPLICIT freed 394K, 42% free 6631K/11335K, external 4458K/5567K, paused 109ms

в случае (2) следующий журнал извергается из Nexus One и, как вы можете видеть, заканчивается ошибкой (1, -2147483648):

07-18 13:47:03.595: D/MediaPlayer(10059): Couldn't open file on client side, trying server side
07-18 13:47:03.595: I/StagefrightPlayer(68): setDataSource('http://s3-eu-west-1.amazonaws.com/cf-templates-k6ohn88yswx5-eu-west-1/videos/4ff4514444aec3d2f9f07ead/500416ea44aeb4b95d5ae8a0_hd.mp4')
07-18 13:47:03.605: I/NuHTTPDataSource(68): connect to s3-eu-west-1.amazonaws.com:80/cf-templates-k6ohn88yswx5-eu-west-1/videos/4ff4514444aec3d2f9f07ead/500416ea44aeb4b95d5ae8a0_hd.mp4 @0
07-18 13:47:03.625: I/ActivityManager(98): Displayed com.woisio/.video.VideoActivity: +505ms
07-18 13:47:05.355: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 4 buffers of size 460800 on input port
07-18 13:47:05.355: I/OMXCodec(68): [OMX.qcom.video.decoder.avc] allocating 8 buffers of size 1382400 on output port
07-18 13:47:05.365: I/NuCachedSource2(68): Keep alive
07-18 13:47:08.375: D/MediaPlayer(10059): getMetadata
07-18 13:47:08.745: D/dalvikvm(9925): GC_EXPLICIT freed 651K, 49% free 3275K/6407K, external 1625K/2137K, paused 68ms
07-18 13:47:09.205: I/3gw.Service(488): Mobile Network not connected - not roaming
07-18 13:47:11.565: I/NuCachedSource2(68): Cache full, done prefetching for now
07-18 13:47:12.095: I/NuCachedSource2(68): Keep alive
07-18 13:47:14.245: W/QCvdec(68): H264_Utils::check_header
07-18 13:47:14.245: W/QCvdec(68): check_header: start code 33
07-18 13:47:14.245: W/QCvdec(68): H264_Utils::check_header
07-18 13:47:14.245: W/QCvdec(68): check_header: start code 10
07-18 13:47:14.245: W/QCvdec(68): Parsing Error unsupported profile or level
07-18 13:47:14.245: W/QCvdec(68): ETB in Invalid State
07-18 13:47:14.245: E/OMXCodec(68): [OMX.qcom.video.decoder.avc] ERROR(0x8000100a, 0)
07-18 13:47:14.245: E/MediaPlayer(10059): error (1, -2147483648)
07-18 13:47:14.285: E/MediaPlayer(10059): Error (1,-2147483648)
07-18 13:47:14.285: D/VideoView(10059): Error: 1,-2147483648

из того, что я прочитал, Ошибка (1, -2147483648) может соответствовать неподдерживаемым кодекам, поврежденным метаданным или неправильным заголовкам файлов. Если это так, не могли бы вы указать меня в правильном направлении как использовать, какой кодек? Спасибо.

Ошибка Android Mediaplayer (1, -2147483648) Ошибка (-38,0) решение (загрузка сети и локальная загрузка)

05.07.2016 09:05:08 Номер чтения: 12640 Теги:androidmediaplayerрешение Больше

Индивидуальный зачет:android

Заявление об авторских правах: эта статья является оригинальной статьей блоггера и не может быть воспроизведена без разрешения блогера. https://blog.csdn.net/wning1/article/details/51828641

 
  1. </pre> Использование SurfaceView или mediaplayer + surface в проекте для воспроизведения видео по сети или локально, часто возникают ошибки (1, -2147483648) Ошибка (-38,0), значение ошибки (1, - 2147483648), 1 представляет <a target = _blank target = "_ blank" href = "https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_ERROR_UNKNOWN"> MediaPlayer.MEDIA_ERROR_UNKNOWN </a>, -2147483648 определяется как UNKNOWNOWNOWN_ERRROR_INKNOWN /native/include/utils/Errors.h. Как правило, ошибка (-38,0) вызвана ошибкой (1, -2147483648). Когда медиаплеер является недопустимым объектом, в это время, когда медиаплеер вызывает getDuration () и другие методы, возникает ошибка Error (-38, 0). Ниже приводится информация об ошибке, с которой я столкнулся в то время: <p></p><p> </p> <pre name = "code" class = "java"> 07-03 08: 08: 18.421 12853-13275 / com .suomistudent E / MediaPlayer ﹕ ошибка (1, -2147483648)

  2. 07-03 08:08:18.451 12853-12853/com.suomistudent E/MediaPlayer﹕ Attempt to call getDuration without a valid mediaplayer

  3. 07-03 08:08:18.451 12853-12853/com.suomistudent E/MediaPlayer﹕ error (-38, 0)

  4. 07-03 08:08:18.461 12853-12853/com.suomistudent E/MediaPlayer﹕ Error (1,-2147483648)

Итак, как решить эту проблему:

1. Ошибка (1, -2147483648) возникает во время загрузки сети, т. Е. Не удалось инициализировать медиаплеер. В этом случае обычно следует учитывать следующие моменты:

Во-первых, вам нужно убедиться, что путь к файлу, например каталог, или URL-адрес и URI верны.

1.1 При инициализации MediaPlayer установите источник данных с помощью метода create. Вы не можете написать метод MediaPlayer.prepare (), он сообщит об ошибке. Просмотрите исходный код Mediaplayer.create () следующим образом:

 
  1. public static MediaPlayer create(Context context, int resid,

  2. AudioAttributes audioAttributes, int audioSessionId) {

  3. try {

  4. AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid);

  5. if (afd == null) return null;

  6.  
  7. MediaPlayer mp = new MediaPlayer();

  8.  
  9. final AudioAttributes aa = audioAttributes != null ? audioAttributes :

  10. new AudioAttributes.Builder().build();

  11. mp.setAudioAttributes(aa);

  12. mp.setAudioSessionId(audioSessionId);

  13.  
  14. mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

  15. afd.close();

  16. mp.prepare();

  17. return mp;

  18. } catch (IOException ex) {

  19. Log.d(TAG, "create failed:", ex);

  20. // fall through

  21. } catch (IllegalArgumentException ex) {

  22. Log.d(TAG, "create failed:", ex);

  23. // fall through

  24. } catch (SecurityException ex) {

  25. Log.d(TAG, "create failed:", ex);

  26. // fall through

  27. }

  28. return null;

  29. }

Метод create () фактически включает создание объектов, установку ресурсов и операции prepare ().

1.2 Если вы используете конструктор MediaPlayer для инициализации MediaPlayer, а затем устанавливаете источник данных с помощью метода setDataSource, вам необходимо использовать метод MediaPlayer.prepare () для однократной компиляции источника данных перед start (). Можно избежать (-38,0) такой ошибки.

1.3. Учитывая проблему кодирования, формат кодирования, поддерживаемый собственным медиаплеером Android при воспроизведении видео, очень ограничен. Поддерживаются следующие форматы:

Если ваш формат видео не относится к одному из этих, будет выдано сообщение об ошибке (1, -2147483648). Для этого вида ошибки вам необходимо рассмотреть возможность преобразования видео в поддерживаемый формат в настоящее время. Здесь я просто вставил формат кодирования видео, если вы хотите просмотреть кодировку звука, проверьтеhttps://developer.android.com/guide/appendix/media-formats.html. (Ps: Я использую фабрику форматов для просмотра подробной информации)

1.4. При выходе из действия вы должны сначала освободить объект Mediaplayer, а затем закрыть действие. Необходимо выполнить следующий код:

 
  1. mMediaPlayer.reset();

  2. mMediaPlayer.release();

  3. mMediaPlayer = null;

Если вы закроете активность, не выпуская сначала медиаплеер, медиаплеер не будет выпущен. В это время, если вы повторно создадите mMediaplayer, также появится (1, -2147483648). В этом случае вы должны сначала освободить медиаплеер. — это ошибка, которую я обнаружил в проекте.Поначалу я подумал, что это ошибка кодирования формата видео, поэтому внимательно изучил формат кодирования видео, но обнаружил, что проблем нет. Наконец, мы исключили множество ситуаций и обнаружили, что я не выпускал медиаплеер до закрытия активности.

2. Если видео загружается локально:

В дополнение к рассмотрению вышеупомянутых четырех ситуаций, вам также необходимо учитывать разрешения для видео. В конце концов, вы загружаете видео локально. Возможно, у вас нет разрешений на чтение и запись для определенного каталога.

ps: «chmod 777» может понадобиться для исправления разрешений.

Вышесказанное является моим текущим пониманием медиаплеера, я надеюсь помочь вам!

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account


Closed

pacifio opened this issue

May 8, 2020

· 27 comments

Comments

@pacifio

Code

_player.play("https://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_700KB.mp3");

Error

V/MediaHTTPService( 6767): MediaHTTPService(android.media.MediaHTTPService@d3e2288): Cookies: null
V/MediaHTTPService( 6767): makeHTTPConnection: CookieHandler (java.net.CookieManager@976f522) exists.
V/MediaHTTPService( 6767): makeHTTPConnection(android.media.MediaHTTPService@d3e2288): cookieHandler: java.net.CookieManager@976f522 Cookies: null
E/MediaPlayerNative( 6767): error (1, -2147483648)
E/MediaPlayer( 6767): Error (1,-2147483648)
E/MediaPlayerNative( 6767): stop called in state 0, mPlayer(0xcc47d040)
E/MediaPlayerNative( 6767): error (-38, 0)
V/MediaPlayer( 6767): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer( 6767): cleanDrmObj: mDrmObj=null mDrmSessionId=null
V/MediaPlayer( 6767): resetDrmState:  mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer( 6767): cleanDrmObj: mDrmObj=null mDrmSessionId=null

I even added usesCleartextTraffic in android manifest file

@johnkorn

Hi!
I have the same error but when running

final player = AudioCache();
player.play("note7.wav");

Have no idea what the problem is

@Dan7s

Hello,
I had exactly same issue, but flutter pub upgrade solve the problem.
I was running version 1.13.5 of audioplayers.

@johnkorn

yes, same worked for me, thanks

@ElZombieIsra

I was having the same issue and none of the proposed solutions worked for me.
Turns out the URL I was using was making some sort of redirection to the source so when the service tried to reach the source from the first URL all it got was an html with the redirection rule so thats what generated the issue for me.
Try and see if the URL you are using is returning the audio file immediately or not

@searchy2

@ElZombieIsra is correct. If the URL provided is not a direct audio file, then this error occurs.
This likely isn’t a library error.

@oSamDavis

Currently having the same issue. pub upgrade not working for me
Screenshot (339)

@braniii

Currently having the same issue. pub upgrade not working for me
Screenshot (339)

I am using AudioCache to play every 10-60s a short sound, in .ogg format, of a few hundred milliseconds. It all works fine, but after a few minutes I always get the same error.
I am on Android 9 together with the newest release 0.16.2

E/MediaPlayerNative(25640): error (1, -19)
E/MediaPlayer(25640): Error (1,-19)
E/MediaPlayerNative(25640): pause called in state 0, mPlayer(0x7101adfe3ec0)
E/MediaPlayerNative(25640): error (-38, 0)
E/MediaPlayerNative(25640): Attempt to perform seekTo in wrong state: mPlayer=0x7101adfe3ec0, mCurrentState=0
E/MediaPlayerNative(25640): error (-38, 0)
E/MediaPlayer(25640): Error (-38,0)
E/MediaPlayer(25640): Error (-38,0)
...

@braniii

Using an fixed AudioPlayer instance seems to fix the problem for me. This works only, if the sounds do not overlap.

@wael-fadlallah

@braniii
am facing the same problem :(
can you share with me how you create a fixed Audio player instance ?

@claudehsu

Hi @wael-fadlallah

I got the similar issue and creating the AudioCache instance with fixedPlayer named parameter resolved my issue.

AudioPlayer fixedPlayer = new AudioPlayer();
AudioCache player = AudioCache(fixedPlayer: fixedPlayer);

@wael-fadlallah

Hey @claudehsu thanks for replaying
I have try your fix but sadly I got some error after playing multiple tracks
Unhandled Exception: PlatformException(Unexpected error!, Unable to access resource, java.lang.RuntimeException: Unable to access resource
and then the player stop playing

@mahdidham

seems like I have same issues here.
Here’s my log when try to play audio from url

...
W/System: ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out: [okhttp] e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaUtils
I/System.out: [okhttp]:check permission begin!
W/System: ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
[okhttp] e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaUtils
I/System.out: [okhttp]:check permission begin!
W/System: ClassLoader referenced unknown path: system/framework/mediatek-cta.jar
I/System.out: [okhttp] e:java.lang.ClassNotFoundException: com.mediatek.cta.CtaUtils
E/MediaPlayerNative: error (1, -2147483648)
E/MediaPlayer: Error (1,-2147483648)

*edit, im adding another error that appears in my log

28308-28373 E/MediaPlayerNative: error (1, -2147483648)
28308-28308 E/MediaPlayer: Error (1,-2147483648)
28308-28308 E/MediaPlayerNative: stop called in state 0, mPlayer(0x895ee740)
28308-28308 E/MediaPlayerNative: error (-38, 0)

@braniii

@braniii
am facing the same problem :(
can you share with me how you create a fixed Audio player instance ?

Sorry for the late reply. I am using following lines, but I am using only local files. With this snippet I am able to run a Tabata timer with 6-10 500ms sounds per minute for at least 40 minutes without any crash.

AudioPlayer audioPlayerInstance = AudioPlayer()..setReleaseMode(ReleaseMode.STOP);
AudioCache audioCache = AudioCache(fixedPlayer: audioPlayerInstance);
await audioCache.loadAll(<String>[...]);  // list with audio files

@mahdidham

Just printing error in onPlayerError. I got this unknown error after AudioPlayerState turn to STOP

18413-18547 I/flutter: audioplayer error: MediaPlayer error with what:MEDIA_ERROR_UNKNOWN {what:1} extra:MEDIA_ERROR_SYSTEM
18413-18547 I/flutter: _platformCallHandler call audio.onComplete {value: true, playerId: ef0254f5-dde6-430c-bf30-a97f679ab2d7}

based from this issue #165 , there something with clearTextTraffic, but i already adding android:usesCleartextTraffic="true" INTERNET permission, etc, but it not work.

anyway, i am using latest audiopalyers (0.17.0), with android SDK 29

@minikupa

@itssidhere

@mahdidham

ah, I almost forgot about this issue. So after deeply search, there is no issue for the code imo. In my case, the problem is from the API itself. After I check the headers of the API, the Content-Type is set to text/html, not audio/xwav.
just try another open source audio url like this to check whether the function is work or not.

@minikupa

I use the music in the assets folder, but the same error occurs. Same for other libraries

@ElZombieIsra

Hey, everyone. I found myself encountering this error again today. The solution was the same I said before, the URL that I was using returned a redirect rule instead of the actual file.

Double-check if your URL is returning the actual file.

@mahdidham

Consider to add human-readable error for this issue

@nicolo-fr

Same issue here !
I try to play music in my assets folder. It works perfectly fine on the iPhone emulator, but I get this error when I try it on Android.
Has anyone found a solution ?
Thanks in advance for your help

E/MediaPlayerNative( 8001): error (1, -2147483648)
E/MediaPlayer( 8001): Error (1,-2147483648)
E/MediaPlayerNative( 8001): pause called in state 0, mPlayer(0xaf81bf70)
E/MediaPlayerNative( 8001): error (-38, 0)
E/MediaPlayerNative( 8001): Attempt to perform seekTo in wrong state: mPlayer=0xaf81bf70, mCurrentState=0
E/MediaPlayerNative( 8001): error (-38, 0)

@luanpotter

@ElZombieIsra that is definitely the original issue, just by opening it on the browser you can see the real URL is:

https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3

I should add this to the FAQ, seems to be a very common issue.

@erickzanardo

@luanpotter did you added the FAQ entry so we can close this?

@luanpotter

@pideltajah

I was getting the exact same error. My problem was I forgot to put the scheme in the audio URL. 🤦‍♂️
I tacked http:// to the front of it and solved the problem!

@Nurtaz440

2021-09-15 10:19:30.001 32611-32611/mening.dasturim.recyclerview E/im.recyclervie: Invalid ID 0x00000000.
2021-09-15 10:19:31.872 32611-2053/mening.dasturim.recyclerview E/MediaPlayerNative: error (1, -1015)
2021-09-15 10:19:31.875 32611-32611/mening.dasturim.recyclerview E/MediaPlayer: Error (1,-1015)

@Ankit098126

Hi! I have the same error but when running

final player = AudioCache();
player.play("note7.wav");

Have no idea what the problem is

anyone can find solution for this plz tell me and i try ti find from last 1 week and not able to find any solution for this

MediaPlayer Error (1, -2147483648) android programing

У меня были некоторые проблемы с моим кодом для воспроизведения html5 vide.
Я создал короткую презентацию в powerpoint и экспортировал ее html5, она содержит
видео, я скопировал экспортированные файлы в свои файлы ресурсов в android купить мое видео
не воспроизводится.

Все остальное на моей презентации работает как прелесть, кроме видео, оно не воспроизводится, и я получаю следующую ошибку, когда я вставлял видео в видео, чтобы воспроизвести его на scree на моем Android-планшете – Android 4.0:

Я пытаюсь получить решение своей проблемы за последние 5 дней, я прочитал довольно много форумов, несколько раз меняю свой код и ничего.

Я нашел на почте, что причины вышеупомянутой ошибки:

  • Путь к файлу ошибочен. Неверный каталог или найденный URL или Uri.
  • Медиафайл находится в ошибке, несовместимый формат.
  • Отсутствующие разрешения.

Я проверил все вышеперечисленное в своем приложении и до сих пор не могу найти, как его решить.

Все остальное в моем файле и папке html5 отлично работает, поэтому я не думаю, что это проблема с каталогом.
Мои встроенные видеофайлы – это .mp4 и .webm sand, которые, как предполагается, поддерживаются.
Я смотрю на разрешение моих файлов и папок, и все, кажется, все в порядке.
У меня есть версия iPad для моего приложения, работающая отлично с теми же файлами и папками html5, и видео отлично работает.

Кто-нибудь знает, как я могу исправить эту проблему, кодирование должно быть забавным, но через 5 дней по этим проблемам у меня возникают мысли.

Я нашел в другом форуме, что андроид не позволяет воспроизводить видео файлы размером более 1 МБ, это правда? Одно из моих видео – 3,2 МБ, а другое – 29 МБ.

Ответ:
данные о размере видео не соответствуют действительности. Я настроил свои видео (видеофайлы MP4 только с кодом HTML5), чтобы играть из папки “res/raw”, и все это хорошо. Я просто не могу заставить их играть из папки с ресурсами, встроенной в HTML5.

Продолжая искать решения, но имея свои видео в папке “res/raw”, это хорошая альтернатива моей проблеме.

Источник

Понравилась статья? Поделить с друзьями:
  • Media license apple music ошибка
  • Media error киа сид
  • Media error ssd
  • Media error src not supported
  • Media error kia