如何为 ffmpeg HLS 导出的文件夹提供自定义文件夹名称?
How do I give custom folder names to the folders for ffmpeg HLS export?
我正在制作一个功能,对一些视频进行转码,这些视频将通过 FFMPEG 以 480p 和 360p 变体保存在两个不同的文件夹中
这是命令
"ffmpeg -i vid.mp4 " \
"-filter_complex " \
"[0:v]split=2[v2][v3];" \
"[v2]scale=720:-2[v2out]; [v3]scale=360:-2[v3out] " \
"-map [v2out] -c:v:0 libx265 -sc_threshold 0 -crf:v:1 30 -level:v:0 3.0 -keyint_min:v:0 48 -g:v:0 48 "\
"-map [v3out] -c:v:1 libx265 -sc_threshold 0 -crf:v:2 30 -level:v:1 3.0 -keyint_min:v:1 48 -g:v:1 48 "\
"-map a:0 -c:a:0 aac -b:a:0 96k -ac:a:0 2 "\
"-map a:0 -c:a:1 aac -b:a:1 48k -ac:a:1 2 "\
"-f hls "\
"-hls_time 6 "\
"-hls_list_size 0 "\
"-hls_segment_filename v%v/segment_%d.ts " \
"-master_pl_name master.m3u8 "\
"-var_stream_map "v:0,a:0 v:1,a:1" v%v/stream.m3u8"
然而,这会生成文件夹 v0,v1 我需要名称为 360p 和 480p 而不是 v0 和 v1,有什么方法可以映射 运行 命令而不是在命令
之后编辑文件夹名称和主播放列表
在 -var_stream_map
中提供姓名:
ffmpeg -i vid.mp4 \
-filter_complex "[0:v]split=2[v2][v3];[v2]scale=720:-2[v2out];[v3]scale=360:-2[v3out]" \
-map "[v2out]" -c:v:0 libx265 -sc_threshold 0 -crf:v:1 30 -level:v:0 3.0 -keyint_min:v:0 48 -g:v:0 48 \
-map "[v3out]" -c:v:1 libx265 -sc_threshold 0 -crf:v:2 30 -level:v:1 3.0 -keyint_min:v:1 48 -g:v:1 48 \
-map a:0 -c:a:0 aac -b:a:0 96k -ac:a:0 2 \
-map a:0 -c:a:1 aac -b:a:1 48k -ac:a:1 2 \
-f hls \
-hls_time 6 \
-hls_list_size 0 \
-hls_segment_filename "v%v/segment_%d.ts" \
-master_pl_name master.m3u8 \
-var_stream_map "v:0,a:0,name:480p v:1,a:1,name:360p" v%v/stream.m3u8
我正在制作一个功能,对一些视频进行转码,这些视频将通过 FFMPEG 以 480p 和 360p 变体保存在两个不同的文件夹中
这是命令
"ffmpeg -i vid.mp4 " \
"-filter_complex " \
"[0:v]split=2[v2][v3];" \
"[v2]scale=720:-2[v2out]; [v3]scale=360:-2[v3out] " \
"-map [v2out] -c:v:0 libx265 -sc_threshold 0 -crf:v:1 30 -level:v:0 3.0 -keyint_min:v:0 48 -g:v:0 48 "\
"-map [v3out] -c:v:1 libx265 -sc_threshold 0 -crf:v:2 30 -level:v:1 3.0 -keyint_min:v:1 48 -g:v:1 48 "\
"-map a:0 -c:a:0 aac -b:a:0 96k -ac:a:0 2 "\
"-map a:0 -c:a:1 aac -b:a:1 48k -ac:a:1 2 "\
"-f hls "\
"-hls_time 6 "\
"-hls_list_size 0 "\
"-hls_segment_filename v%v/segment_%d.ts " \
"-master_pl_name master.m3u8 "\
"-var_stream_map "v:0,a:0 v:1,a:1" v%v/stream.m3u8"
然而,这会生成文件夹 v0,v1 我需要名称为 360p 和 480p 而不是 v0 和 v1,有什么方法可以映射 运行 命令而不是在命令
之后编辑文件夹名称和主播放列表在 -var_stream_map
中提供姓名:
ffmpeg -i vid.mp4 \
-filter_complex "[0:v]split=2[v2][v3];[v2]scale=720:-2[v2out];[v3]scale=360:-2[v3out]" \
-map "[v2out]" -c:v:0 libx265 -sc_threshold 0 -crf:v:1 30 -level:v:0 3.0 -keyint_min:v:0 48 -g:v:0 48 \
-map "[v3out]" -c:v:1 libx265 -sc_threshold 0 -crf:v:2 30 -level:v:1 3.0 -keyint_min:v:1 48 -g:v:1 48 \
-map a:0 -c:a:0 aac -b:a:0 96k -ac:a:0 2 \
-map a:0 -c:a:1 aac -b:a:1 48k -ac:a:1 2 \
-f hls \
-hls_time 6 \
-hls_list_size 0 \
-hls_segment_filename "v%v/segment_%d.ts" \
-master_pl_name master.m3u8 \
-var_stream_map "v:0,a:0,name:480p v:1,a:1,name:360p" v%v/stream.m3u8