could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037

could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:


问题:

daemon not running. starting it now on port 5037
error: could not install smartsocket listener: cannot bind to 127.0.0.1:5037: XXX(10048) could not read ok from ADB Server
failed to start daemon error: cannot connect to daemon
原因:
基本是因为5037端口被占用
解决:
以下适用Windows 运命行下
具体查看被占用的端口进程

 netstat -aon|findstr 5037

Paste_Image.png


查看进程的具体描述
tasklist /fi "PID eq 5008"
5008为上步找到pid


Paste_Image.png


强制退出进程
taskkill /pid 5008/f
/f表示强制
重新启动adb就可以了
adb start-server

### 使用 C++ 在 Linux 环境下通过 SRT 协议进行 H264 视频推流 为了实现这一目标,可以利用 `FFmpeg` 库来处理视频编码和解码操作,并结合 `SRT` 库来进行安全可靠的传输。下面是一个简单的例子,展示如何设置并启动一个基于 SRT 的 H264 流媒体服务器。 #### 安装依赖库 首先安装必要的软件包: ```bash sudo apt-get update && sudo apt-get install -y \ build-essential cmake libssl-dev libsodium-dev pkg-config \ ffmpeg libavcodec-dev libavformat-dev libswscale-dev ``` 接着下载编译最新的 `SRT` 源代码版本: ```bash git clone https://github.com/Haivision/srt.git cd srt mkdir build && cd build cmake .. make -j$(nproc) sudo make install ldconfig ``` #### 编写 C++ 推流程序 创建一个新的文件名为 `h264_srt_streamer.cpp` 并加入以下内容: ```cpp extern "C" { #include <libavutil/imgutils.h> #include <libavutil/time.h> #include <libavformat/avformat.h> } #include <iostream> #include <srt/srt.h> int main(int argc, char *argv[]) { const char* url = "srt://127.0.0.1:8080?mode=listener"; AVFormatContext* fmt_ctx; int ret; av_register_all(); avformat_network_init(); // 创建输出上下文 if ((ret = avformat_alloc_output_context2(&fmt_ctx, NULL, "h264", url)) < 0) { std::cerr << "Could not allocate output context." << std::endl; return ret; } // 设置 SRT 特定选项 AVRational time_base{1, AV_TIME_BASE}; AVStream* out_stream = avformat_new_stream(fmt_ctx, nullptr); out_stream->time_base = time_base; out_stream->avg_frame_rate = {25, 1}; // 假设帧率为每秒25帧 // 打开URL连接 if (!(fmt_ctx->oformat->flags & AVFMT_NOFILE)) { if ((ret = avio_open(&fmt_ctx->pb, url, AVIO_FLAG_WRITE)) < 0) { std::cerr << "Cannot open URL '" << url << "'" << std::endl; goto end; } } // 写入头信息 if ((ret = avformat_write_header(fmt_ctx, nullptr)) < 0) { std::cerr << "Error occurred when opening output URL\n"; goto end; } // 初始化SRT套接字配置参数 SRTSOCKET sock = srt_socket(AF_INET, SOCK_DGRAM, 0); sockaddr_in addr{}; addr.sin_family = AF_INET; addr.sin_port = htons(8080); inet_pton(AF_INET, "127.0.0.1", &(addr.sin_addr)); srt_setsockopt(sock, 0, SRTO_SENDER, (void*)&true, sizeof(bool)); srt_bind(sock, reinterpret_cast<sockaddr*>(&addr), sizeof(addr)); srt_listen(sock, 1); while(true){ uint8_t packet_data[1024]; ssize_t bytes_read = fread(packet_data, 1, sizeof(packet_data), stdin); if(bytes_read>0){ AVPacket pkt; av_init_packet(&pkt); pkt.data = packet_data; pkt.size = static_cast<int>(bytes_read); // 发送数据包到网络 if((ret = av_interleaved_write_frame(fmt_ctx,&pkt))!=0){ fprintf(stderr,"Error sending a packet.\n"); break; } } } end: av_write_trailer(fmt_ctx); avformat_free_context(fmt_ctx); fclose(stdout); } ``` 此段代码展示了怎样初始化 FFmpeg 和 SRT 进行基本的数据打包发送过程[^2]。需要注意的是这只是一个非常基础的例子,在实际应用中还需要考虑更多细节比如错误处理、资源释放以及性能优化等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值