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