0

RTSP, HTTP and UDP でサポートされているを使用してビデオをストリーミングしたいvlc。私は使用Qt5してQtいて、それほど優れたメディアライブラリを持っていないので、オープンソースを使用し、現在はラッパーを使用しlibvlcています。VLC-Qt

プログラムでストリーム ビデオを受信できます。ストリーミング ビデオを受信するためのソース コードを以下に示します。

void player::on_actionNETWORK_STREAM_triggered()
{
    QString url= QInputDialog::getText(this,tr("Open Url"),tr("Enter the URL you want to play"));

    if(url.isEmpty())
        return;
    else
    {
        m_media=new VlcMedia(url,m_instance);
        playlist.append(url);
        m_mediaList->addMedia(m_media);
        m_player->open(m_media);
    }
}

ストリーミング ビデオを受信するには、そのビデオの URL を新しいVlcMediaインスタンスに入力するだけですが、ビデオをストリーミングする方法がわかりません。

VLC-QTラッパーのドキュメントを読んでいるときに、class名前が付けられていることを読みましVlcVideoStream たが、そのクラスを使用してストリーミングを行う方法がわかりません。これに関するドキュメントのリンクをclass以下に示します

https://vlc-qt.tano.si/reference/1.1/classvlcvideostream

編集1

このことについてインターネットでさらに検索したところ、使用方法についての議論が見つかり、VlcVideoStreamそのためのコードを実装しました。ソースコードを以下に示します

class VideoStreaming : public VlcVideoStream
{
    Q_OBJECT
public:
    explicit VideoStreaming(QObject *parent = nullptr);

    void frameUpdated();
};
void VideoStreaming::frameUpdated()
{
    int rows,cols;
    
    std::shared_ptr<const VlcAbstractVideoFrame>  frame=  renderFrame();
    
    if (!frame)
        return; // LCOV_EXCL_LINE

    
    rows = frame->height + frame->height/2;
    cols = frame->width;
    
    qDebug()<<"Frame updated gets called";
}

次の行でインスタンス化します

    m_video_stream= new VideoStreaming(ui->m_video);
    m_video_stream->init(m_player);

ビデオのフレームを受信できるようになりましたが、YUV今までビデオをストリーミングする方法がわかりません。どんな助けでも大歓迎です。ラッパーはビデオストリーミングをサポートするのにそれほど優れたラッパーではないため、私でさえ純粋な libvlcストリーミングソリューションに対してオープンです。VLC-QT

4

1 に答える 1

0

setOption()の関数を使用しVlcMediaてストリーミング属性を設定するだけで機能します。

    m_media = new VlcMedia("file:///home/vinay/Media Library/lion-sample.webm",m_instance);
    m_media->setOption(":sout=#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:udp{dst=127.0.0.1:1234}");
    m_media->setOption(":no-sout-all");
    m_media->setOption(":sout-keep");

これらの文字列引数は、vlcアプリケーションから取得されます。アプリケーションを介してビデオをストリーミングするとvlc、最後のウィンドウに、設定したこれらのパラメーターがすべて表示されます。したがって、これらのパラメーターをコピーして、引数としてに渡しsetOption()、それが機能します。

このリンクで、このトピックに関する私の詳細な議論を読むことができます

https://forum.qt.io/topic/121483/how-to-stream-the-video-using-vlc-qt-wrapper-or-libvlc/10

于 2020-12-07T12:03:57.430 に答える