我们有一个提供商,为HLS流提供m3u8文件(最初用于iOS应用程序).
Android 3.0+支持http直播(http://developer.android.com/guide/appendix/media-formats.html) - 我们实际上可以使用Android 3.0+上的标准VideoView播放这些m3u8文件.
编辑:Android似乎将此视为"实时"视频Feed,并禁用查找或计算视频时长的功能.(在iOS中,你可以在流中搜索而没有问题)
有没有办法迫使android 3.0+在这些文件中寻找?
以下是其他人要测试的示例活动:
import android.app.Activity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class SandboxActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
VideoView vw = (VideoView) findViewById(R.id.videoView);
vw.setVideoPath("http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8");
vw.setMediaController(new MediaController(this));
vw.requestFocus();
vw.start();
}
}
Run Code Online (Sandbox Code Playgroud)
和样本布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" android:id="@+id/root">
<VideoView
android:id="@+id/videoView"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这是使用Apple的示例HLS链接.
我有问题将我的网络摄像头图片(没有声音)流式传输到HTML页面.我正在使用最新的(v2.0.2 vlc for windows)进行流式传输,这是命令行:
"c:\Program Files (x86)\VideoLAN\VLC\vlc.exe" -I dummy dshow:// --dshow-vdev="Logitech QuickCam Chat" --dshow-adev=none --dshow-caching=0 --sout=#transcode{vcodec=h264,vb=1024,channels=1,ab=128,samplerate=44100,width=320}:http{mux=ts,dst=:8080/webcam.mp4}
Run Code Online (Sandbox Code Playgroud)
当我在另一个vlc播放器(http://127.0.0.1:8080/webcam.mp4)中打开流时,我可以观看流,但是当我尝试将其嵌入网页时,我什么都看不见!这是代码:
<!DOCTYPE html>
<html>
<head>
<title>Video Test</title>
</head>
<body>
<video id="video" class="projekktor" autoplay="autoplay" width="300px" preload="metadata">
<source src="http://127.0.0.1:8080/webcam.mp4" />
Your browser doesn't appear to support the HTML5 <code><video></code> element.
</video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
比我试图在浏览器中打开它:
file:///C:/videostreaming/video.html
Run Code Online (Sandbox Code Playgroud)
我在chrome示例中看到的是,有网络流量,流正在下载,但没有显示.
我试图了解Apple在其iOS设备和Safari上支持的HTTP Live Streaming协议如何保护解锁内容的密钥.
我理解它的方式,.m3u8文件将整个事物保持在一起并引用内容(在MPEG2 TS容器中,AES 128加密)和TS文件的密钥.
就像在这个例子中:
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"
#EXTINF:15,
http://media.example.com/fileSequence52-1.ts
#EXTINF:15,
http://media.example.com/fileSequence52-2.ts
#EXTINF:15,
http://media.example.com/fileSequence52-3.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53"
#EXTINF:15,
http://media.example.com/fileSequence53-1.ts
Run Code Online (Sandbox Code Playgroud)
假设基于浏览器的回放,其中<video>元素被送入"src"属性中的m3u8文件.在这种情况下,即使密钥是通过https发送的,如何确保用户不只是在浏览器中输入https URL并将密钥保存到他的硬盘中?我理解这种机制的方式是,密钥下载是由<video>标签在使用浏览器的https堆栈播放m3u8源时完成的 - 浏览器中的合法客户端如何区分用户只需将其输入地址栏即可?这一定是非常明显的,但我只是看不到它......
祝一切顺利,
dansch
我正在使用wkhtmltopdf和wkhtmltoimage来生成我的预览图像和文档的pdf.唯一的问题是,我需要列支持.让它与Javascript一起工作变得非常耗时,真的让我无处可去.
是否有针对支持CSS3的QT版本构建的构建下载?我似乎在找到这个版本时遇到了问题.
我有一个使用远程服务的Android应用程序,我绑定它bindService(),这是异步的.
在绑定服务之前,应用程序是无用的,所以我想在任何Activity启动之前等待绑定完成.有没有办法让服务绑定之前onCreate()或被onResume()调用?我认为可能有办法进行绑定Application.有任何想法吗?
编辑:
如果在onCreate()我这样做.
bindService(service, mWebServiceConnection, BIND_AUTO_CREATE);
synchronized (mLock) { mLock.wait(40000); }
Run Code Online (Sandbox Code Playgroud)
ServiceConnection.onServiceConnected不会被调用40秒.很明显,如果我想要服务绑定,我必须让onCreate()返回.
所以似乎没有办法做我想要的.
编辑2: Android我如何等待服务实际连接?对绑定服务时Android中发生的事情有一些很好的评论.
我正在尝试从2.1开发支持HLS(http直播)的自己的视频播放器.
我尝试过vitamio,但它要求我们安装大约3.2 MB的vitamio插件.所以我试图开发自己的视频播放器.
我一直在搜索android源代码,以检查3.0版以来如何支持m3u8文件格式,但到目前为止一直没有成功.
如果有人指出我正确的方向会很有帮助.我需要检查哪些课程?
Apple已在iPhone OS 3.0中包含HTTP Adaptive Bitrate Streaming,特别是Safari会自动处理此问题.
我想以低成本的方式使用它,但我希望在最坏的情况下它需要一个自定义HTTP服务器,并且在最好的情况下需要有趣的PHP/etc脚本.
但首先我需要知道协议的差异或标准是什么.HTTP作为协议相当简单,但自适应比特率意味着文件大小不同,块位置在不同比特率下不同等.例如,客户端是否在下载时告诉服务器有关流的任何特殊信息,或者是所有在服务器端处理?
消除最终用户的缓冲暂停对于实时和预先录制的视频流都非常有吸引力,并且由于许多网络和政府限制非端口80流量,因此通过HTTP进行这两种操作甚至更好.
这是最好的实现 - HTTP服务器本身的一部分,一个mod的一部分,在脚本中......?
如果要在应用程序中实现这一点,客户端需要进行哪些更改?
借助Flash 10.1+以及在NetStream上使用appendBytes的功能,可以在Flash中使用HTTP流进行视频传输.但似乎交付方法要求将段存储在磁盘上的单个文件中,该文件只能通过FMS或Apache模块分解为离散的段文件.您可以在创建单个段文件后对其进行缓存,但文档表明您仍必须始终使用FMS/Apache模块在第一个实例中生成这些文件.
是否可以在不使用FMS,Wowza产品或Apache的情况下将单个磁盘文件分成多个磁盘段?
我在"Android手机的Chrome浏览器"中播放视频时遇到了问题.
我正在放置HTML5视频标签并提供m3u8文件的链接作为视频标签的来源.但它并没有在"Android的Chrome浏览器"中播放.
但是,如果我提供相同的m3u8文件链接到浏览器,而不是在Android的视频播放器中播放视频.
那么在HTML5视频标签中播放视频该怎么办?
注意:我已经使用Android 4.0.3和4.1进行了检查
提前感谢,
Sagar Joshi
从Flash 10.1开始,他们添加了通过appendBytes方法将字节添加到NetStream对象的功能(在此处描述http://www.bytearray.org/?p=1689).这一新增的主要原因是Adobe最终支持视频的HTTP流媒体.这很棒,但您似乎需要使用Adobe Media Streaming Server(http://www.adobe.com/products/httpdynamicstreaming/)从现有视频中创建正确的视频块,以实现流畅的流式传输.
我曾经试图在我交换NetStream对象的过程中做一个被黑客攻击的HTTP流媒体版本(类似于http://video.leizhu.com/video.html),但是这些块之间总会暂时停顿一下.使用新的appendBytes,我尝试使用前一个站点的两段视频进行快速模拟,但即便如此,跳过仍然存在.
有没有人知道如何形成两个连续的.FLV文件,以便NetStream对象上的appendBytes方法创建一个漂亮的平滑视频,而段之间没有明显的跳过?
HTTP Live Streaming格式支持可变比特率,m3u8文件中对此进行了描述.
是否有可能获得当前正在播放的流的比特率?
iphone objective-c mpmovieplayercontroller http-live-streaming ios
我希望有一个比MongoDB的ObjectID更友好的面向ids(即Youtube样式:/ posts/cxB6Ey6).
我读到为了可伸缩性,最好将_id留作ObjectID,所以我想到了两个解决方案:
1)为每个文档添加一个索引的postid字段
2)在_id和postid之间创建一个映射集合
在这两种情况下都使用类似https://github.com/dylang/shortid的内容来生成短ID,并在生成时通过查询数据库确保id是唯一的.(这个query-generate-insert可以是一个原子操作吗?)
这些解决方案会对性能产生显着影响吗?
这样做的最佳策略是什么?
android ×4
actionscript ×2
html5-video ×2
http ×2
ios ×2
iphone ×2
netstream ×2
flash ×1
mongodb ×1
objective-c ×1
qt ×1
safari ×1
streaming ×1
video ×1
vlc ×1
wkhtmltopdf ×1