ffmpeg在HLS m3u8视频中寻找

Vix*_*inG 10 video ffmpeg

我在m3u8 hls视频中遇到问题.
m3u8具有9-10秒的片段,#EXTINF:<time>,每个片段之前.

整个视频5小时之久,我试图从获得夹3:10:00到3:45:00这样的:

ffmpeg -ss 3:10:00 -i 'http://example.com/v/vod.m3u8' -t 0:35:00 -c:v copy -bsf:a aac_adtstoasc out.mp4
Run Code Online (Sandbox Code Playgroud)

当我执行它时,它只是永远等待.我在Windows和Linux上都试用了最新版本的FFmpeg.我昨天等了一个小时,没有做任何事情.日志:

Input #0, hls,applehttp, from 'http://example.com/v/vod.m3u8':
  Duration: 05:25:27.08, start: 60.000000, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 159 kb/s
    Stream #0:1: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1920x1080, 30 fps, 30 tbr, 90k tbn, 60 tbc
    Stream #0:2: Data: timed_id3 (ID3  / 0x20334449)
Output #0, mp4, to 'out.mp4':
  Metadata:
    encoder         : Lavf57.41.100
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1920x1080, q=2-31, 30 fps, 30 tbr, 90k tbn, 90k tbc
    Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc57.48.101 aac
Stream mapping:
  Stream #0:1 -> #0:0 (copy)
  Stream #0:0 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
Run Code Online (Sandbox Code Playgroud)

它永远保持这样.

如何在不下载整个5h25m的情况下寻求3h10m?
-ss似乎做得不多

是应该这么慢还是m3u8腐败?它看起来像这里面:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#ID3-EQUIV-TDTG:2015-12-16T03:24:26
#EXT-X-PLAYLIST-TYPE:EVENT

#EXT-X-ELAPSED-SECS:0.0
#EXT-X-TOTAL-SECS:19527.08
#EXTINF:9.268,
index-00000-vdyz-0.ts
#EXTINF:10.000,
index-00001-AiD9-0.ts
(...)
Run Code Online (Sandbox Code Playgroud)

它有12倍#EXT-X-DISCONTINUITY,每个约174个部分.

当我使用VLC或任何其他播放器直接打开m3u8时,我可以毫无问题地寻找并且它是即时的.FFmpeg似乎没有使用相同的搜索方法,或者它被破坏了.

要了解我的意思,请尝试在此m3u8上寻找:

http://vod167-ttvnw.akamaized.net/07e4ac668a/lirik_7709808752_7709808752/chunked/index-dvr.m3u8
Run Code Online (Sandbox Code Playgroud)

并尝试快速搜索(输入前的-ss)到2:30:00并导出1帧 frames:v 1 out.jpg

小智 0

如果我没记错的话,您需要使用地图标志仅分配流0:0和0:1,因为第三个流(0:2)是timed_id3,而不是使ffmpeg感到困惑的视频或音频,我在编码时遇到了类似的问题例如 hls 流:

ffmpeg -ss 3:10:00 -i 'http://example.com/v/vod.m3u8' -map 0:v -map 0:a -t 0:35:00 -c:v copy -bsf:a aac_adtstoasc out.mp4

or

ffmpeg -ss 3:10:00 -i 'http://example.com/v/vod.m3u8' -map 0:0 -map 0:1 -t 0:35:00 -c:v copy -bsf:a aac_adtstoasc out.mp4
Run Code Online (Sandbox Code Playgroud)