标签: m3u8

如何解密AES-128加密的m3u8视频文件?

我试图解密AES-128加密的m3u8视频文件,例如:

m3u8文件:

#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:NO
#EXT-X-VERSION:2
#EXT-X-FAXS-CM:MII6lAYJKoZIhvcNAQcCoII6hTCCOoECAQExCzAJBgUrDgMCGgUAM... very long key...
#EXT-X-KEY:METHOD=AES-128,URI="faxs://faxs.adobe.com",IV=0X99b74007b6254e4bd1c6e03631cad15b
#EXT-X-TARGETDURATION:8
#EXTINF:8,
video.mp4Frag1Num0.ts
#EXTINF:8,
video.mp4Frag1Num1.ts
...
Run Code Online (Sandbox Code Playgroud)

我试过openssl:

openssl aes-128-cbc -d -kfile key.txt -iv 99b74007b6254e4bd1c6e03631cad15b -nosalt -in video_enc.ts -out video_dec.ts
Run Code Online (Sandbox Code Playgroud)

key.txt包含很长的键 - >

bad decrypt
1074529488:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ?

encryption openssl aes m3u8

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

如何通过GCDWebServer在iOS上播放本地M3u8文件

我正在尝试运行本地GCDWebServer来提供我从服务器本地存储的M3U8文件.我解析了文件并将每个.ts文件保存到本地存储.现在我正试图通过本地Web服务器提供该文件,但我无法使用MPMoviePlayerController或AVPlayerViewController来播放该文件.

这是我的服务器代码:

webServer = [[GCDWebServer alloc] init];

[webServer addDefaultHandlerForMethod:@"GET"
                         requestClass:[GCDWebServerRequest class]
                         processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {

                             NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                             NSString *docDirectory = [paths objectAtIndex:0];
                             NSString *textPath = [docDirectory stringByAppendingPathComponent:@"localPlaylist.m3u8"];
                             return [GCDWebServerDataResponse responseWithData:[NSData dataWithContentsOfFile:textPath] contentType:@".m3u8"];
                         }];

[webServer startWithPort:8080 bonjourName:nil];
Run Code Online (Sandbox Code Playgroud)

以及我随后尝试播放代码:

 AVPlayerViewController *newPlayer = [[AVPlayerViewController alloc] init];
newPlayer.player = [[AVPlayer alloc]initWithURL:webServer.serverURL];
[self presentViewController:newPlayer animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

我正在提供本地m3u8文件的方式有什么问题吗?此外,运行本地Web服务器是一种托管内容的安全方式吗?

mpmovieplayercontroller http-live-streaming ios avplayer m3u8

5
推荐指数
1
解决办法
1129
查看次数

video.js 的 m3u8 源错误:“未找到兼容的源和播放技术。”

我有一个 m3u8 源代码,我试图通过 video.js 播放器播放。当我尝试时,我看到黑屏,并且控制台日志显示消息““未找到兼容的源和播放技术。”这是 HTML:

<html>
  <head>
    <title>Test Player</title>
    <link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet"
type="test/css">
    <script src="http://vjs.zencdn.net/c/video.js"></script>
  </head>
  <body>
    <h3>Using m3u8 source</h3>
    <video id="example_video_1" class="video-js vjs-default-skin" controls
    autoplay width="640" height="360" data-setup="{}">
       <source
        src="http://184.72.239.149/vod/smil:BigBuckBunny.smil/playlist.m3u8"
        type="application/x-mpegURL" />
    </video>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

类型正确(即“application/x-mpegURL”),并且我没有看到任何 CORS 问题的迹象。我已经使用 Chrome 和 Firefox 浏览器进行了测试,结果相同。任何建议将不胜感激。

javascript video.js m3u8

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

AVPlayer HLS .m3u8 - 无法选择音频、字幕轨道

我有一个问题:我有 m3u8 文件格式,例如:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=490000,RESOLUTION=640x360
http://XXX.XXX.XX.XXX:31213/MEDIA/76336503.....583609776254/161/4161/
#EXT-X-STREAM-INF:BANDWIDTH=1500000,RESOLUTION=720x576
http://XXX.XXX.XX.XXX:31213/MEDIA/76336503.....583609776254/161/3161/
#EXT-X-STREAM-INF:BANDWIDTH=2500000,RESOLUTION=1280x720
http://XXX.XXX.XX.XXX:31213/MEDIA/76336503.....583609776254/161/2161/
Run Code Online (Sandbox Code Playgroud)

每个 EXT-X-STREAM-INF 标记都链接到文件,例如:

#EXTM3U
#EXT-X-TARGETDURATION:5
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:35156
#EXT-X-START:TIME-OFFSET=-25,PRECISE=YES
#EXT-X-KEY:METHOD=AES-128,URI="http://XXX.XXX.XX.XXX:02444/xxXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/191/2191/aeskey_191_
#EXTINF:5,
http://XXX.XXX.XX.XXX:XXXXX/SSEGMENT/3020314583628416652818934133893/191/2191/seg_XXXXX.ts
#EXTINF:5,
http://XXX.XXX.XX.XXX:XXXXX/SSEGMENT/6545456465456456465454564/191/2191/seg_191_XXXXX.ts
#EXTINF:5,
http://XXX.XXX.XX.XXX:XXXXX/SSEGMENT/6545456465456456465454564/191/2191/seg_191_XXXXX.ts
#EXTINF:5,
http://XXX.XXX.XX.XXX:XXXXX/SSEGMENT/6545456465456456465454564/191/2191/seg_191_XXXXX.ts
#EXTINF:5,
http://XXX.XXX.XX.XXX:XXXXX/SSEGMENT/6545456465456456465454564/191/2191/seg_191_XXXXX.ts
Run Code Online (Sandbox Code Playgroud)

音频和字幕嵌入在 TS 文件中。由于上述 *.m3u8 文件中的 #EXT 标记中未明确描述音频/字幕轨道,因此“mediaSelectionGroupForMediaCharacteristic”返回空选项集合。

相反,m3u8 文件:

https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8

Apple 提供的 HLS 播放列表示例,具有 #EXT 标签中描述的音频/字幕轨道:

#EXTM3U

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="bipbop_audio",LANGUAGE="eng",NAME="BipBop Audio 1",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="bipbop_audio",LANGUAGE="eng",NAME="BipBop Audio 2",AUTOSELECT=NO,DEFAULT=NO,URI="alternate_audio_aac_sinewave/prog_index.m3u8"


#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound",URI="subtitles/eng/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English (Forced)",DEFAULT=NO,AUTOSELECT=NO,FORCED=YES,LANGUAGE="en",URI="subtitles/eng_forced/prog_index.m3u8"
Run Code Online (Sandbox Code Playgroud)

这次“mediaSelectionGroupForMediaCharacteristic”返回一个集合,其中包含两个音频选项,我可以成功选择它们。

问题:如果 AVPlayer 没有在 *.m3u8 文件内的 #EXT 标记中描述,但嵌入在 *.ts 文件中,是否有办法让 AVPlayer 选择音频/字幕轨道?在此先感谢您,如有任何建议,我们将不胜感激!

audio http-live-streaming ios avplayer m3u8

5
推荐指数
0
解决办法
1315
查看次数

iOS 移动设备上不支持 HLS 视频

简单介绍一下背景故事,我正在使用 Raspberry Pi 构建一个婴儿监视器,并使用 Node.JS 编写一个 Web 前端。我有一些旧手机,我打算把它们留在家里,这样婴儿监视器就可以分散在各处。到目前为止,除了 iPhone 上的 HLS 视频组件之外,整个系统的大部分功能都可以正常工作。

HLS 视频部分可以在我的 Linux/Chromium 桌面和 Android/Chrome 手机上运行。我还可以让 HLS 视频在装有 Chrome 的 MacBook (10.13.3) 上运行。然而,我真正的问题是我无法让 HLS 视频在任何iOS 移动设备上运行,特别是 iOS 版本 10.3.3 和 11.2.5。

我在客户端使用 HLS.js 来设置videoHTML 元素。据我所知,移动设备上的 iOS 不支持媒体源扩展 (MSE),这可以解释为什么 HLS.js 无法在我的 iPhone 上运行。然而,移动设备上的“原生”HLS 支持似乎仍然不支持媒体文件的格式。

我正在使用此picam代码(来自 iizukanao)从 Pi 的相机创建 m3u8 播放列表和相应的 .ts 文件。我怀疑 m3u8 文件不具有移动 iOS 客户端所需的格式。我手动弄乱了 m3u8 文件,但没有看到任何积极效果。我运行 picam 模块:

./picam --hlsdir /run/shm/picam/hls --vflip --autoex --alsadev "hw:1,0" --vfr --avcprofile baseline --avclevel 3.1
Run Code Online (Sandbox Code Playgroud)

m3u8 …

android mse http-live-streaming ios m3u8

5
推荐指数
0
解决办法
1102
查看次数

使用ffmpeg在m3u8列表中选择下载分辨率

我正在尝试使用ffmpeg从m3u8播放列表中下载视频,但我不知道如何选择要下载的分辨率。当前命令正在下载最高版本

我正在使用的命令是:

/home/user/bin/ffmpeg -user_agent "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0" -i "https://sitevideo.com/list.m3u8" -c copy "/home/file/video.ts"
Run Code Online (Sandbox Code Playgroud)

我的清单是这个

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=400000,NAME="low"
size1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=800000,NAME="med"
size2.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1900000,NAME="best"
size3.m3u8
Run Code Online (Sandbox Code Playgroud)

ffmpeg m3u8

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

Android视频流mms和m3u8

我正在尝试在我的Android应用程序中播放来自mms和m3u8的一些视频流.似乎MediaPlayer对此没有支持,而且从我在FFMPEG上看到的内容看起来也没有任何简单的方法.我使用的是Android 2.1 SDK.关于我应该做什么的任何想法,以使这项工作?商店里有一些应用程序已经这样做,但我不知道如何.

streaming android mms m3u8

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

如何通过在浏览器中粘贴URL来创建动态m3u8?

我想在调用PHP脚本时创建动态m3u8.我不想将结果m3u8保存在服务器上,而是我想送到浏览器以便可下载.有谁能告诉我如何才能完成这项任务?

要调用的PHP脚本示例:

http://www.asite.com/makeM3u8.php?videoId=1234
Run Code Online (Sandbox Code Playgroud)

可下载的动态m3u8结构:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=900000
http://someserver/channelNameBandwith900000.m3u8?session=3495732948523984eriuwehiurweirew
Run Code Online (Sandbox Code Playgroud)

php m3u8

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

使用FFMPEG创建HLS变体

我开始使用高分辨率视频文件,我想为移动流媒体创建3种变体,低质量,中等质量和高质量.我希望将这些中/低/高变体分割成m3u8文件指向的ts片段.有没有办法在ffmpeg的一行中执行此操作?

我用ffmpeg成功生成了一个m3u8文件和ts段,我需要这样做3x并设置低/中/高的规格吗?如果是这样,我如何将单个m3u8文件指向所有变体而不是每个变体?

这是我用来生成m3u8文件以及ts段的命令.

ffmpeg -i C:\Users\george\Desktop\video\hos.mp4 -strict -2 -acodec aac -vcodec libx264 -crf 25 C:\Users\user\Desktop\video\hos_Phone.m3u8

ffmpeg http-live-streaming m3u8

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

如何使用 ffmpeg 将实时 m3u8 文件流式传输到 youtube rtmp

我想将实时 m3u8 文件重新流式传输到 youtube。我使用了以下代码

fmpeg -re -i <http://mypanel.tv:8080/live/****/slyv0955k9/14131.m3u8
> -c:v copy -c:a aac -ar 44100 -ab 128k -ac 2 -strict -2 -flags +global_header -bsf:a aac_adtstoasc -bufsize 3000k -f flv "<rtmp://live-dfw.twitch.tv/app/{live_231566994_FS4BN0qoJMeXEuWklm6j0l1ODQj9u6}>"
Run Code Online (Sandbox Code Playgroud)

我返回我从我的 linux 服务器得到这个

[root@server ~]# ffmpeg -re -i http://mypanel.tv:8080/live/****/slyv0955k9/14131.m3u8
 -c:v copy -c:a aac -ar 44100 -ab 128k -ac 2 -strict -2 -flags +global_header -bsf:a aac_adtstoasc -bufsize 3000k -f flv "<rtmp://live-dfw.twitch.tv/app/{live_23156556994_FS4BN0qoJMeXEuWklm6j0l1ODQj9u6}>"ffmpeg version 2.6.8 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4)
  configuration: --prefix=/usr --bindir=/usr/bin …
Run Code Online (Sandbox Code Playgroud)

ffmpeg m3u http-live-streaming m3u8 youtube-livestreaming-api

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