当前位置: 首页 > 工具软件 > baidupan > 使用案例 >

file:///c:/video1/?68-0-0.html,kenhy/baidupan-video - 木兰确实

张子墨
2023-12-01

说明

百度网盘会屏蔽某些敏感的视频, 加密上传可以避免被屏蔽, 但是无法在线播放;

m3u8(hls协议)可以播放加密的视频;

两者结合一下或许有点意思...

本程序是一个测试的演示程序.

启动程序

python版本: 3.7

使用的包:

Flask: web框架

bypy: 百度网盘Python客户端

安装依赖:

pip install -r requirements.txt

给bypy授权:

bypy info

然后跟着提示操作;

启动web:

flask run --host=0.0.0.0 --port=5000

生成.m3u8文件和加密ts分片

新建一个文件夹, 包含以下文件:

一个mp4文件, source.mp4

秘钥文件key.txt, 文件内容:

0123456789ABCDEF

密钥信息文件keyinfo.txt, 文件内容:

/key

key.txt

0123456789ABCDEF0123456789ABCDEF

空文件夹: video01

执行命令:

ffmpeg.exe -y -i source.mp4 -c:v libx264 -c:a copy -f hls -hls_time 5 -hls_list_size 0 -hls_key_info_file keyinfo.txt -hls_playlist_type vod -hls_segment_filename video01/video-%%03d.ts video01/index.m3u8

以上命令的部分参数说明:

参数

说明

-y

直接覆盖已经存在的输出文件

-c

指定输入输出的解码编码器

-f

强制设置输入输出的文件格式,默认情况下ffmpeg会根据文件后缀名判断文件格式

-hls_time

指定生成 ts 视频切片的时间长度s

-hls_list_size 0

索引播放列表的最大列数 默认5,0 为不限制

-hls_playlist_type vod

表示当前的视频流并不是一个直播流,而是点播流

-hls_segment_filename

输出 ts m3u8 文件路径

注意: 为了配合程序使用, .m3u8文件必须取名为"index.m3u8"

考虑到百度网盘的网速, 视频可能需要一些压缩:

ffmpeg.exe -y -i source.mp4 -s 600x480 -r 20 -b 700K -b:a 32K -c:v libx264 -c:a aac -f hls -hls_time 5 -force_key_frames "expr:gte(t,n_forced*1)" -hls_list_size 0 -hls_key_info_file keyinfo.txt -hls_playlist_type vod -hls_segment_filename video01/video-%%03d.ts video01/index.m3u8

-s 600x480 画面尺寸

-r 20 帧率

-b 700K 比特率

-force_key_frames "expr:gte(t,n_forced*1)" 每秒前增加关键帧, 使得每个ts文件都是准确的5秒钟;

如果百度网盘的速度是100kb/s, 5秒一个视频, 视频文件大于500kb, 播放就会卡.

上传视频到百度网盘

打开百度云, 上传后目录结构如下:

我的应用数据

└─bypy

└─视频

├─视频01

│ index.m3u8

│ video-000.ts

│ video-001.ts

│ .......

└─视频02

index.m3u8

video-000.ts

video-001.ts

........

说明:

文件夹"我的应用数据"也可能叫apps

文件夹"bypy"不需要手动创建, 应该已经存在, 如果不存在应该是刚才授权失败.

新建文件夹"视频", 名称不能改动;

重命名刚才的video01文件夹, 上传到"视频"文件夹下; 这里重命名为"视频01"

.m3u8文件必须取名为"index.m3u8"

视频上传完成之后, 刷新刚才的页面, 底部会有"视频01"、"视频02"的按钮, 点击即可播放;

 类似资料: