[英]How to stream a opencv Mat with ffmpeg in c++
我是新來的。 我正在嘗試使用 ffmpeg 在 LAN 上流式傳輸一些使用 opencv 處理的圖像。 我看到了這個: Pipe raw OpenCV images to FFmpeg但它對我不起作用,它只會產生噪音。 我認為我發送的數據格式不正確。 我也看看這個: How to send opencv video's to ffmpeg但是(看最后一個答案)選項 -f jpeg_pipe 給我錯誤。
我現在應該做什么:
./示例 | ffmpeg -f rawvideo -pixel_format bgr24 -video_size 160x120 -framerate 20 -i - -f udp://192.168.1.79:1234
ffplay -f rawvideo -pixel_format gray -video_size 160x120 -framerate 30 udp://192.168.1.79:1234
這里看起來很簡單: http : //ffmpeg.org/ffmpeg-formats.html#rawvideo
我也嘗試寫圖像並發送它,但我有錯誤。 可能它會在圖像完成之前嘗試發送。
感謝您的幫助。
我設法進行了流式傳輸,盡管具有馬鈴薯質量,但也許某些 ffmpeg 大師可以幫助使用 ffmpeg 命令。
#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>
using namespace cv;
int main() {
VideoCapture cap("Your video or stream goes here");
Mat frame;
std::ios::sync_with_stdio(false);
while (cap.read(frame)) {
for (size_t i = 0; i < frame.dataend - frame.datastart; i++)
std::cout << frame.data[i];
}
return 0;
}
然后將其通過管道傳輸到 ffmpeg 就像
./test | ffmpeg -f rawvideo -pixel_format bgr24 -video_size 1912x796 -re -framerate 20 -i - -f mpegts -preset ultrafast udp://127.0.0.1:1234
並用 ffplay mpv 或其他方式播放
ffplay udp://127.0.0.1:1234
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.