我使用gstreamer转换文件/ RTMP / RTSP流中的音频,然后对其进行分析。
问题是,如果我的源文件是视频或视频流gstreamer使用了大量的CPU。
示例1(视频) - 使用30-35%的CPU作为htop说。
gst-launch-1.0 uridecodebin uri='test.mp4' ! autoaudiosink
示例2(上面使用ffmpeg -c copy转换的视频文件中的音频) - 使用2-4%的CPU
gst-launch-1.0 uridecodebin uri='test.mp3' ! autoaudiosink
如何指定我只需要视频文件中的音频源?
我使用的是decodebin,因为我不知道我会从用户那里得到哪些文件(格式)。
答案 0 :(得分:1)
对于上面的例子你可以使用playbin设置flags属性:
flags : Flags to control behaviour
flags: readable, writable
Flags "GstPlayFlags" Default: 0x00000617, "soft-colorbalance+deinterlace+soft-volume+text+audio+video"
(0x00000001): video - Render the video stream
(0x00000002): audio - Render the audio stream
(0x00000004): text - Render subtitles
(0x00000008): vis - Render visualisation when no video is present
(0x00000010): soft-volume - Use software volume
(0x00000020): native-audio - Only use native audio formats
(0x00000040): native-video - Only use native video formats
(0x00000080): download - Attempt progressive download buffering
(0x00000100): buffering - Buffer demuxed/parsed data
(0x00000200): deinterlace - Deinterlace video if necessary
(0x00000400): soft-colorbalance - Use software color balance
如果你想提取音频并对其进行转码,你可能需要编写一些代码。