V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Zoozy  ›  全部回复第 1 页 / 共 2 页
回复总数  30
1  2  
2023-04-14 12:10:34 +08:00
回复了 wodong 创建的主题 程序员 大疆 PSDK 获取视频流技术求助
在这个函数中,您需要使用 RTMP 协议将 H264 编码的裸流数据推送到 RTMP 服务器上,以便在视频播放器中显示。

以下是可能的实现方式:

```c++
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <ctime>
#include <cmath>
#include <algorithm>
#include <sstream>

#include "librtmp/rtmp.h"

#define RTMP_HEAD_SIZE (sizeof(RTMPPacket)+RTMP_MAX_HEADER_SIZE)

static void LiveviewConvertH264ToRgbCallback(E_DjiLiveViewCameraPosition position, const uint8_t* buf, uint32_t bufLen) {

static RTMP *rtmp = NULL;
static char *url = "rtmp://your-rtpm-server-url.com/live/stream";
static int fps = 30;
static int width = 1280;
static int height = 720;

if (!rtmp) {
rtmp = RTMP_Alloc();
RTMP_Init(rtmp);
rtmp->Link.timeout = 5; // Timeout in seconds
RTMP_SetupURL(rtmp, url);
RTMP_EnableWrite(rtmp);
RTMP_SetBufferMS(rtmp, 3600*1000); // Set the buffer size to 1 hour
if (!RTMP_Connect(rtmp, NULL) || !RTMP_ConnectStream(rtmp, 0)) {
RTMP_Free(rtmp);
rtmp = NULL;
std::cerr << "Failed to connect to RTMP server" << std::endl;
return;
}
}

// Create and initialize RTMP packet
RTMPPacket packet = {0};
RTMPPacket_Alloc(&packet, bufLen + RTMP_HEAD_SIZE);

packet.m_packetType = RTMP_PACKET_TYPE_VIDEO;
packet.m_nChannel = 0x04;

// Fill in the packet headers
char *data_ptr = packet.m_body;
data_ptr[0] = 0x17; // Video codec id: 7 (AVC)
data_ptr[1] = 0x01; // AVCPacketType: 1 (NALU without length field)
*((uint32_t *)(data_ptr + 2)) = 0x01000000; // Composition time offset: 0
std::memcpy(data_ptr + 6, buf, bufLen);

packet.m_nTimeStamp = RTMP_GetTime() - RTMP_GetStartTime(rtmp);
packet.m_nBodySize = bufLen + 5;

if (!RTMP_SendPacket(rtmp, &packet, TRUE)) {
std::cerr << "Failed to send packet to RTMP server" << std::endl;
}

// Free memory used by packet
RTMPPacket_Free(&packet);
}
```
在此实现中,我们使用 librtmp 库来完成 RTMP 协议的推流。在函数中的第一个参数 position 未被使用,因为它不需要对这个问题产生任何影响。

该代码假定你已经熟练掌握了 RTMP 协议和使用方法,并且服务器配置正确。

by gpt
"hms://redirect_url"
curl ip.sb
2018-05-22 20:00:37 +08:00
回复了 mercurylanded 创建的主题 全球工单系统 七牛又挂了,这个月第二次了。北京联通。
已经两个小时了 售后 VIP 群没人理 服气
2017-06-13 13:04:22 +08:00
回复了 koor 创建的主题 全球工单系统 京东自营 48 小时还没收到,什么情况!!
@ArthurKing 请原谅我。。笑出声。。。。
如果可以的话能说说 toB 怎么盈利的吗?
2016-05-08 01:49:59 +08:00
回复了 nonfu 创建的主题 PHP Laravel 推出 Mac 版极简主义开发环境 Valet
valet n. 贴身男仆;用车的人;伺候客人停车
啧啧啧~
2015-06-11 20:19:14 +08:00
回复了 cxq 创建的主题 分享创造 一个帮助英语拼写的 Alfred WorkFlow
很有用 多谢
rescue time +1
2014-11-28 13:20:21 +08:00
回复了 esplendo 创建的主题 推广 有你,真好! Think In Cloud 感恩抽奖活动(截止日期: 12.3)
99
2014-10-17 21:07:34 +08:00
回复了 kchum 创建的主题 macOS 有没有升到 Yosemite 之后外接显示器(HDMI)没有声音?
接HDMI无声音 音量图标变灰
直接耳机有声音
2014-09-11 12:59:54 +08:00
回复了 serco 创建的主题 分享创造 小白声波牙刷 I1 小部件升级通知
echomomo2005
非常感谢!
2014-04-17 11:03:53 +08:00
回复了 Zoozy 创建的主题 NGINX 求助,accesslog 中出现的未知请求
@wwek 这是一台私有API服务器 与其通信的都是我们自己的APP 我们自己肯定不会发起这样的请求 怀疑是恶意攻击之类的....
2014-04-01 16:00:33 +08:00
回复了 ainopara 创建的主题 macOS Mac OS X 的全屏动画太慢了,有办法加快这个动画的速度吗?
错了 defaults write com.apple.dock expose-animation-duration -float 0.12 && killall Dock
2014-04-01 16:00:02 +08:00
回复了 ainopara 创建的主题 macOS Mac OS X 的全屏动画太慢了,有办法加快这个动画的速度吗?
defaults write com.apple.Dock autohide-delay -float 0 && killall Dock
2014-03-14 21:06:08 +08:00
回复了 ksc010 创建的主题 分享发现 发现个好东西,站着写代码不腰疼
大淘宝什么时候才有
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5672 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 02:56 · PVG 10:56 · LAX 18:56 · JFK 21:56
Developed with CodeLauncher
♥ Do have faith in what you're doing.