尝试使用 ffmpeg 调整 m3u8 视频的大小

Trying to resize m3u8 videos with ffmpeg

我的服务器上有一个 m3u8 vod 视频。它工作正常。现在我想为移动设备创建一个更小的尺寸。

需要创建一个 480p m3u8 文件。

我试过这段代码,但没有用。

ffmpeg -i HD.m3u8 -vf scale=842:-1 -c:a copy -start_number 0 -hls_time 8 -hls_list_size 0 -f hls  ./SM.m3u8

这是我的错误代码:

  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
[hls,applehttp @ 0x55a16f22a880] Opening 'HD0.ts' for reading
Input #0, hls,applehttp, from 'HD.m3u8':
  Duration: 02:05:08.29, start: 1.460111, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1920x800 [SAR 1:1 DAR 12:5], 24 fps, 24 tbr, 90k tbn, 48 tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x55a16f267880] height not divisible by 2 (842x351)
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

是否可以从 m3u8 文件转换它,或者我需要原始的 mp4 文件吗?

H.264 4:2:0 采样视频必须有偶数尺寸,所以它应该是 -vf scale=842:-2

此外,对于 -hls_time 8,您必须确保关键帧每 8 秒存在一次。添加 -force_key_frames expr:gte(t,n_forced*8)