首页 文章

我如何只为每个HLS输出输出单个视频流

提问于
浏览
1

我使用-map 360,720和1080p成功输出3个HLS输出 . 我的源文件是540p . 一旦生成,我在新创建的360.ts,720.ts和1080.ts上使用ffprobe,并注意到有第二个视频通道 . 此 Channels 是输入视频 . 如何让FFmpeg不输出原始视频作为输出的一部分?

这是360.ts上的ffprobe

流#0:0 [0x100]:视频:h264(主要)([27] [0] [0] [0] / 0x001B),yuv420p,640x360 [SAR 1:1 DAR 16:9],29.97 fps,29.97 tbr,90k tbn,59.94 tbc流#0:10x101:音频:aac([15] [0] [0] [0] / 0x000F),48000 Hz,立体声,fltp,100 kb / s流#0:2 [ 0x102]:视频:h264(主要)([27] [0] [0] [0] / 0x001B),yuv420p,960x540 [SAR 1:1 DAR 16:9],29.97 fps,29.97 tbr,90k tbn,59.94 TBC

这是FFmpeg命令

%ffmpeg%-loglevel fatal -threads%threads%-hide_banner -y -i%input%-i%overlayImg%^ -filter_complex“[1] colorchannelmixer = aa =%thumbopacity%,scale = iw *%thumbscale%: - 1 [WM]; [0:v] [WM]覆盖=(main_w-overlay_w)-36:(main_h-overlay_h)-21,分裂= 4 [A] [b] [C] [d]; [α]规模= W = 640,H = 360:force_original_aspect_ratio =下降并[a]; [b]按比例= W = 1280,H = 720:force_original_aspect_ratio =下降并[b] [C]规模= W = 1920,H = 1080:force_original_aspect_ratio =减少[c]; [d] scale = w = 1280:h = 720:force_original_aspect_ratio =减去[d]“^ -map”[a]“-map 0 -c:a aac -ar 48000 -c:v h264 -profile:v main -movflags faststart -tune film -crf%crf%-preset%preset%-sc_threshold 0 -g 72 -keyint_min 72 -hls_time 4 -hls_playlist_type vod -b:v 800k -maxrate 856k -bufsize 1200k -b: 96k -hls_flags single_file ^%输出%\ 360p.m3u8 ^ -map“[b]” - map 0 -c:a aac -ar 48000 -c:v h264 -profile:v main -movflags faststart -tune film -crf %crf%-preset%preset%-sc_threshold 0 -g 72 -keyint_min 72 -hls_time 4 -hls_playlist_type vod -b:v 2800k -ma xrate 2996k -bufsize 4200k -b:128k -hls_flags single_file ^%输出%\ 720p.m3u8 ^ -map“[c]” - map 0 -c:a aac -ar 48000 -c:v h264 -profile:v main -movflags的fastStart -tune膜-crf%CRF%-PRESET%预设%-sc_threshold 0 -g 72 -keyint_min 72 -hls_time 4 -hls_playlist_type VOD -b:v 5000K -maxrate 5350k -bufsize 7500K -b:一个192K -hls_flags single_file ^%输出%\ 1080p.m3u8 ^ -map“[d]” - map 0 -c:a aac -ar 48000 -c:v h264 -profile:v main -preset%preset%^%output%\ 720.mp4 ^ -map 0:v -y -ss 0.5 -vframes 1 -s%thumbsize%-ss 30 ^%outputthumb%

谢谢 .

1 回答

  • 0

    1) -map 0 将包括所有原始流,包括视频 . 改为 -map 0:a

    2)您不需要两次扩展到720p . 缩放一次并分裂 .

    3) b:vcrf 在libx264(h264编码器)中是独占的 . 选一个(最好是crf)

    使用

    %ffmpeg% -loglevel fatal -threads %threads% -hide_banner -y -i %input% -i %overlayImg%^ -filter_complex "[1]colorchannelmixer=aa=%thumbopacity%,scale=iw*%thumbscale%:-1[wm];[0:v][wm]overlay=(main_w-overlay_w)-36:(main_h-overlay_h)-21,split=4[a][b][c][d];[a]scale=w=640:h=360:force_original_aspect_ratio=decrease[a];[b]scale=w=1280:h=720:force_original_aspect_ratio=decrease,split=2[b][d];[c]scale=w=1920:h=1080:force_original_aspect_ratio=decrease[c]"^ -map "[a]" -map 0:a -c:a aac -ar 48000 -c:v h264 -profile:v main -movflags +faststart -tune film -crf %crf% -preset %preset% -sc_threshold 0 -g 72 -keyint_min 72 -hls_time 4 -hls_playlist_type vod -b:v 800k -maxrate 856k -bufsize 1200k -b:a 96k -hls_flags single_file^ %output%\360p.m3u8^ -map "[b]" -map 0:a -c:a aac -ar 48000 -c:v h264 -profile:v main -movflags +faststart -tune film -crf %crf% -preset %preset% -sc_threshold 0 -g 72 -keyint_min 72 -hls_time 4 -hls_playlist_type vod -b:v 2800k -maxrate 2996k -bufsize 4200k -b:a 128k -hls_flags single_file^ %output%\720p.m3u8^ -map "[c]" -map 0:a -c:a aac -ar 48000 -c:v h264 -profile:v main -movflags +faststart -tune film -crf %crf% -preset %preset% -sc_threshold 0 -g 72 -keyint_min 72 -hls_time 4 -hls_playlist_type vod -b:v 5000k -maxrate 5350k -bufsize 7500k -b:a 192k -hls_flags single_file^ %output%\1080p.m3u8^ -map "[d]" -map 0:a -c:a aac -ar 48000 -c:v h264 -profile:v main -preset %preset%^ %output%\720.mp4^ -map 0:v -y -ss 0.5 -vframes 1 -s %thumbsize% -ss 30^ %outputthumb%
    

相关问题