首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAAD无法读取m4a

JAAD无法读取m4a
EN

Stack Overflow用户
提问于 2015-07-21 13:12:22
回答 1查看 396关注 0票数 1

我想做的是为每个m4a文件生成一个预览。我正在尝试用Java Sound和JAAD来做这件事。

下面是我在Scala中的尝试

代码语言:javascript
复制
import java.io.{File, FileOutputStream}
import javax.sound.sampled.AudioSystem

/**
 * Created by khanguyen on 7/21/15.
 */
object Main extends App {
  val filePath = "audio.m4a"

  val file = new File(filePath)

  val audio = AudioSystem.getAudioInputStream(file)

  println(audio.getFrameLength) // return -1

  println(audio.getFormat) // return PCM_SIGNED 0.0 Hz, 0 bit, 0 channels, 0 bytes/frame, 

  val output = new FileOutputStream("outputaudio.m4a")

  var buffer = Array.fill[Byte](1024)(0)

  for (i <- 0 to 1024) {
    audio.read(buffer, i * 1024, 1024)
    buffer.take(10).map(println)
    output.write(buffer)
  }

  audio.close()
  output.flush()
  output.close()
}

我无法从音频输入流中读取任何内容。据说这个frameLength就是-1。经过一次读操作后,ArrayByte中的所有字节仍为0。我错过了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-21 17:02:41

如果您在audio.getFrameLength中获取-1,这是因为该文件格式不受支持。

代码语言:javascript
复制
val audio = AudioSystem.getAudioInputStream(file)
                                                  //> javax.sound.sampled.UnsupportedAudioFileException: could not get audio input
                                                  //|  stream from input file
                                                  //|   at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:
                                                  //| 1187)
                                                  //|   at forcomp.wc$$anonfun$main$1.apply$mcV$sp(forcomp.wc.scala:15)
                                                  //|   at org.scalaide.worksheet.runtime.library.WorksheetSupport$$anonfun$$exe
                                                  //| cute$1.apply$mcV$sp(WorksheetSupport.scala:76)
                                                  //|   at org.scalaide.worksheet.runtime.library.WorksheetSupport$.redirected(W
                                                  //| orksheetSupport.scala:65)
                                                  //|   at org.scalaide.worksheet.runtime.library.WorksheetSupport$.$execute(Wor
                                                  //| ksheetSupport.scala:75)
                                                  //|   at forcomp.wc$.main(forcomp.wc.scala:5)
                                                  //|   at forcomp.wc.main(forcomp.wc.scala)

      println(audio.getFrameLength) // return -1 

无论如何,我已经用一个宠物m4a示例文件对它进行了测试,但是在AAC (http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/AudioSystem.html)中你会找到更多关于支持的文件类型的信息,javax.sound.AudioSystem (m4a扩展名是AAC编码的一部分)应该是受支持的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31530847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档