AWS Elemental MediaConvert 支援 AV1
在「2020/03/17 – AWS Elemental MediaConvert – 11 updated api methods」這邊看到的:
AWS Elemental MediaConvert SDK has added support for: AV1 encoding in File Group MP4, DASH and CMAF DASH outputs; PCM/WAV audio output in MPEG2-TS containers; and Opus audio in Webm inputs.
翻了一下同個站台的總表「AWS Elemental MediaConvert」這頁,看起來是第一次支援 AV1 輸出,這對於很在意頻寬的應用方便不少,另外翻了一下 Can I Use 這邊的資料「AV1 video format」,看起來也已經有不少環境可以用 AV1…
View On WordPress
0 notes
【Android APP】Total Media Player Pro 影音播放軟體
這是一款影片播放軟體,具備記錄、字幕搜索、縮放、投射影到CHROMECAST或DLNA設備的功能。
支援的聲音檔、影片檔格式:MP4,MKV,M4V,MOV,FLV,AVI,RMVB,RM,TS,TP,torrent,ace live,WebM,MPG,M3U8,M3U,MP2,WAV,MP3,AAC,VOB…等。
支援的影片音檔協議:http, https, mms, rtsp, sopcast, podcast, hls (m3u8), ace stream, rtmp, rtmpe, sop, ftp, iptv…等。
(more…)
View On WordPress
0 notes
使用 nginx 和 rtmp 插件搭建视频直播和点播服务器
使用 nginx 和 rtmp 模块 ,可以很容易地搭建一个视频直播和点播服务器出来。
首先,看一下最经典的参考文献: How to set up your own private RTMP server using nginx
1. 安装 nginx 和 rtmp 模块
有关 nginx 的编译和安装比较简单,这里就不介绍了,看参考文献。这里提示以下几点:
(1) 安装好 nginx 后,配置文件在这里:
/usr/local/nginx/conf/nginx.conf
(2) 启动 nginx 的命令:
$ sudo /usr/local/nginx/sbin/nginx -s stop
$ sudo /usr/local/nginx/sbin/nginx
2. 配置 nginx 视频直播和点播服务
先看一下完整的 nginx 配置文件里有关视频点播和直播的配置:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
application live2 {
live on;
record off;
}
# video on demand
application vod {
play /var/flvs;
}
application vod_http {
play http://192.168.31.185/vod;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
# HTTP can be used for accessing RTMP stats
http {
server {
listen 8080;
# This URL provides RTMP statistics in XML
location /stat {
rtmp_stat all;
# Use this stylesheet to view XML as web page
# in browser
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
# XML stylesheet to view RTMP stats.
# Copy stat.xsl wherever you want
# and put the full directory path here
root /path/to/stat.xsl/;
}
location /hls {
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
location /dash {
# Serve DASH fragments
root /tmp;
add_header Cache-Control no-cache;
}
}
}
现在来解释一下里面各行代码的含义。对于视频直播服务,如果需要支持多路流输入的话,很简单,在 nginx 配置文件里多配几个 Application 就只可以了,像下面这样:
application live {
live on;
record off;
}
application live2 {
live on;
record off;
}
这样就可以通过下面的地址来推送直播流,其它观众端也可以通过下面的地址来访问直播流:
rtmp://192.168.31.185/live/test
rtmp://192.168.31.185/live2/test
后面紧跟的 test 关键字,可以随便更换,只要你的推送流和访问流的地址一样就可以了。
rtmp 模块也可以直接支持 VOD 这种视频点播服务 ,只需要在配置文件里添加如下内容即可:
# video on demand
application vod {
play /var/flvs;
}
application vod_http {
play http://myserver.com/vod;
}
然后把一个 mp4 或是 flv 文件扔到 /var/flvs 目录下,对于 /var/flvs/dir/file.flv 这个视频文件,就可以通过下面的网址来访问了:
http://myserver.com/vod//dir/file.flv
这样直接在浏览器里就可以通过网页观看视频。对于 mp4 文件,也可以实现 VOD 服务,不过需要的是采用 H.264 和 AAC 格式编码的 mp4 文件。
3. HLS 直播流的配置
如果需要使用 HLS 来视频直播,可以直接像配置文件那样,写上下面这一段:
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
同时把后面有关 http 访问的内容写上:
# HTTP can be used for accessing RTMP stats
http {
server {
listen 8080;
# This URL provides RTMP statistics in XML
location /stat {
rtmp_stat all;
# Use this stylesheet to view XML as web page
# in browser
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
# XML stylesheet to view RTMP stats.
# Copy stat.xsl wherever you want
# and put the full directory path here
root /path/to/stat.xsl/;
}
location /hls {
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
location /dash {
# Serve DASH fragments
root /tmp;
add_header Cache-Control no-cache;
}
}
}
配好以后,推流可以使用下面的地址:
rtmp://192.168.31.185/hls/movie
movie 关键字可以任何替换。对于观众端来说,可以有几种播放方式:
(1) 用 rtmp:
rtmp://192.168.31.185/hls/movie
(2) 用 hls 播放:
http://192.168.31.185:8080/hls/movie.m3u8
这样就可以看到主播端推出来的流。注意,如果使用 http 方式,则是监听的 8080 端口,这个是在配置文件里写的。
4. 网页播放器插件
在第二步里,除了可以直接在浏览器里打开网址来观看视频,还可以写一个网页,实现像优酷那样的视频点播业务。通过使用第三方的播放器,在网页里植入该播放器来实现这个功能,比如说使用 JWPlayer 播放器。
下载 JWPlayer 播放器,放到 nginx 网页服务的根目录,比如说,在我这儿是 /usr/local/nginx/html 这个目录,把 JWPlayer 解压后放到这个目录里,然后在这个目录里新建一个 play.html 的文本文件,再写入以下内容:
<html>
<head>
<script src="/jwplayer/jwplayer.js"></script>
</head>
<body>
<div id='my-video'></div>
<script type='text/javascript'>
jwplayer('my-video').setup({
file:'http://192.168.31.185/vod/North.mp4',
fallback:'false'
});
</script>
</body>
</html>
对于 flv 文件,可以采用如下的形式来实现网页播放:
<html>
<head>
<script src="/jwplayer/jwplayer.js"></script>
</head>
<body>
<div id='my-video'></div>
<script type='text/javascript'>
jwplayer('my-video').setup({
file:'http://192.168.31.185/vod/1.flv',
width:'50%',
aspectratio:'3:2',
fallback:'false',
primary:'flash'
});
</script>
</body>
</html>
这样,当你打开 http://192.168.31.185/play.html 这个网页时,就能看到 html 里指定的视频文件。
另外,如果有一些 flv 文件没有办法拖动播放,那是因为没有给 flv 文件添加“关键帧”,可以用工具“yamdi” 和“flvtool”来给 flv 生成关键帧,以 yamdi 为例,下载解压后从 shell 执行:
yamdi –i src.flv –o dst.flv
意思是将 src.flv 添加关键帧,并输出为 dst.flv 。这样 flv 就有关键帧了,即可进行拖动播放操作。
0 notes
blob video files
呢年很流行使用blob來作為串流媒體,而不使用單一巨大的.mp4檔案
以twitter為例子,blob其實是一張playlist內含一連串.ts而已
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:4
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/0/3000/318x180/twnXvTb3bsUxv4Md.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/3000/6000/318x180/4t16Vwl0J-Ja8vyM.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/6000/9000/318x180/Yc9hg6P4mlxyHHXL.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/9000/12000/318x180/iuUQ0uMMwz-zIOCz.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/12000/15000/318x180/RbvLENEdBfWIthkX.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/15000/18000/318x180/sTtX-lyi_mbbM-09.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/18000/21000/318x180/8HIWPYgomuOootFK.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/21000/24000/318x180/kGQBN0LRWJoo4meP.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/24000/27000/318x180/PSzSf9w5PONnL4k6.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/27000/30000/318x180/z-IOO8srPtBsmv03.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/30000/33000/318x180/f-xv3o3Um_Z-MBjn.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/33000/36000/318x180/DpUHr8-RGLH2Su-4.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/36000/39000/318x180/eBHqq0I0PUIGK5I8.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/39000/42000/318x180/Ee1smcept6bKJFYl.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/42000/45000/318x180/k-_0O1jJ-HpASnx7.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/45000/48000/318x180/6N0dkYhOaDmC54NV.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/48000/51000/318x180/kgnHq0AEK3icV0MO.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/51000/54000/318x180/TO-aYWXXuKu_-oJi.ts
#EXTINF:3.000,
/ext_tw_video/839582414632427520/pu/vid/54000/57000/318x180/7I-Fe99hGqHVKPn5.ts
#EXTINF:3.042,
/ext_tw_video/839582414632427520/pu/vid/57000/60042/318x180/pTQwWRaKaGLWHNEy.ts
#EXT-X-ENDLIST
流程
先使用Embed This Video功能
在embed狀態下(iframe)inspect elements
找到<div id="playerContainer"
抄下並取代" with " and \/ with /
獲得video_url
下載並爆開,獲得一後綴relative檔
再下載並爆
0 notes