Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem med undertexter från SVT #120

Open
stefansundin opened this issue Apr 9, 2022 · 13 comments
Open

Problem med undertexter från SVT #120

stefansundin opened this issue Apr 9, 2022 · 13 comments

Comments

@stefansundin
Copy link
Owner

stefansundin commented Apr 9, 2022

Jag har fått diverse rapporter att vissa undertexter inte laddas ner korrekt.

Problemet verkar vara att SVT har uppdaterat formatet som undertexterna använder, och FFmpeg klarar inte av att koda av dem korrekt. Äldre SVT-klipp fungerar fortfarande. Felet som rapporteras är:

Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

Problemet är en bugg i FFmpeg (https://trac.ffmpeg.org/ticket/8684), som för närvarande inte har fixats. Det finns en tredjeparts-version av FFmpeg som har fixat problemet och om man använder den så borde nedladdningen fungera som den ska. Du kan ladda ned den här: https://github.com/yt-dlp/FFmpeg-Builds#downloads (tyvärr fungerar denna inte på Mac för tillfället).

Om du inte kan använda https://github.com/yt-dlp/FFmpeg-Builds, så läs vidare för en manuell workaround.


En workaround till problemet är att först ladda ned undertextsfilen, uppdatera den manuellt med en textredigerare, och sedan använda den nya filen som FFmpeg kan koda av.

I det här exemplet använder jag https://www.svtplay.se/video/28738726/agnes/agnes-avsnitt-1-1.

ffmpeg -i "https://svt-vod-8d.akamaized.net/d0/se/20220325/a73ec1ce-b90b-4b7a-8f83-1b88d85e8e84/text/text-0.vtt" "Agnes - Avsnitt 1.srt"

[...]

Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

Istället för att ladda ned undertexterna med FFmpeg, så ladda ned filen med din webbläsare (öppna https://svt-vod-8d.akamaized.net/d0/se/20220325/a73ec1ce-b90b-4b7a-8f83-1b88d85e8e84/text/text-0.vtt).

Flytta filen till mappen där du kör ffmpeg från. Öppna text-0.vtt i en textredigerare (t.ex. Notepad). Överst i filen så borde du se följande:

WEBVTT

STYLE
::cue {
    color: #DFDFDF;
}
::cue(.huvudpratare) {
    color: #00FFFF;
}
::cue(.ljud) {
    color: #FF00FF;
}
::cue(.ljudskylt) {
    color: #FF00FF;
}
::cue(.relivemark) {
    color: #FF0000;
}
::cue(.sang) {
    color: #00FF00;
}

9bd0a0b847774241be809bec1578b021
00:00:49.120 --> 00:00:54.520 align:left position:18%
<c.teletext><c.huvudpratare>Morötter...39:90,</c>
<c.huvudpratare>nej, det var kaffet.</c></c>

e3a88839fe1649af8da2759087c9a908
00:00:57.680 --> 00:01:05.320 align:left position:18%
<c.teletext><c.huvudpratare>Robert, får jag min telefon – den</c>
<c.huvudpratare>som du har och som jag betalar.</c></c>

[...]

Radera hela STYLE blocket inklusive alla ::cue(...) { ... } snuttar. Det är det här som ställer till besvär med FFmpeg. Efter att du raderat det så ska det se ut som följande:

WEBVTT

9bd0a0b847774241be809bec1578b021
00:00:49.120 --> 00:00:54.520 align:left position:18%
<c.teletext><c.huvudpratare>Morötter...39:90,</c>
<c.huvudpratare>nej, det var kaffet.</c></c>

e3a88839fe1649af8da2759087c9a908
00:00:57.680 --> 00:01:05.320 align:left position:18%
<c.teletext><c.huvudpratare>Robert, får jag min telefon – den</c>
<c.huvudpratare>som du har och som jag betalar.</c></c>

[...]

Spara filen. Återgå sedan till din terminal och ändra på kommandot. Byt ut -i "https://svt-vod-8d.akamaized.net/d0/se/20220325/a73ec1ce-b90b-4b7a-8f83-1b88d85e8e84/text/text-0.vtt" mot -i text-0.vtt. Kör kommandot.

ffmpeg -i text-0.vtt "Agnes - Avsnitt 1.srt"

[...]

Input #0, webvtt, from 'text-0.vtt':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Subtitle: webvtt
Output #0, srt, to 'Agnes - Avsnitt 1.srt':
  Metadata:
    encoder         : Lavf59.20.101
  Stream #0:0: Subtitle: subrip
    Metadata:
      encoder         : Lavc59.25.101 srt
Stream mapping:
  Stream #0:0 -> #0:0 (webvtt (native) -> subrip (srt))
Press [q] to stop, [?] for help
size=      24kB time=00:28:58.56 bitrate=   0.1kbits/s speed=3.73e+05x    
video:0kB audio:0kB subtitle:13kB other streams:0kB global headers:0kB muxing overhead: 77.090057%

Om du öppnar filen Agnes - Avsnitt 1.srt så borde du se följande:

1
00:00:49,120 --> 00:00:54,520
Morötter...39:90,
nej, det var kaffet.

2
00:00:57,680 --> 00:01:05,320
Robert, får jag min telefon – den
som du har och som jag betalar.

Det betyder att det fungerade och du har nu undertexterna i srt formatet. Med många videospelare, t.ex. VLC, så räcker det om du placerar filen med undertexterna i samma mapp som video-filen, och då lägger VLC automatiskt till undertexterna när du spelar upp videon. Det är viktigt att filerna har exakt samma namn förutom filändelsen.

Om du vill lägga ihop filerna till en och samma fil så kan du "muxa" ihop dem. Med FFmpeg kan du köra följande:

ffmpeg -i "Agnes - Avsnitt 1.mp4" -i "Agnes - Avsnitt 1.srt" -vcodec copy -acodec copy "Agnes - Avsnitt 1 (med undertexter).mp4"

Se kommentarerna nedanför för mer diskussion och skriv gärna en kommentar om något här var svårt att förstå.

Mer information
ffmpeg -i "https://svt-vod-4h.akamaized.net/d0/se/20220322/971c4955-b54a-46ec-8936-904972a183aa/text/text-0.vtt" "Kulturfrågan Kontrapunkt - Avsnitt 5.srt"

ffmpeg version N-106542-g5a9de38e54-tessus Copyright (c) 2000-2022 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      57. 24.101 / 57. 24.101
  libavcodec     59. 25.101 / 59. 25.101
  libavformat    59. 20.101 / 59. 20.101
  libavdevice    59.  6.100 / 59.  6.100
  libavfilter     8. 30.100 /  8. 30.100
  libswscale      6.  6.100 /  6.  6.100
  libswresample   4.  6.100 /  4.  6.100
  libpostproc    56.  5.100 / 56.  5.100
Input #0, webvtt, from 'https://svt-vod-4h.akamaized.net/d0/se/20220322/971c4955-b54a-46ec-8936-904972a183aa/text/text-0.vtt':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Subtitle: webvtt
File 'Kulturfrågan Kontrapunkt - Avsnitt 5.srt' already exists. Overwrite? [y/N] y
Output #0, srt, to 'Kulturfrågan Kontrapunkt - Avsnitt 5.srt':
  Metadata:
    encoder         : Lavf59.20.101
  Stream #0:0: Subtitle: subrip
    Metadata:
      encoder         : Lavc59.25.101 srt
Stream mapping:
  Stream #0:0 -> #0:0 (webvtt (native) -> subrip (srt))
Press [q] to stop, [?] for help
size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
ffmpeg -i "https://svt-vod-10f.akamaized.net/d0/world/20220326/4ad7f17f-a203-4a43-8c01-12fd164dc691/text/text-0.vtt" "Nattens hjältar - Ismannen.vtt"

ffmpeg version N-106542-g5a9de38e54-tessus Copyright (c) 2000-2022 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      57. 24.101 / 57. 24.101
  libavcodec     59. 25.101 / 59. 25.101
  libavformat    59. 20.101 / 59. 20.101
  libavdevice    59.  6.100 / 59.  6.100
  libavfilter     8. 30.100 /  8. 30.100
  libswscale      6.  6.100 /  6.  6.100
  libswresample   4.  6.100 /  4.  6.100
  libpostproc    56.  5.100 / 56.  5.100
Input #0, webvtt, from 'https://svt-vod-10f.akamaized.net/d0/world/20220326/4ad7f17f-a203-4a43-8c01-12fd164dc691/text/text-0.vtt':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Subtitle: webvtt
File 'Nattens hjältar - Ismannen.vtt' already exists. Overwrite? [y/N] y
Output #0, webvtt, to 'Nattens hjältar - Ismannen.vtt':
  Metadata:
    encoder         : Lavf59.20.101
  Stream #0:0: Subtitle: webvtt
    Metadata:
      encoder         : Lavc59.25.101 webvtt
Stream mapping:
  Stream #0:0 -> #0:0 (webvtt (native) -> webvtt (native))
Press [q] to stop, [?] for help
size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
ffmpeg -i text-0.vtt "Agnes - Avsnitt 1.srt"

ffmpeg version N-106542-g5a9de38e54-tessus Copyright (c) 2000-2022 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      57. 24.101 / 57. 24.101
  libavcodec     59. 25.101 / 59. 25.101
  libavformat    59. 20.101 / 59. 20.101
  libavdevice    59.  6.100 / 59.  6.100
  libavfilter     8. 30.100 /  8. 30.100
  libswscale      6.  6.100 /  6.  6.100
  libswresample   4.  6.100 /  4.  6.100
  libpostproc    56.  5.100 / 56.  5.100
Input #0, webvtt, from 'text-0.vtt':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Subtitle: webvtt
Output #0, srt, to 'Agnes - Avsnitt 1.srt':
  Metadata:
    encoder         : Lavf59.20.101
  Stream #0:0: Subtitle: subrip
    Metadata:
      encoder         : Lavc59.25.101 srt
Stream mapping:
  Stream #0:0 -> #0:0 (webvtt (native) -> subrip (srt))
Press [q] to stop, [?] for help
size=      24kB time=00:28:58.56 bitrate=   0.1kbits/s speed=3.73e+05x    
video:0kB audio:0kB subtitle:13kB other streams:0kB global headers:0kB muxing overhead: 77.090057%
@Maltavius
Copy link

svtplay-dl verkar ha löst problemet

@ScandinavianFilmoVideo
Copy link

En i mina ögon mycket smidigare lösning är:

Klistra in länken till vtt, i en webbläsare, t.ex. : https://svt-vod-3n.akamaized.net/d0/se/20220512/2e7527d6-cfb8-4aad-831b-abb33101b9cb/text/text-0.vtt
Spera med CTRL+S
Ladda upp den sparade filen till: https://www.happyscribe.com/subtitle-tools/convert-vtt-to-srt
Klart!

@kribjo
Copy link

kribjo commented Sep 14, 2022

  • ffmpeg har än så länge kvar problemet med att inte kunna hantera STYLE block i VTT
  • SVT Play fortsätter inkludera STYLE block i nya VTT
  • workarounden här kräver en del handpåläggning, särskilt om man automatiserat andra delar av processen
  • yt-dlp har samma problem men har löst det genom att distribuera en custom build av ffmpeg som innehåller en patch för att klara av (läs: ignorera) STYLE och REGION segment i VTT

Tips alltså: byt ut din vanliga ffmpeg mot yt-dlp:s custom build så bör undertexthanteringen inte längre vara något problem

custom build ffmpeg och lite mer information finns här: https://github.com/yt-dlp/FFmpeg-Builds

en relaterad buggrapport för ffmpeg finns här: https://trac.ffmpeg.org/ticket/8684 (som tidigare nämnts)

@hertingen
Copy link

Hej,
Jag undrar om någon kan hjälpa mig och förklara detta lite tydligare hur jag ska göra för att få med texter på det material jag laddar hem från SVT play.
Jag kan ladda hem videoklipp men får inte med någon text.

Jag har läst och provat denna Workaround men jag förstår inte riktigt hur jag ska göra.

Jag har ffmpeg på datorn och det ligger i: C:/Windows

Jag försökte göra om om textfilen enligt beskrivningen ovan och lyckades nästan, men när jag sedan försökte ladda hem fick jag bara felmeddelande i Kommandotolken. "No such file or directory" eller något liknande.

Jag gjorde då som användaren, @ScandinavianFilmoVideo, (skriver här i tråden) och klistrade in vtt länken i min webläsare.
Sparade filen och laddade sedan upp den till https://www.happyscribe.com/subtitle-tools/convert-vtt-to-srt och fick då en .srt fil.

Frågan är ju sedan vad jag gör med denna fil?
Jag antar att jag måste styra privatkopiera tillägget att läsa texten via denna fil istället, (innan jag kopierar in kommandot i Kommandotolken) då jag laddar hem videoklippet?
Hur gör jag detta isf?
Lägger jag filen på samma ställe där jag har ffmpeg? dvs C:/Windows?

Jag vore väldigt tacksam om någon kunde hjälpa mig med detta och förklara.

@ScandinavianFilmoVideo
Copy link

ScandinavianFilmoVideo commented Apr 29, 2023 via email

@hertingen
Copy link

Tack för ditt svar.
Menar du att jag behöver båda filerna (i samma mapp tex.) när jag ska titta på filmfilen för att få text? Så att om jag bara har filmfilen och tittar så ser jag filmen utan text. Och om jag lägger till .srt filen så får jag text. Texten hamnar alltså inte i filmfilen vid nedladdning (som den gjorde förut) efter denna workaround utan den får jag lägga till separat vid uppspelning?

@ScandinavianFilmoVideo
Copy link

ScandinavianFilmoVideo commented Apr 29, 2023 via email

@hertingen
Copy link

hertingen commented Apr 29, 2023

Precis, det kan även vara så, beroende påvilket program du använder, att du manuellt måste aktivera texten, men jag tror att tex vlc löser det om filerna heter samma. Egentligen behöver inte texten heta samma, men då måste man från programmet let upp textfilen, därför enklare på detta viset! lör 29 apr. 2023 kl. 14:58 skrev hertingen @.***>:

Tack så mycket! Det fungerade. :)
Vlc hittade texten automatiskt. Men finns det någon möjlighet att slå ihop textfilen och filmfilen? Om jag i framtiden tex skulle vilja lägga filen på ett usb minne och stoppa i min tv för att titta där?

@ScandinavianFilmoVideo
Copy link

ScandinavianFilmoVideo commented Apr 29, 2023 via email

@stefansundin
Copy link
Owner Author

Tack @ScandinavianFilmoVideo för att du hjälper till! :)

Jag har inte så mycket att tillägga men jag ska uppdatera topp-posten med instruktioner hur man muxar in undertexterna så att man bara behöver en fil. Ska också lägga till en länk till yt-dlp/FFmpeg-Builds som rekommenderades här i tråden. Om man använder den så borde problemet försvinna helt. Jag har inte testat den själv men jag tror det borde fungera bara bra, enda nackdelen är att det inte verkar finnas någon release till Mac.

@SuleymanXXX
Copy link

En i mina ögon mycket smidigare lösning är:

Klistra in länken till vtt, i en webbläsare, t.ex. : https://svt-vod-3n.akamaized.net/d0/se/20220512/2e7527d6-cfb8-4aad-831b-abb33101b9cb/text/text-0.vtt Spera med CTRL+S Ladda upp den sparade filen till: https://www.happyscribe.com/subtitle-tools/convert-vtt-to-srt Klart!

Jag vet inte vad för fel jag gör, men får inte till detta rätt på något sätt.
Får detta felmeddelande när jag klistrar in i min webbläsare:
Skärmbild 2023-04-30 102848
Och så här ser filen ut när jag sparar ner länken på datorn. Det blir ingen riktigt .vtt fil.
Skärmbild 2023-04-30 104057

Vad gör jag fel?

@Maltavius
Copy link

En i mina ögon mycket smidigare lösning är:
Klistra in länken till vtt, i en webbläsare, t.ex. : https://svt-vod-3n.akamaized.net/d0/se/20220512/2e7527d6-cfb8-4aad-831b-abb33101b9cb/text/text-0.vtt Spera med CTRL+S Ladda upp den sparade filen till: https://www.happyscribe.com/subtitle-tools/convert-vtt-to-srt Klart!

Jag vet inte vad för fel jag gör, men får inte till detta rätt på något sätt. Får detta felmeddelande när jag klistrar in i min webbläsare: Skärmbild 2023-04-30 102848 Och så här ser filen ut när jag sparar ner länken på datorn. Det blir ingen riktigt .vtt fil. Skärmbild 2023-04-30 104057

Vad gör jag fel?

Ok, det här är väl egentligen inget support-forum för grundläggande datorkunskap...
Men du försöker köra "ffmpeg -i" i sökfönstret istället för i en terminal.

Om du försöker följa instruktionen att ladda hem undertextfilen så måste du ta bort "ffmpeg -i" och ha BARA https://... och inte söka på det utan skriva det i adressfältet i webbläsaren.

Läs den här instruktionen: https://blogs.helsinki.fi/studentens-digitalkompetens/1-introduktion-till-datoranvandning/1-3-internet-och-www/introduktion-till-anvandning-av-webblasare/

@SuleymanXXX
Copy link

SuleymanXXX commented Apr 30, 2023

Ja, min bifogade skärmklipp ser konstigt ut när jag ser på det nu. Ville inte bifoga hela min webläsar meny.
Saken är det att jag skriv in .vtt länken i webbläsarens url, och inte sökfunktionen.

Med lite eftertanke så testade jag att redigera länknamnet: ffmpeg -i "https://svt-vod-9t.akamaized.net/d0/se/20230303/f8c5b602-3891-48c6-94f9-1c424c97dc52/text/text-closed.vtt" "30 sekunder.srt"

......till att istället stå: https://svt-vod-9t.akamaized.net/d0/se/20230303/f8c5b602-3891-48c6-94f9-1c424c97dc52/text/text-closed.vtt

Och det gjorde skillnad. Och då funkar det riktigt bra.
Hur som helst, tack.

Skärmbild 2023-04-30 115330

En i mina ögon mycket smidigare lösning är:
Klistra in länken till vtt, i en webbläsare, t.ex. : https://svt-vod-3n.akamaized.net/d0/se/20220512/2e7527d6-cfb8-4aad-831b-abb33101b9cb/text/text-0.vtt Spera med CTRL+S Ladda upp den sparade filen till: https://www.happyscribe.com/subtitle-tools/convert-vtt-to-srt Klart!

Jag vet inte vad för fel jag gör, men får inte till detta rätt på något sätt. Får detta felmeddelande när jag klistrar in i min webbläsare: Skärmbild 2023-04-30 102848 Och så här ser filen ut när jag sparar ner länken på datorn. Det blir ingen riktigt .vtt fil. Skärmbild 2023-04-30 104057
Vad gör jag fel?

Ok, det här är väl egentligen inget support-forum för grundläggande datorkunskap... Men du försöker köra "ffmpeg -i" i sökfönstret istället för i en terminal.

Om du försöker följa instruktionen att ladda hem undertextfilen så måste du ta bort "ffmpeg -i" och ha BARA https://... och inte söka på det utan skriva det i adressfältet i webbläsaren.

Läs den här instruktionen: https://blogs.helsinki.fi/studentens-digitalkompetens/1-introduktion-till-datoranvandning/1-3-internet-och-www/introduktion-till-anvandning-av-webblasare/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants