youtube-dl 有一个 3gp 文件,显然它不包含任何视频流。有什么方法可以播放视频吗?

youtube-dl got a 3gp file, apparently it doesn't contain any video streams. Is there some way to play the video?

我尝试使用 3gp 格式的 youtube-dl 下载视频。当我尝试在 VLC 或任何其他应用程序上播放它时,它无法播放。这是我再次尝试下载时得到的输出。

youtube-dl https://youtu.be/lVFq__mrmlQ -f worst -v  
[debug] System config: []  
[debug] User config: []  
[debug] Custom config: []  
[debug] Command-line args: ['https://youtu.be/lVFq__mrmlQ', '-f', 'worst', '-v']  
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8  
[debug] youtube-dl version 2018.03.14  
[debug] Python version 3.6.5 (CPython) - Linux-4.15.0-29-generic-x86_64-with-Ubuntu-18.04-bionic  
[debug] exe versions: ffmpeg 3.4.2-2, ffprobe 3.4.2-2, phantomjs 2.1.1, rtmpdump 2.4  
[debug] Proxy map: {}  
[youtube] lVFq__mrmlQ: Downloading webpage  
[youtube] lVFq__mrmlQ: Downloading video info webpage  
[youtube] lVFq__mrmlQ: Extracting video information  
[debug] Invoking downloader on 'https://r4---sn-h5q7dnee.googlevideo.com/videoplayback?signature=5432A7990BB3336616E21753F1D53171D09CBC31.B98E84CF0C51F39C613F53311128CD9E7A3872EA&c=WEB&lmt=1514133618343257&key=yt6&itag=17&fvip=3&mn=sn-h5q7dnee%2Csn-h5q7knes&mm=31%2C29&pl=24&mime=video%2F3gpp&id=o-AKWLZ7MpY1ip3PlxZJ7vXBY-jDqbVpUeI_Bls_o_g-GV&ipbits=0&requiressl=yes&ip=90.174.4.0&gir=yes&mt=1532653244&ms=au%2Crdu&dur=18470.684&initcwndbps=1011250&ei=S29aW5SjH4bIVseNkfgE&expire=1532674987&mv=m&sparams=clen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cexpire&clen=195336027&source=youtube&ratebypass=yes'  
[download] Heroes of Might and Magic III - No Might 1v7 FFA (200%)-lVFq__mrmlQ.3gp has already been downloaded  
[download] 100% of 186.29MiB  

我尝试用 ffmpeg 转换它,但我收到以下消息:

ffmpeg -i  Heroes\ of\ Might\ and\ Magic\ III\ -\ No\ Might\ 1v7\ FFA\ \(200%\)-lVFq__mrmlQ.3gp Heroes\ of\ Might\ and\ Magic\ III\ -\ No\ Might\ 1v7\ FFA\ \(200%\)-lVFq__mrmlQ.mp4
ffmpeg version 3.4.2-2 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-16ubuntu2)
  configuration: --prefix=/usr --extra-version=2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x562e75c728c0] Could not find codec parameters for stream 0 (Video: mpeg4 (mp4v / 0x7634706D), none, 221 kb/s): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Heroes of Might and Magic III - No Might 1v7 FFA (200%)-lVFq__mrmlQ.3gp':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2017-12-24T16:43:17.000000Z
  Duration: 05:07:50.68, bitrate: 84 kb/s
    Stream #0:0(und): Video: mpeg4 (mp4v / 0x7634706D), none, 221 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc (default)
    Metadata:
      creation_time   : 2017-12-24T16:43:17.000000Z
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Output #0, mp4, to 'Heroes of Might and Magic III - No Might 1v7 FFA (200%)-lVFq__mrmlQ.mp4':
Output file #0 does not contain any stream

有了这些信息,我不知道如何进行。我已经尝试过使用 max analyzeduration 和 probesize 的 ffmpeg,但它仍然不起作用。有什么想法吗?

编辑:添加了检测到的 youtube-dl 格式列表。

youtube-dl -F https://youtu.be/lVFq__mrmlQ
[youtube] lVFq__mrmlQ: Downloading webpage
[youtube] lVFq__mrmlQ: Downloading video info webpage
[youtube] lVFq__mrmlQ: Extracting video information
[info] Available formats for lVFq__mrmlQ:
format code  extension  resolution note
249          webm       audio only DASH audio   71k , opus @ 50k, 108.83MiB
250          webm       audio only DASH audio   85k , opus @ 70k, 142.71MiB
171          webm       audio only DASH audio  119k , vorbis@128k, 228.14MiB
140          m4a        audio only DASH audio  145k , m4a_dash container, mp4a.40.2@128k, 279.77MiB
251          webm       audio only DASH audio  152k , opus @160k, 280.97MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 30fps, video only, 91.12MiB
278          webm       256x144    144p  153k , webm container, vp9, 30fps, video only, 176.00MiB
133          mp4        426x240    240p  258k , avc1.4d4015, 30fps, video only, 188.39MiB
242          webm       426x240    240p  261k , vp9, 30fps, video only, 366.78MiB
243          webm       640x360    360p  528k , vp9, 30fps, video only, 751.54MiB
134          mp4        640x360    360p  758k , avc1.4d401e, 30fps, video only, 539.15MiB
244          webm       854x480    480p  896k , vp9, 30fps, video only, 1.43GiB
135          mp4        854x480    480p 1441k , avc1.4d401f, 30fps, video only, 1.40GiB
247          webm       1280x720   720p 1798k , vp9, 30fps, video only, 3.03GiB
136          mp4        1280x720   720p 2673k , avc1.4d401f, 30fps, video only, 2.86GiB
302          webm       1280x720   720p60 2907k , vp9, 60fps, video only, 5.10GiB
298          mp4        1280x720   720p60 4626k , avc1.4d4020, 60fps, video only, 4.11GiB
17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k
36           3gp        320x180    small , mp4v.20.3, mp4a.40.2
43           webm       640x360    medium , vp8.0, vorbis@128k
18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)

下载的是17号

你通过了-f worst。顾名思义,-f worst 将为您提供最差的视频格式,质量很差,并且在许多应用程序(包括 ffmpeg)中几乎不支持。简而言之,你得到了你想要的。

要获得更好的文件,请提出其他要求。例如,如果您只需要音频(对于大多数视频来说比图片小得多),请传入 -x.

如果您想要最好的视频质量,只需省略 -f worst

如果您的设备只能播放特定分辨率(比如 300px 宽度),请传入 -f 'bestvideo[width<=300]+bestadio/best[width<=300]'

如果您的磁盘 space 每个视频是限制(例如 5GB),请传入 -f best[filesize<=5GB]

如果您的设备只能播放某些格式,请使用 acodecvcodeccontainer 或简单地 ext 指定该格式。例如,-f worstvideo[ext=mp4]+bestaudio/worst[ext=mp4] 将为您提供质量最差的 MP4 文件。

当然,这些选择器可以组合,如-f worst[ext=mp4][filesize<=5GB]。有关所有这些选项的更多信息,请参阅 the youtube-dl documentation.

此问题与编解码器或 ffmpeg 无关。该文件在下载过程中损坏,进一步尝试重新下载并没有告诉我任何相关信息。感谢用户 phihag 共享文件的 sha256。