簡體   English   中英

將Webm視頻從URL流式傳輸到C ++ windows.h應用程序

[英]Streaming a webm video from a URL into a C++ windows.h application

我正在使用C ++制作自己的Windows應用程序。 我想在此應用程序中播放一個.webm視頻,但我想從一個URL播放它,而不是從將我的.exe放在同一目錄中加載它。運行Windows 10,僅使用Emacs和g ++進行編寫/編譯。

有人知道我該怎么做嗎? 我需要什么包括,有可能等嗎?

注意:webm視頻也可以轉換為mp4。

為了澄清起見,“ Windows應用程序”是指以下之一:

HWND hwnd = CreateWindowEx(0, CLASS_NAME, L"WindowName", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

我想繼續使用它,因為我可以用它制作一個漂亮的,無邊界的窗口!

示例使用了IMFPMediaPlayer::CreateMediaItemFromURL ,您可以將URL直接傳遞給PlayMediaFile函數,例如:

WCHAR uri[] = L"http://dl5.webmfiles.org/big-buck-bunny_trailer.webm";
hr = PlayMediaFile(hwnd, uri);

將gstreamer與uridecodebin一起使用(您需要設置uri屬性)。 可能需要在src和接收器之間添加額外的autovideoconvert和/或videoscale元素。

GstElement *pipeline = gst_pipeline_new ("xvoverlay");
GstElement *src = gst_element_factory_make ("uridecodebin", NULL);
GstElement *sink = gst_element_factory_make ("d3dvideosink", NULL);

g_object_set (G_OBJECT (src), "uri","some_url", NULL);

gst_bin_add_many (GST_BIN (pipeline), src, sink, NULL);
gst_element_link (src, sink);
gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (sink), (guintptr)hwnd);
GstStateChangeReturn sret = gst_element_set_state (pipeline,
  GST_STATE_PLAYING);

如果安裝了gstreamer,請使用以下方法測試安裝程序:

gst-launch-1.0 uridecodebin uri="http://dl5.webmfiles.org/big-buck-bunny_trailer.webm" ! d3dvideosink

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM