Gstreamer使用(uri)decodebin从视频文件播放音频 - 高CPU使用率

时间:2017-05-27 18:44:08

标签: audio ffmpeg gstreamer

我使用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,因为我不知道我会从用户那里得到哪些文件(格式)。

1 个答案:

答案 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

如果你想提取音频并对其进行转码,你可能需要编写一些代码。