仅通过libvlc播放带音频的视频

问题描述 投票:1回答:1

我想用libvlc播放视频,不带视频,只带音频,我该怎么办?

#include <vlc/vlc.h>

#include <chrono>
#include <iostream>
#include <string>
#include <thread>
#include <vector>

int main()
{
    libvlc_instance_t *inst = libvlc_new(0, nullptr);
    char const *location = "mario_00.webm";
    libvlc_media_t *vlc_media = libvlc_media_new_path(inst, location);

    libvlc_media_player_t *vlc_player = libvlc_media_player_new_from_media(vlc_media);
    libvlc_media_player_play(vlc_player); //this line will play the video and audio

    while(1){
        if(libvlc_media_get_state(vlc_media) == libvlc_Ended){
            break;
        }
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    libvlc_media_player_release(vlc_player);
    libvlc_media_release(vlc_media);
    libvlc_release(inst);
}

谢谢

c++ c libvlc
1个回答
0
投票

您可以使用--no-video参数指定选项libvlc_new()

其声明为>

libvlc_instance_t* libvlc_new( int argc, const char *const *argv )

所以,它会像这样:

const char* argv[] = { "--no-video" };

libvlc_instance_t *inst = libvlc_new( 1, argv );

thread中所述,另一个选项是选项--vout none。这样,代码将是:

const char* argv[] = { "--vout", "none" };

libvlc_instance_t *inst = libvlc_new( 2, argv );

但是,在播放媒体(音频)时,会出现类似的连续错误流:

[00007f8da808b7f0] main video output error: video output creation failed
[00007f8dc741e930] main decoder error: failed to create video output
[00007f8da80d2250] main video output error: video output creation failed
[00007f8dc741e930] main decoder error: failed to create video output
[00007f8da80d2250] main video output error: video output creation failed
[00007f8dc741e930] main decoder error: failed to create video output
[h264 @ 0x7f8dc74422e0] get_buffer() failed
[h264 @ 0x7f8dc74422e0] thread_get_buffer() failed
[h264 @ 0x7f8dc74422e0] decode_slice_header error
[h264 @ 0x7f8dc74422e0] no frame!
[00007f8da4045f80] main video output error: video output creation failed
[00007f8dc741e930] main decoder error: failed to create video output
[h264 @ 0x7f8dc7453f60] get_buffer() failed
[h264 @ 0x7f8dc7453f60] thread_get_buffer() failed
[h264 @ 0x7f8dc7453f60] decode_slice_header error
[h264 @ 0x7f8dc7453f60] no frame!
[00007f8d9c045f80] main video output error: video output creation failed
[00007f8dc741e930] main decoder error: failed to create video output
[h264 @ 0x7f8dc7499c40] get_buffer() failed
[h264 @ 0x7f8dc7499c40] thread_get_buffer() failed
[h264 @ 0x7f8dc7499c40] decode_slice_header error
[h264 @ 0x7f8dc7499c40] no frame!

也可以使用libvlc_media_player_set_nsobject()这样实现:

libvlc_media_player_set_nsobject( vlc_player, nullptr );

在这种情况下,您不必将argcargv传递给libvlc_new()

© www.soinside.com 2019 - 2024. All rights reserved.