Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过socket传输视频并从客户端播放

通过socket传输视频并从客户端播放
EN

Stack Overflow用户
提问于 2010-11-20 08:03:18
回答 2查看 13.4K关注 0票数 6

我有两个简单的程序,服务器和客户机,都在localhost上。我想要做的是通过套接字将视频从服务器端流式传输到客户端,客户端可以使用套接字的filediscriptor进行播放。首先,我尝试发送一些消息,客户端可以接收它。之后,我从服务器的d卡向客户端发送了几个字节的视频。客户端可以接收这些字节,但不能播放它。有人知道怎么解决这个问题吗?

下面是我的服务器和客户端代码片段:

服务器:

代码语言:javascript
运行
AI代码解释
复制
        //Receive request from client.
     Socket client=serversocket.accept();
     System.out.println("accept");

     //Receive client message.
     BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
     String str=in.readLine();
     System.out.println("read:"+str);

     //Send message to client.
     //PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true);
     //out.println("server message");
     FileInputStream fis=new FileInputStream("/sdcard/toystory3.3gp");
     byte buffer[]=new byte[2000];
     fis.read(buffer,0,20);
     DataOutputStream out=new DataOutputStream(client.getOutputStream());
     out.write(buffer,0,20);
     in.close();
     out.close();
     client.close();
     System.out.println("close");

客户端:

代码语言:javascript
运行
AI代码解释
复制
 Socket socket=new Socket("127.0.0.1",4444);
 String message="Initial"+"\r\n";
 //Send message to server.
 PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
 out.println(message);

 //Receive message from server.
 BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
 String msg=br.readLine();
 //ParcelFileDescriptor pfd=ParcelFileDescriptor.fromSocket(socket);
 //MediaPlayer m=new MediaPlayer();
 //m.setDataSource(pfd.getFileDescriptor());
 //m.prepare();
 //m.start();

 if(msg!=null)
 {
  System.out.println("Data received.");
  System.out.println(msg);
 }
 else
 {
  System.out.println("Data not received.");
 }
 out.close();
 br.close();
 socket.close();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-20 08:54:33

这不会起作用,因为3gp (和其他avi派生的文件,如mp4等)在文件的末尾有标题(sic)。所以任何玩家都必须有权访问整个文件。

目前,RTSP/RTP是播放视频的唯一途径。HTTP自适应流传输正在进行中。

此外,如果您正在尝试制作p2p视频(设备到设备),您应该知道运营商网络上的所有设备都位于NAT防火墙之后。他们只能打开出站连接。您将需要使用某种NAT穿透。

票数 5
EN

Stack Overflow用户

发布于 2010-11-30 15:35:44

我尝试将ffmpeg移植到android上,以解决android的视频和流媒体格式的问题。但是我发现用所有的网络东西为android构建ffmpeg是相当困难的。

RTSP有很多流的配置,我设法用MediaPlayer之类的东西得到了你想要的东西,你应该试着更好地了解你流媒体的格式(在这种情况下是vlc)。

另外,在darwin流媒体服务器上使用了很多,它很容易配置,我可以使用它来流媒体到android设备上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4231793

复制
相关文章
通过WebRTC进行实时通信-通过RTCPeerConnection传输视频
RTCPeerConnection 是调用WebRTC传输音视频和交换数据的API。这个例子是在同一个页面中两个RTCPeerConnection对象之间建立连接。没有什么实际价值,但却能很好的证明RTCPeerConnection是如何工作的。
音视频_李超
2020/04/02
5.6K0
Android开启热点通过socket进行文件传输
前言:最近在调研localonlyhotspot(本地热点),需要写一个demo来证明可以通过热点实现socket通信。经历重重波折终于搞定了,在这里做一个总结。
用户7557625
2020/07/15
1.4K0
自制的视频流通过国标协议接入EasyGBS视频流传输成功但无法播放的原因分析
上一篇我们讲了很多客户自制了视频流通过国标协议接入EasyGBS,但是不能播放,有一部分情况是信令的不兼容导致播放不了,还有一部分情况存在另外一个原因,本文就来分析一下。
TSINGSEE青犀视频
2021/08/13
3450
自制的视频流通过国标协议接入EasyGBS视频流传输成功但无法播放的原因分析
socket方式传输文件
上述程序修改搬运自:Python3使用TCP编写一个简易的文件下载器--Linux公社 ,服务器端添加了一段打印本机IP的代码,客户端添加了一段新建receive文件夹保存接收文件的代码。
xxpcb
2020/08/04
3.1K0
Python Socket传输图片
我们在传输数据时,经常使用tcp/ip的服务器和客户端模型,很多设备也经常将网口作为硬件接口预留出来。可以使用tcp/ip传输图像、大的文件等,如果图片过大,还会进行拆分传输,接收方根据对应协议进行解包。解包过程中可能会出现tcp粘包现象,所以要根据对应特性进行拆包。本次给大家分享一个小的python传输图像的例子,由于数据量不大,没有粘包的现象,以后会给大家分享一个Qt下使用tcp/ip根据对应协议解析图片的例子。
用户5908113
2019/08/06
4.1K0
Python  Socket传输图片
socket03-Socket 客户端
Soket客户端 可以用来连接服务器 1.连接步骤: 建立连接 使用I/O 学节流进行交互 2.代码实现: public static void main(String[] args) throws IOException { //1.建立服务器连接 Socket client = new Socket("localhost",8888); //2.获取服务器传来的数据 BufferedReader bf = new BufferedReader( new InputStre
潇洒
2019/06/28
2K0
Qt Socket传输图片(一)
上次简单实现了python发送和接收图片的Demo,本次通Qt的接收图片,并显示在QLabel上。
用户5908113
2019/08/06
3.4K0
Qt Socket传输图片(一)
基于Socket和OpenCV的实时视频传输(On Linux)「建议收藏」
上一篇介绍了在Windows上实现基于Socket和openCV的实时视频传输,这一篇将继续讲解在Linux上的实现。
全栈程序员站长
2022/07/30
1.3K0
python socket编程(传输字符
socket官方文档:https://docs.python.org/2/library/socket.html
py3study
2020/01/06
8540
python socket编程(传输字符
socket粘包解决方案_socket 传输文件
Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。
全栈程序员站长
2022/09/23
1K0
tcp客户端socket
import socket # 和udp的区别显而易见,udp发送和接收的是一个元祖,因为udp是不建立连接的,只有得到了对方的端口和ip才能进行沟通。 # 而tcp不是,tcp发送和接受的是一个字符串,因为在进行通信前必须先建立好连接确定好了ip以及端口, # 所以不用在接受和发送的时候去特地的发送或者接受端口号和ip地址。 # 总结来说TCP有以下几点: # 面向连接(确认有创建三方交握,连接已创建才作传输。) # 有序数据传输 # 重发丢失的数据包 # 舍弃重复的数据
汪凡
2019/02/22
1.5K0
14.6 Socket 应用结构体传输
当在套接字编程中传输结构体时,可以将结构体序列化为字符串(即把结构体的所有成员打包成一个字符串),然后将字符串通过套接字传输到对端,接收方可以将字符串解析为结构体,然后使用其中的成员数据。这种方法通常被称为序列化(Serialization)和反序列化(Deserialization),本章中我们可以采用将一个结构体序列化为一个纯字符串,然后将该字符串通过套接字传输给对端,当对端收到后只需要将字节序强制转换为对等的结构体指针即可实现对该结构的解析。
王瑞MVP
2023/10/16
3620
14.6 Socket 应用结构体传输
14.7 Socket 循环结构体传输
在上述内容中笔者通过一个简单的案例给大家介绍了在套接字编程中如何传递结构体数据,本章将继续延申结构体传输,在某些时候例如我们需要传输一些当前系统的进程列表信息,或者是当前主机中的目录文件,此时就需要使用循环结构体传输功能,循环传输结构体的关键点在于,客户端发送结构体数据之前需要通过一次通信来告诉服务端需要接收的次数,当服务端接收到次数时则可利用接收计数器依次循环接收数据直到客户端完整所有数据包的发送。
王瑞MVP
2023/10/16
2330
14.7 Socket 循环结构体传输
udp 视频传输_webrtc视频流传输
在UDP实时图像传输一文中,介绍了如何使用UDP来实现图像的实时传输,并使用C#进行了发送端和接收端的搭建。但是文中的方法是对整张图片进行JPEG压缩,并通过UDP一次性地发送到接收端,由于一个UDP数据包只能发送64k字节的数据,所以该方法的图片传输大小是有限制的,实测只能发送480P视频中的图像。
全栈程序员站长
2022/11/09
1.9K0
udp 视频传输_webrtc视频流传输
14.9 Socket 高效文件传输
网络上的文件传输功能也是很有必要实现一下的,网络传输文件的过程通常分为客户端和服务器端两部分。客户端可以选择上传或下载文件,将文件分块并逐块发送到服务器,或者从服务器分块地接收文件。服务器端接收来自客户端的请求,根据请求类型执行对应的操作,并根据发送的文件名或其他标识来确定要传输的文件。
王瑞MVP
2023/10/17
7050
14.9 Socket 高效文件传输
DirectShow播放视频
本来想用VMR9绘制到D3D的Texture上的, 试着弄了一下, 慢得真够可以的, 还是直接全屏(窗口)放得了 代码也懒得写了, 直接拿SDK里的VMRPlayer中CMovie类用就行 1: CMovie g_movie NULL 2: g_movie CMovieg_hWnd 4: g_movieOpenMovie 6: g_moviePlayMovie 8: RECT rc 10: GetClientRectg_hWnd rc 11: g_moviePutMoviePositio
逍遥剑客
2018/05/21
1.4K0
通过WebSocket传输文件
工作中需要将大量文件从一台服务器传输至另一台服务器,最开始是直接使用基础的TCP编程搞定的。但后来业务上要求两台服务器间只能走HTTP协议,而且还要保证传输过去的文件的完整性。想了下,最后基于WebSocket协议完成了该功能。 思路 服务器端侦听某端口,接受WebSocket请求,后面可用nginx作反向代理,外部看到的将是80端口 客户端连接服务器的WebSocket地址,连接成功后,首先传送一个NEW_FILE的数据包,里面带上要传输的文件名 服务器端收到NEW_FILE包后,解析出文件名,并创建目标
jeremyxu
2018/05/10
12.7K1
使用socket实现TCP和UDP传输
转载自:https://blog.csdn.net/timmiy/article/details/51946093
战神伽罗
2019/09/03
1.7K0
使用socket实现TCP和UDP传输
14.3 Socket 字符串分块传输
首先为什么要实行分块传输字符串,一般而言Socket套接字最长发送的字节数为8192字节,如果发送的字节超出了此范围则后续部分会被自动截断,此时将字符串进行分块传输将显得格外重要,分块传输的关键在于封装实现一个字符串切割函数,将特定缓冲区内的字串动态切割成一个个小的子块,当切割结束后会得到该数据块的个数,此时通过套接字将个数发送至服务端此时服务端在依次循环接收数据包直到接收完所有数据包之后在组合并显示即可。
王瑞MVP
2023/10/13
4160
14.3 Socket 字符串分块传输
Flutter视频播放、Flutter VideoPlayer 视频播放组件精要
在 ios 目录下的 info.plist 清单文件中配置 iOS设置的http网络访问权限 :
易寒
2022/02/08
5K0

相似问题

Android录制视频并通过Socket传输到PC

19

使用socket io流式传输视频

10

通过socket.io从浏览器流传输视频?

13

通过socket传输GIF动画

11

通过flash播放器流式传输视频文件

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档