使用ffenc编码音频文件
我正在尝试使用gstreamer对音频文件进行编码。 我正在使用该命令
gst launch filesrc location=s.pcm ! audio/x-raw-int, rate=4000, channels=2, endianness=1234, width=16, depth=16, signed=true ! ffenc_aac ! filesink location=file.wav
我收到一条错误消息: -
将管道设置为PAUSED ...管道正在PREROLLING ...错误:来自元素/ GstPipeline:pipeline0 / GstFileSrc:filesrc0:内部数据流错误。 其他调试信息:gstbasesrc.c(2625):gst_base_src_loop():/ GstPipeline:pipeline0 / GstFileSrc:filesrc0:流任务暂停,原因未协商(-4)错误:管道不希望预卷。 将管道设置为NULL ...释放管道...
任何人都可以指导我解决这个问题
不要混淆编码和容器。 你不能有一个AAC编码的WAV,WAV是PCM。 您可以拥有4k WAV,或者您可以在MP4或M4A容器中使用AAC编码文件。 这两个例子如下。 请注意,在这些示例中,如果您尝试将采样率更改为48000以下,则AAC编码器会变得非常挑剔。
创建原始音频文件
gst-launch audiotestsrc num-buffers=100
! audio/x-raw-int, rate=48000, channels=2, endianness=1234, width=16, depth=16, signed=true
! filesink location=foo.pcm
将其编码为WAV
gst-launch filesrc location=foo.pcm
! audio/x-raw-int, rate=48000, channels=2, endianness=1234, width=16, depth=16, signed=true
! audioresample
! audio/x-raw-int, rate=4000
! wavenc
! filesink location=foo.wav
将其编码为AAC并将其复合到mp4中
不知道为什么我必须编码然后重新解码,但没有其他工作,即使我可以直接从audiotest src。
gst-launch filesrc location=foo.pcm
! audio/x-raw-int, rate=48000, channels=2, endianness=1234, width=16, depth=16, signed=true
! wavenc
! wavparse
! ffenc_aac
! mp4mux
! filesink location=foo.mp4
..alternately使用faac
管道更清洁,输出文件更小
gst-launch filesrc location=foo.pcm
! audio/x-raw-int, rate=48000, channels=2, endianness=1234, width=16, depth=16, signed=true
! faac
! mp4mux
! filesink location=foo.mp4
或者voaacenc
即使它看起来具有最灵活的功能,voaacenc也不会在48000以下工作。 我尝试了8k,16k,48k,96k和44100,这有趣地改变了测试音的音调。
gst-launch filesrc location=foo.pcm
! audio/x-raw-int, rate=48000, channels=2, endianness=1234, width=16, depth=16, signed=true
! voaacenc
! mp4mux
! filesink location=foo.mp4
低比特率的AAC
我成功的最低AAC码率是16000,这里是那些测试,再次指出faac产生了最小的文件大小。
gst-launch audiotestsrc num-buffers=100
! audio/x-raw-int, rate=16000, channels=2, endianness=1234, width=16, depth=16, signed=true
! ffenc_aac
! mp4mux
! filesink location=foo.mp4
gst-launch audiotestsrc num-buffers=100
! audio/x-raw-int, rate=16000, channels=2, endianness=1234, width=16, depth=16, signed=true
! faac
! mp4mux
! filesink location=foo.mp4
链接地址: http://www.djcxy.com/p/43929.html