标签: http-live-streaming

如何在所有PC浏览器中播放m3u8播放列表?

默认情况下,m3u8文件可以在Mac Safari浏览器中播放,但不能在任何其他桌面浏览器中播放.在所有浏览器中都需要做些什么来支持HTML5和非HTML5?

http-live-streaming

27
推荐指数
3
解决办法
7万
查看次数

用ffmpeg转码和分段

看来ffmpeg现在有一个分段器,或者至少有一个命令行选项

-f段

在文档中.

这是否意味着我可以使用ffmpeg实时将视频转码为h.264并使用ffmpeg单独提供分段的IOS兼容.m3u8流?如果是这样,将任意视频文件转码为分段的h.264 aac 640 x 480流ios兼容流的命令是什么?

ffmpeg http-live-streaming

26
推荐指数
2
解决办法
5万
查看次数

Android 3.0上的HLS(http直播)和寻求

我们有一个提供商,为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链接.

android http-live-streaming android-3.0-honeycomb

25
推荐指数
2
解决办法
1万
查看次数

在android中播放m3u8视频

我想直播视频,它是m3u8格式.所以我尝试了下面的代码

public class StreamingPlayer extends Activity implements
OnBufferingUpdateListener, OnCompletionListener,
OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback{

    private static final String TAG = StreamingPlayer.class.getSimpleName();
    private int mVideoWidth;
    private int mVideoHeight;
    private MediaPlayer mMediaPlayer;
    private SurfaceView mPreview;
    private SurfaceHolder holder;
    private String path;

    private boolean mIsVideoSizeKnown = false;
    private boolean mIsVideoReadyToBePlayed = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mediaplayer_2);
        mPreview = (SurfaceView) findViewById(R.id.surface);
        holder = mPreview.getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    private void playVideo() {
        doCleanUp();
        try {

            /*
             * TODO: …
Run Code Online (Sandbox Code Playgroud)

android http-live-streaming

24
推荐指数
2
解决办法
6万
查看次数

iPhone HE-AAC流媒体直播(3G)

使用jPlayer开发了一个互联网广播流媒体,它使用带有jQuery的html5音频标签,并为不支持的浏览器提供闪回功能.在iPhone(iOS 5.0.1)上测试播放器后,我们遇到了一个非常特殊的问题.

当iPhone连接到WiFi时,它使用HE-AAC V2流@ 64kbps 44.1kHz(苹果产品的首选编解码器)完美地流式传输.然而,当iPhone连接到3G移动网络时,它会"断续续续"或每1-2分钟停止流动1-2秒(不会完全停止流式传输).令人不安的是,当iPhone被迫以相同的比特率使用单独的MP3流时,它没有这个问题并且在3G上运行良好.

更新5

我们最近购买了3G/4G Sprint移动热点设备,并使用该设备测试了这个问题.当iPhone连接到移动热点时,它显示为连接到wifi设备,即使实际连接是通过3G/4G,也不会出现问题.这可能会回到iPhone不通过HTTP直播和直接连接到移动网络处理HE-AAC的问题.

更新4

将iPhone更新到iOS 5.1但问题仍然存在.

更新3

请阅读此处有关连接到移动网络时脚本无法正确呈现的各种问题.手指似乎指向可能插入代理以服务网页的移动网络运营商,例如用于缩小图像尺寸.它也可能会注入一些JavaScript页面.测试页面可以在这里找到 注意:此页面使用HE-AAC,因此它只适用于iPhone ...

UPDATE

根据Apple针对iOS设备的HTTP Live Streaming doc,"仅音频内容可以是MPEG-2传输,也可以是MPEG基本音频流,无论是采用ADTS标头的AAC格式还是MP3格式." 我们的音乐服务器使用OddcastV3编码器向icecastV2服务器发送三个流(MP3,HE-AAC V2和Oggvorbis).不确定编码器是否正在插入HE-AAC V2流的ADTS标头.有没有办法检查这个?

iphone mp3 mobile-safari http-live-streaming icecast

23
推荐指数
1
解决办法
2405
查看次数

HLS'EVENT'播放列表未能在播放器中启动

我有HLS播放列表,如下所示:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.97667,
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence0.ts
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence1.ts
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence2.ts
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence3.ts
Run Code Online (Sandbox Code Playgroud)

它们是EVENT类型的,意思是,当块变得可用时附加块,并且当所有块都存在时,#EXT-X-ENDLIST在末尾附加标记.

因此,当上传所有块时,我们最终得到一个类似于以下内容的播放列表:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence0.ts
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence1.ts
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence2.ts
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence3.ts
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence4.ts
#EXTINF:9.97667,  
https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/fileSequence5.ts
#EXT-X-ENDLIST
Run Code Online (Sandbox Code Playgroud)

我们在所有客户中都看到了奇怪的行为.如果您在iOS和Safari中打开m3u8播放列表,则在上传第一个块(或者甚至是3个块之后)时,播放器将开始播放视频.偶尔它会停止,但无法恢复.通常情况下,它甚至不会开始播放.

完全形成的播放列表(即带有#EXT-X-ENDLIST标签)完美播放.就在播放列表部分完成时.

我们尝试了各种各样的播放器:Quicktime,Safari,iOS,VLC,Flowplayer等.所有这些都有各种各样的问题,但这是最紧迫的.

任何洞察解决这个问题的方法都将非常感激.

编辑:我们尝试过HLS.js并且播放完美.这样一个不错的用户体验

编辑2:为了重现,我建议使用某种本地HTTP服务器(我使用python -m SimpleHTTPServer上面提供的播放列表.然后逐字地将文件附加到播放列表以模拟文件的上传,并观察播放器中断.

编辑3:好的,我已经构建了一个简单的测试工具来观察行为.https://github.com/dbousamra/m3u8-example运行node app.js然后open http://localhost:3001/playlist.m3u8在Safari或任何你想要的播放器中尝试.它应该可以播放,因为它是一个完整的播放列表.**

但是,如果添加一个查询参数?start=<some unix timestamp>,它将模拟事件的追加,每6秒一个块,从该时间戳开始,直到完成所有块,此时它将追加#EXT-X-ENDLIST一行.

示例网址: http://localhost:3001/playlist.m3u8?start=1460092250872

编辑5:我现在已经在Heroku上了解它:http://guarded-mesa-71212.herokuapp.com/playlist.m3u8?start =

video-streaming http-live-streaming ios

23
推荐指数
2
解决办法
2016
查看次数

Adobe HDS的单独段和加密步骤

Adobe HTTP Dynamic Streaming(HDS)的File Packager支持使用一个命令对视频文件进行分段和加密.

但是,我们有工作流需求,在加密这些文件之前,我们会对分段文件执行其他处理步骤.

使用HLS(HTTP实时流),这很容易做到,因为加密步骤使用AES-128加密,这是一种开放且广泛实施的加密方式.

这可能与HDS有关吗?基于对页面的简要阅读,它似乎不可能,但可能有其他知识证明我错了.

flash adobe http-live-streaming

22
推荐指数
1
解决办法
618
查看次数

HTML5视频:如何测试HLS播放功能?(video.canPlayType)

我有通过HLS传送的视频.现在我想在JavaScript中测试该设备是否真的可以在HTML5中播放HLS视频.

通常在Javascript中我做了类似的事情 document.createElement('video').canPlayType('video/mp4') 然而我无法弄清楚哪种'类型'是正确的HLS.

Apple的Safari HTML5音频和视频指南似乎建议使用"vnd.apple.mpegURL"("清单1-7回归到IE的插件")

<video controls>
    <source src="HttpLiveStream.m3u8" type="vnd.apple.mpegURL">
    <source src="ProgressiveDowload.mp4" type="video/mp4">
....
Run Code Online (Sandbox Code Playgroud)

canPlayType("vnd.apple.mpegURL")即使在iOS设备上也能返回一个空字符串,它可以完美地播放实际的HLS流.

有没有办法检查没有"外部知识"的播放功能(例如"检查iOS用户代理并假设它可以播放hls")?

我知道我可以在元素中指定多个源,浏览器将使用第一个可播放的源.但是在我的情况下,我需要向JW Player提供一个我无法修改的URL.所以我需要从一组视频编码中找到"最佳可播放URL".(处理源选择的开源JS库虽然是一个很好的解决方法.)

javascript html5 http-live-streaming

21
推荐指数
1
解决办法
2万
查看次数

将HLS(m3u8)转换为MP4

任何人都可以建议如何MP4HLS流构建文件(与您通常想要的相反)?说我有m3u8 - 是否有一种直接的方式来获得一个MP4使用FFMPEG或其他工具?

video mp4 ffmpeg transcoding http-live-streaming

20
推荐指数
1
解决办法
3万
查看次数

如何在ffmpeg中更改关键帧间隔

我想将输入视频的关键帧间隔设置为5秒.只有这样我才能使用FFmpeg实现恒定的5秒HLS分割.如何使用FFmpeg将关键帧间隔设置为5秒?(FFmpeg提示行代码赞赏)

ffmpeg video-streaming keyframe segment http-live-streaming

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