crunchy-labs / crunchy-cli

👇 Command-line downloader for Crunchyroll
MIT License
606 stars 62 forks source link

Video is always hardsubbed with CC (closed caption) subtitles #415

Closed codedeviant closed 6 months ago

codedeviant commented 6 months ago

Describe the bug

When downloading or archiving any episode that has CC subtitle, it is always hardsubbed in video stream

To Reproduce

$ crunchy-cli --lang en-US download --audio en-US --output "eng S{season_number}E{episode_number}.mp4" https://www.crunchyroll.com/watch/GK9U31P9J/dog--chainsaw
:: √ Logging in
:: √ Parsed url 1
:: √ Loaded series information for url 1                                   
:: Chainsaw Man Season 1 (Chainsaw Man (English Dub))
::      1. DOG & CHAINSAW » S01E01
:: Downloading DOG & CHAINSAW to 'eng S01E01.mp4'
::      Episode: S01E01
::      Audio: en-US
::      Subtitles:
::      Resolution: 1920x1080
::      FPS: 23.97
:: Downloading en-US audio  23.83 MiB  16.92 MiB/s [##################] 100%
:: Downloading video #1      1.41 GiB 108.58 MiB/s [##################] 100%
:: Generating output file   [#########################################] 100%

Video at timestamp 24:09.77 - 0:24:13.08:

image

Same timestamp from Crunchyroll:

image

FFmpeg info of the file to make sure there are no forced subtitles in container:

ffmpeg version 7.0-full_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'eng S01E01.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf61.1.100
  Duration: 00:25:25.09, start: 0.000000, bitrate: 8081 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 7947 kb/s, 23.98 fps, 23.98 tbr, 90k tbn (default)
      Metadata:
        handler_name    : VideoHandler
        vendor_id       : [0][0][0][0]
  Stream #0:1[0x2]: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
      Metadata:
        handler_name    : SoundHandler
        vendor_id       : [0][0][0][0]

Just to make sure that the issue is not isolated to en-US locale, download de-DE version the same episode and get German hardsub now.

image

Expected behavior

Clean video stream without hardsub.

Client (please complete the following information):

Additional context

Same result with archive instead of download option and mkv instead if mp4 container

codedeviant commented 6 months ago

Upon further investigating reverting this commit fixed the issue for me

mephielo commented 6 months ago

Upon further investigating reverting this commit fixed the issue for me

how can i revert the commits

bytedream commented 6 months ago

Got fixed in v3.6.2. Ty for picking out the commit @codedeviant, the logic in there was more or less invalid since v3.3.2