我可以玩这个wav:
http://freewavesamples.com/yamaha-sy35-clarinet-c5
gst-launch filesrc location=Yamaha-SY-35-Clarinet-C5.wav ! wavparse ! autoaudiosink
所以我假设wavparse运行正常,但是 这个管道无法转码:
gst-launch filesrc location=Yamaha-SY-35-Clarinet-C5.wav ! wavparse ! vorbisenc ! filesink location=out.ogg
带有以下警告和错误
Setting pipeline to PAUSED ... Pipeline is PREROLLING ... 0:00:00.028608695 23692 0xa99720 WARN wavparse gstwavparse.c:2110:gst_wavparse_loop: error: Internal data flow error. 0:00:00.028637670 23692 0xa99720 WARN wavparse gstwavparse.c:2110:gst_wavparse_loop: error: streaming task paused, reason not-linked (-1) ERROR: from element /GstPipeline:pipeline0/GstWavParse:wavparse0: Internal data flow error. Additional debug info: gstwavparse.c(2110): gst_wavparse_loop (): /GstPipeline:pipeline0/GstWavParse:wavparse0: streaming task paused, reason not-linked (-1) ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ...
奇怪的是,错误发生在wavparse中,所以很好 当管道以音频设备接收器结束时,但没有编码接收器......
答案 0 :(得分:1)
试试这个管道: gst-launch filesrc location = audio.wav! wavparse! audioconvert! vorbisenc! filesink location = out.ogg
我认为vorbisenc示例(audio / x-raw-float)vorbisenc支持(audio / x-raw-int)不支持的格式,这就是你应该添加audioconvert的原因。如果在管道中添加-v选项,则可以查看所有详细信息。