Gstreamer 使用ffenc_aac对音频文件进行编码
我正在尝试使用gstreamer对音频文件进行编码。我正在使用命令Gstreamer 使用ffenc_aac对音频文件进行编码,gstreamer,Gstreamer,我正在尝试使用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 我收到一条错误消息:- 正在将管道设置为暂停。。。管道正在预滚。。。错误:来自 元素/GstPip
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
我收到一条错误消息:-
正在将管道设置为暂停。。。管道正在预滚。。。错误:来自
元素/GstPipeline:pipeline0/GstFileSrc:filesrc0:内部数据流
错误。其他调试信息:gstbasesrc.c(2625):gst\u base\u src\u循环
():/GstPipeline:pipeline0/GstFileSrc:filesrc0:streaming任务已暂停,
未协商的原因(-4)错误:管道不想预滚。
正在将管道设置为空。。。释放管道
有谁能指导我克服这个问题吗?不要把编码和容器混为一谈。不能使用AAC编码的WAV,WAV是PCM。您可以使用4k WAV,也可以在MP4或M4A容器中使用AAC编码的文件。下面是两个例子。请注意,在这些示例中,如果尝试将采样率更改为48000以下,AAC编码器会变得非常挑剔 创建原始音频文件 将其编码为WAV 将其编码为AAC,并将mux编码为mp4 我真的不知道为什么我必须编码,然后再解码,但没有其他工作,即使我可以直接从听力测试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
..交替使用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
不要将编码与容器混淆。不能使用AAC编码的WAV,WAV是PCM。您可以使用4k WAV,也可以在MP4或M4A容器中使用AAC编码的文件。下面是两个例子。请注意,在这些示例中,如果尝试将采样率更改为48000以下,AAC编码器会变得非常挑剔 创建原始音频文件 将其编码为WAV 将其编码为AAC,并将mux编码为mp4 我真的不知道为什么我必须编码,然后再解码,但没有其他工作,即使我可以直接从听力测试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
..交替使用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
请发布全部或部分x-raw-int文件。请发布全部或部分x-raw-int文件。