标签: streaming

如何用C#编写超高速文件流代码?

我必须将一个巨大的文件拆分成许多较小的文件.每个目标文件由偏移量和长度定义为字节数.我正在使用以下代码:

private void copy(string srcFile, string dstFile, int offset, int length)
{
    BinaryReader reader = new BinaryReader(File.OpenRead(srcFile));
    reader.BaseStream.Seek(offset, SeekOrigin.Begin);
    byte[] buffer = reader.ReadBytes(length);

    BinaryWriter writer = new BinaryWriter(File.OpenWrite(dstFile));
    writer.Write(buffer);
}
Run Code Online (Sandbox Code Playgroud)

考虑到我必须将此功能调用大约100,000次,因此速度非常慢.

  1. 有没有办法让Writer直接连接到Reader?(也就是说,实际上没有将内容加载到内存中的Buffer中.)

c# cpu streaming performance utilization

39
推荐指数
3
解决办法
9万
查看次数

使用HTML视频标记播放m3u8文件

我正在尝试使用HTTP直播流(HLS)将视频流式传输到我的计算机和iPhone.在阅读了Apple的"HTTP直播流媒体概述"以及"为iPhone和iPad创建和部署HTTP直播流媒体的最佳实践"后,我有点陷入困境.

我拿了我的源文件(mkv)并使用ffmpeg对MPEG-TS格式和Apple推荐的设置以及Baseline 3.0配置文件进行编码:

ffmpeg -i "example.mkv" -f mpegts -threads:v 4 -sws_flags bicubic -vf "scale=640:352,setdar=16/9,ass=sub.ass" -codec:v libx264 -r 29.970 -b:v 1200k -profile:v baseline -level:v 3.0 -movflags faststart -coder 1 -flags +loop -cmp chroma -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method hex -subq 6 -me_range 16 -g 239 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -direct-pred 1 -fast-pskip 1 -af "aresample=48000" -codec:a libvo_aacenc -b:a 96k -ac 2  -y "output.ts"
Run Code Online (Sandbox Code Playgroud)

不用担心.我使用预编译的分段工具来分割视频并构建.m3u8播放列表.结果文件如下所示:

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:10,
http://localhost/media/stream/stream-1.ts
#EXTINF:10, …
Run Code Online (Sandbox Code Playgroud)

html streaming http-live-streaming html5-video m3u8

39
推荐指数
6
解决办法
16万
查看次数

如何从AVPlayer获取持续时间(不是AVAudioPlayer)?

我想为我的AVPlayer制作一个UISlider(擦洗器).但由于这不是AVAudioPlayer,因此它没有内置持续时间.有关如何创建滑块以快进,快退和播放进度的任何建议?

我在AVPlayer上阅读了doc,它有一个内置的seekToTime或seekToTime:toleranceBefore:toleranceAfter:.我真的不明白.这是我滑块的答案吗?AVPlayer还有addPeriodicTimeObserverForInterval:queue:usingBlock:,这是用于获取我的音轨的持续时间吗?有人能举例说明如何实现这段代码吗?我不是Apple的文档的粉丝.这似乎很难理解.

iphone streaming xcode objective-c

38
推荐指数
5
解决办法
3万
查看次数

结合了ProgressView的UISlider

是否有苹果屋制作的方式来获得带有ProgressView的UISlider.这被许多流应用程序使用,例如本机quicktimeplayer或youtube.(只是为了确定:我只对可视化感兴趣)

滑块与装载机

西蒙欢呼

streaming objective-c uiprogressview uislider ios4

37
推荐指数
3
解决办法
2万
查看次数

将视频输入流转换为RTMP

我想将视频录制从我的Android手机流式传输到网络媒体服务器.

第一个问题是,当将MediaRecorder输出设置为套接字时,流会丢失一些mdat大小的标头.这可以通过在本地预处理该流并将丢失的数据添加到流中以便生成有效的输出流来解决.

问题是如何从那里开始.

如何将该流作为RTMP流输出?

video streaming android rtmp rtp

36
推荐指数
1
解决办法
4万
查看次数

在Android应用程序中播放RTSP流媒体

我正在尝试开发一个基于Android的应用程序,它可以从实时流播放视频.此直播流使用Wowza Media Server生成.

URL是:

rtsp://tv.hindiworldtv.com:1935/live/getpun
Run Code Online (Sandbox Code Playgroud)

我试过在ecliplse中使用以下代码:

package com.kalloh.wpa;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.widget.MediaController;
import android.widget.VideoView;


public class a extends Activity {

    VideoView videoView;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        //Create a VideoView widget in the layout file
        //use setContentView method to set content of the activity to the layout file which contains videoView
        this.setContentView(R.layout.videoplayer);

        videoView = (VideoView)this.findViewById(R.id.videoView);

        //add controls to a MediaPlayer like play, pause.
        MediaController mc = new …
Run Code Online (Sandbox Code Playgroud)

streaming android live rtsp wowza

36
推荐指数
3
解决办法
9万
查看次数

我们如何使用ffmpeg将实时rtmp流转码为实时hls流?

我正在尝试将实时rtmp流转换为hls流实时.

读完后我有点想法

http://sonnati.wordpress.com/2011/08/30/ffmpeg-%E2%80%93-the-swiss-army-knife-of-internet-streaming-%E2%80%93-part-iv/

我能够将实时rtmp流转换为hls但不能在运行时转换.当我运行命令并测试任何hsl文件(.m3u8和.ts)时,我无法看到,但是当我中断命令并检查那里时,我根据需要获取了hls文件.

我在谷歌搜索解决方案,但无法得到正确的答案.

有谁能够帮我?

提前致谢...

streaming ffmpeg

35
推荐指数
2
解决办法
7万
查看次数

在ASP.NET中流式传输文件的最佳方式

使用ASP.NET流式传输文件的最佳方法是什么?

似乎有各种方法,我目前在http处理程序中使用Response.TransmitFile()方法,该方法直接将文件发送到浏览器.这用于各种事情,包括从Webroot外部发送FLV到嵌入式Flash视频播放器.

但是,这似乎不是一种可靠的方法.特别是,Internet Explorer(7)存在一个奇怪的问题,浏览器只是在观看一两个视频后挂起.单击任何链接等都没有任何效果,并且在网站上重新运行工作的唯一方法是关闭浏览器并重新打开它.

这在其他浏览器中也会发生,但更不频繁.基于一些基本的测试,我怀疑这与文件流的方式有关...也许连接没有正确关闭,或者沿着这些线路.

在尝试了几个不同的东西后,我发现以下方法对我有用:

Response.WriteFile(path);
Response.Flush();
Response.Close();
Response.End();
Run Code Online (Sandbox Code Playgroud)

这解决了上述问题,查看视频不再导致Internet Explorer挂起.

但是,我的理解是Response.WriteFile()首先将文件加载到内存中,并且假设流式传输的某些文件可能非常大,这似乎不是一个理想的解决方案.

我很想知道其他开发人员如何在ASP.NET中传输大文件,特别是流式传输FLV视频文件.

asp.net flash streaming video-streaming

34
推荐指数
3
解决办法
5万
查看次数

通过MP4直播

我正在从事在线电视服务.其中一个目标是在没有任何其他浏览器插件的情况下播放视频(Flash除外).

我决定使用MP4,因为大多数HTML5浏览器和Flash支持它(用于后备).视频由FFMpeg在服务器上从ASF转码.

但是,我发现MP4不能实时流式传输,因为它有一个moov原子用于必须指定长度的元数据.FFMpeg无法直接将mp4流式传输到stdout,因为它将moov放在文件的末尾.(MP4的实时转码和流式传输在Android中有效,但在Flash Player中无法使用NetStream.Play.FileStructureInvalid错误)

当然,MPEG-TS存在,但HTML5不支持<video>.

我想到的是一种将流实时转码为MP4的方法,并且在每个新的HTTP请求中,首先发送一个指定视频长度非常长的数字的moov,然后开始发送其余的MP4文件.

是否可以使用MP4进行流式传输?

经过一些研究和av501的回答,我知道框架的尺寸必须是已知的,以便它可以工作.

mp4文件可以分割成更小的部分,以便可以流式传输吗?

当然,切换到另一个容器/格式是一个选项,但唯一兼容Flash和HTML5的格式是mp4/h264,所以如果我必须支持两者,我必须转码两次.

streaming mp4 mpeg h.264 mpeg-4

34
推荐指数
2
解决办法
4万
查看次数

使用PHP实时视频流

我有一个PHP/AJAX/MYSQL聊天应用程序.我想在我的应用程序中添加视频聊天功能.如何创建实时视频流以用于PHP应用程序中的实时视频会议/聊天.如果我想建立这样一个系统,我需要知道的关键术语是什么?首先使用PHP是一个好主意吗?有没有我没想过的东西?我可以使用哪些其他语言,也许与PHP结合使用?

php video streaming

33
推荐指数
4
解决办法
13万
查看次数