跳到主要内容

ffmpeg

ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp,https,tls" -i 123.m3u8 -c copy -bsf:a aac_adtstoasc  guzhuyizhi.mp4

-allowed_extensions ALL:允许所有扩展名的文件。
-protocol_whitelist "file,http,crypto,tcp,https,tls":指定协议白名单,允许使用的网络协议。
-i 123.m3u8:指定输入文件为 123.m3u8,这是一个 M3U8 格式的视频流文件。
-c copy:指定使用 copy 编解码器,表示不进行任何编解码操作,只是复制输入流到输出流。
guzhuyizhi.mp4:指定输出文件为 guzhuyizhi.mp4,这是转换后的 MP4 格式的视频文件。

在给定的命令中,-bsf:a aac_adtstoasc 是一个比特流过滤器(Bitstream Filter),用于处理 AAC(Advanced Audio Coding)格式的音频流。具体来说,aac_adtstoasc 是用于将 AAC 音频流转换为 MPEG-4 格式的音频对象(Audio Specific Configuration)。


因此,添加 -bsf:a aac_adtstoasc 选项到你的命令中,可以确保输入的 AAC 格式音频流符合 MPEG-4 标准,从而提高其在各种播放器中的兼容性。

-i input_file:指定输入文件。
-f format:指定输出格式。
-c codec:指定编解码器。
-b:v bitrate:设置视频比特率。
-b:a bitrate:设置音频比特率。
-r framerate:设置帧率。
-s size:设置分辨率。
-t duration:设置持续时间。
-ss position:设置起始时间。
-af filter1=option1:filter2=option2:...:设置音频滤镜。
-vf filter1=option1:filter2=option2:...:设置视频滤镜。
-an:禁用音频输出。
-vn:禁用视频输出。
-y:覆盖输出文件。
-vcodec codec:设置视频编解码器。
-acodec codec:设置音频编解码器。
-movflags flags:设置 MOV 文件标志。
-preset preset_name:设置编码速度和质量的预设值。
-crf value:设置视频的恒定质量因子。
-filter_complex filtergraph:设置复杂的滤镜图。

ffmpeg -i part.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 part.m3u8

-c:v libx264:指定视频编码器为 libx264,这是一个常用的 H.264 视频编码器。
-c:a aac:指定音频编码器为 AAC。
-strict -2:这是一个过时的参数,表示关闭严格模式,用于兼容一些旧版本的 FFmpeg。
-f hls:指定输出格式为 HLS。
-hls_list_size 0:设置 HLS 播放列表文件(M3U8 文件)的最大长度,这里设置为 0 表示不限制长度,即不分割 M3U8 文件。
-hls_time 5:设置 HLS 分段时长为 5 秒,即每个分段的时长为 5 秒。
part.m3u8:指定输出的 M3U8 文件的名称。

加密


生成密钥
openssl rand 16 > [密钥存放位置]

命令: openssl rand 16 > R:\a_tast\encrypt.key

4.4 生成IV
命令:openssl rand -hex 16

得到一串字符串:354e640be9affa01868e6b2b7785b5d2

4.5 编写keyinfo文件
文件名:aa.keyinfo

http://localhost:8080/ld/encrypt.key
R:\a_tast\encrypt.key
354e640be9affa01868e6b2b7785b5d2

第一段:解密文件路径,必须是URI,用来解密视频文件,这里使用tomcat服务

第二段:是加密文件路径

第三段:之前生成的IV

4.6 切片与加密命令
依然打开当前目录的cmd窗口如2.2,或者使用绝对路径

ffmpeg -y -i 1.mp4 -c:v libx264 -c:a copy -f hls -hls_time 5 -hls_list_size 0 -hls_key_info_file aa.keyinfo -hls_playlist_type vod -hls_segment_filename part%d.ts part.m3u8

-y:表示覆盖输出文件,即如果输出文件已存在则覆盖之。
-i 1.mp4:指定输入文件为1.mp4,这是一个MP4格式的视频文件。
-c:v libx264:指定视频编码器为libx264,这是一个常用的H.264视频编码器。
-c:a copy:指定音频编码器为拷贝,即直接复制输入文件的音频流而不进行重新编码。
-f hls:指定输出格式为HLS。
-hls_time 5:设置HLS分段时长为5秒,即每个分段的时长为5秒。
-hls_list_size 0:设置HLS播放列表文件(M3U8文件)的最大长度,这里设置为0表示不限制长度,即不分割M3U8文件。
-hls_key_info_file aa.keyinfo:指定HLS密钥信息文件,用于指定加密方式、密钥等信息。
-hls_playlist_type vod:设置HLS播放列表类型为VOD(Video On Demand),表示视频点播。
-hls_segment_filename part%d.ts:设置HLS分段文件的命名规则,这里设置为part%d.ts,表示分段文件名以part开头,后跟数字表示序号,最后以.ts为扩展名。
part.m3u8:指定输出的M3U8文件的名称。