对于我正在研究的项目的一部分,我正在实现一个RTP包,我必须用RTP头字段填充字节的头部数组.
//size of the RTP header:
static int HEADER_SIZE = 12; // bytes
//Fields that compose the RTP header
public int Version; // 2 bits
public int Padding; // 1 bit
public int Extension; // 1 bit
public int CC; // 4 bits
public int Marker; // 1 bit
public int PayloadType; // 7 bits
public int SequenceNumber; // 16 bits
public int TimeStamp; // 32 bits
public int Ssrc; // 32 bits
//Bitstream of the RTP header
public byte[] …Run Code Online (Sandbox Code Playgroud) 我已经捕获了三个不同的流作为带有元数据的pcap文件.如何流回RTP/RTCP流?
我正在尝试播放实时RTSP视频(来自rtsp://media2.tripsmarter.com/LiveTV/BTV/)VideoView,这是我的代码:
public class ViewTheVideo extends Activity {
VideoView vv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vv = (VideoView) this.findViewById(R.id.VideoView);
Uri videoUri = Uri.parse("rtsp://media2.tripsmarter.com/LiveTV/BTV/");
vv.setMediaController(new MediaController(this));
vv.setVideoURI(videoUri);
vv.requestFocus();
vv.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
vv.start();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这个代码在三星Galaxy Y上工作正常,甚至在模拟器上也可以,但它不能在三星Galaxy S2上运行(对不起,这个视频无法播放)!设备和模拟器都运行Gingerbread.
这是LogCat消息:
07-30 10:48:28.310: I/MediaPlayer(24573): uri is:rtsp://media2.tripsmarter.com/LiveTV/BTV/
07-30 10:48:28.310: I/MediaPlayer(24573): path is null
07-30 10:48:28.310: D/MediaPlayer(24573): Couldn't open file on client side, trying server side
07-30 10:49:13.025: W/MediaPlayer(24573): info/warning (1, 26) …Run Code Online (Sandbox Code Playgroud) 我是android编程的新手,我需要关于android RTP编程的想法.问题
我正在寻找一种通过互联网传输数据的好方法,我在C++/windows环境下工作.数据是二进制的,是提取图像的压缩blob.输入和要求如下:
我是网络编程的新手,到目前为止,我可以发现下列方法之一是合适的.
客户端在浏览器上运行(在浏览器上显示实时图像).服务器运行本机C++代码.如果有其他方法可以实现相同的目的,请告诉我?我应该选择哪一个?为什么?
我需要使用C#转码视频流.该流进来的各种格式,比如MP4,H264,H263,VP8.有没有可以转码的c#库MemoryStream?
我正在尝试使用Android的RTP类将音频流从一台设备多播到其他设备。
我完全不希望使用任何第三方库。
我能够使用AudioStream并AudioGroup设置彼此的IP地址在两个设备之间流式传输双向音频,但是我想流式传输到多播组。
如果我尝试AudioStream使用诸如的多播地址实例化239.1.1.1,然后在另一台设备上使用audioStream.associate()相同的多播地址,但不会听到流。
我读过一些不支持多播的Android设备,但我的设备(均为Samsung Galaxy Tab 2s)都支持。我什至在我的代码中添加了以下内容,以尝试获取多播锁定:
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
multicastLock = wifi.createMulticastLock("multicastLock");
multicastLock.setReferenceCounted(true);
multicastLock.acquire();
Run Code Online (Sandbox Code Playgroud)
此外,清单文件中还具有以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gstreamer作为服务器实现实时流式传输,而不是纯RTP(无RTSP),使用sdp文件,服务器到客户端的延迟时间<500ms.测试服务器已经过测试
gst-launch-1.0 -v v4l2src ! video/x-raw,width=640,height=480,framerate=30/1 ! x264enc tune=zerolatency threads=0 bitrate=500 speed-preset=ultrafast ! rtph264pay pt=96 config-interval=1 ! udpsink host=X.X.X.X port=X
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用gst-launch从gstreamer客户端接收它我没有延迟(在网络上使用两个不同的设备),我也能够使用vlc作为客户端,读取sdp文件和使用文件缓存实现相同的功能> = 1500ms.
我的问题是我需要一个Android客户端.我正在尝试使用LibVLC for Android但是使用相同的选项我无法实现延迟<2s.
适用于Android的LibVLC代码,其中MediaPlayer和Media是org.videolan.libvlc的一部分:
ArrayList<String> options = new ArrayList<String>();
options.add("--file-caching=2000");
mLibVLC = new LibVLC(options);
mLibVLC.setOnHardwareAccelerationError(this);
mHolder.setKeepScreenOn(true);
// Create media player
mMediaPlayer = new MediaPlayer(mLibVLC);
mMediaPlayer.setEventListener(mPlayerListener);
mSurface = (SurfaceView) findViewById(R.id.surfaceView);
mHolder = mSurface.getHolder();
// Set up video output
final IVLCVout vout = mMediaPlayer.getVLCVout();
vout.setVideoView(mSurface);
vout.setWindowSize(640, 480);
vout.addCallback(this);
vout.attachViews();
Media m = new Media(mLibVLC, media);
mMediaPlayer.setMedia(m);
mMediaPlayer.play();
Run Code Online (Sandbox Code Playgroud)
我还尝试了其他选项--clock-synchro -clock-jitter等...在启动时,似乎需要大约2秒来缓冲,这些秒延迟了整个流.有一种方法可以减少标准客户端中的延迟,或者是否存在另一个Android客户端? …
我希望使用ffserver传输我的相机视频和麦克风音频.FFserver说它可以做到.但为什么我找不到任何成功的来源?如果有人知道,请告诉我.
我正在尝试使用ffmpeg编码和流式处理(libavcodec / libavformat-具有Zeranoe构建的MSVC x64)
这是我的代码,大部分从编码示例改编而来,删除了错误处理
#include "stdafx.h"
extern "C" {
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libavutil/opt.h>
#include <libavutil/channel_layout.h>
#include <libavutil/common.h>
#include <libavutil/imgutils.h>
#include <libavutil/mathematics.h>
#include <libavutil/samplefmt.h>
}
#pragma comment(lib, "avformat.lib")
#pragma comment(lib, "avutil.lib")
#pragma comment(lib, "avcodec.lib")
int main() {
avcodec_register_all();
av_register_all();
avformat_network_init();
AVCodecID codec_id = AV_CODEC_ID_H264;
AVCodec *codec;
AVCodecContext *c = NULL;
int i, ret, x, y, got_output;
AVFrame *frame;
AVPacket pkt;
codec = avcodec_find_encoder(codec_id);
c = avcodec_alloc_context3(codec);
c->bit_rate = 400000;
c->width = 352;
c->height = 288;
c->time_base.num = 1; …Run Code Online (Sandbox Code Playgroud)