35.将多实体文件保存成单个零件
Posted kangkang5
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了35.将多实体文件保存成单个零件相关的知识,希望对你有一定的参考价值。
一、基本参数
1.定义:通过插入新零件的方式可将多实体零件的部分实体单独保存成零件
二、基本操作及内容
1.点击命令
2.参数信息
3.原部件与导出实体的关系
4.单位是否沿用原部件的
本文来自博客园,作者:kangkang5,转载请注明原文链接:https://www.cnblogs.com/kangkangfive/p/17298275.html
gstreamer 将多通道 wav 文件拆分为单独的通道并将每个通道编码为 mp3、alac 等并保存到文件
【中文标题】gstreamer 将多通道 wav 文件拆分为单独的通道并将每个通道编码为 mp3、alac 等并保存到文件【英文标题】:gstreamer split multi-channel wav file into separate channels and encode each channel as mp3, alac etc and save to file 【发布时间】:2014-02-07 05:02:13 【问题描述】:我需要拆分一个多声道的wav文件,并将每个声道编码成mp3文件。
我知道 gtresamer 的 deinterleave 插件,但我不确定如何将它用于 wav 文件以及如何对频道流进行编码。
我更喜欢基于 gtreamer(或 ffmpeg)的解决方案,因为我需要限制 I/O。即,我不希望将中间单通道 wav 文件写入存储。
ffmpeg 可用于this way。但是,ubuntu ffmpeg 中没有这两个开关。
snsonic 的解决方案抛出以下错误:
(gst-launch-0.10:2218): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstpng.so': libpng12.so.0: cannot open shared object file: No such file or directory
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstWavParse:wavparse0: Internal data flow error.
Additional debug info:
gstwavparse.c(1982): 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 ...
(gst-launch-0.10:2218): GStreamer-CRITICAL **: gst_caps_unref: assertion `GST_CAPS_REFCOUNT_VALUE (caps) > 0' failed
当我使用没有去交错的单通道 wav 文件进行测试时,创建了 mp3 文件但它只有噪音。
【问题讨论】:
【参考方案1】:你提前知道频道的数量吗? 如果你使用 gst-launch,你可以做类似的事情:
gst-launch-1.0 filesrc location="xx.wav" ! wavparse ! deinterleave name=d \
d.src_01 ! <encoder> ! filesink location="out1.mp3" \
d.src_02 ! <encoder> ! filesink location="out2.mp3"
等等。如果事先不知道通道数,则需要编写一些代码。
【讨论】:
【参考方案2】:FFmpeg 可能会满足您的要求。
【讨论】:
【参考方案3】:您不必事先知道 wav 文件有多少个频道。 您需要安装 sox。
#!/bin/bash
INPUT=$1
fbname=$(basename "$INPUT" .wav)
N=`soxi -c $INPUT`
for i in $(seq 1 $N)
do
sox $INPUT "$fbname-$i.wav" remix $i
avconv -i "$fbname-$i.wav" -f mp2 "$fbname-$i.mp3"
rm $fbname-$i.wav
done
您可能希望将 avconv 替换为 ffmpeg,具体取决于您正在处理的发行版。
【讨论】:
以上是关于35.将多实体文件保存成单个零件的主要内容,如果未能解决你的问题,请参考以下文章
gstreamer 将多通道 wav 文件拆分为单独的通道并将每个通道编码为 mp3、alac 等并保存到文件