【问题标题】:gstreamer transcoding with wavparse and vorbisenc fails使用 wavparse 和 vorbisenc 进行 gstreamer 转码失败
【发布时间】:2013-10-25 16:18:59
【问题描述】:

我可以播放这个 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

出现以下警告和错误

将管道设置为 PAUSED ... 管道正在预滚... 0:00:00.028608695 23692 0xa99720 WARN wavparse gstwavparse.c:2110:gst_wavparse_loop: 错误:内部数据流错误。 0:00:00.028637670 23692 0xa99720 WARN wavparse gstwavparse.c:2110:gst_wavparse_loop: 错误:流式传输任务暂停,原因未链接 (-1) 错误:来自元素 /GstPipeline:pipeline0/GstWavParse:wavparse0:内部数据流错误。 附加调试信息: gstwavparse.c(2110): gst_wavparse_loop (): /GstPipeline:pipeline0/GstWavParse:wavparse0: 流式传输任务暂停,原因未链接 (-1) 错误:管道不想预卷。 将管道设置为 NULL ... 释放管道...

奇怪的是,wavparse中出现错误,所以没问题 当管道以音频设备接收器结束,但不是以编码接收器结束时......

【问题讨论】:

    标签: gstreamer


    【解决方案1】:

    试试这个管道: gst-launch filesrc 位置=audio.wav !波形解析!音频转换!伏比生!文件接收位置=out.ogg

    我认为它在 vorbisenc 示例 (audio/x-raw-float) 中不支持的格式 vorbisenc 支持 (audio/x-raw-int),这就是为什么你应该添加 audioconvert。如果在管道中添加 -v 选项,您可以查看所有详细信息。

    【讨论】:

    • 这样就解决了错误信息,创建了一个59714字节的out.ogg文件,但是好像无效,因为它不会播放。我运行了命令“oggz info out.ogg”,它打印了 Content-Duration: 00:00:00.000。 “oggz validate out.ogg”打印:错误:文件不包含 Ogg 数据包。请注意管道发出警告:WARN bin gstbin.c:2395:gst_bin_do_latency_func: 没有真正配置延迟 0:00:00.000000000
    • 是的,它对我也不起作用,它缺少 ! oggmux 所以管道应该是 gst-launch-1.0 filesrc location=audio.wav ! wavparse ! audioconvert ! vorbisenc ! oggmux ! filesink location=out.ogg
    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2019-05-19
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多