MPV e live streaming

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e live streaming

Messaggio da rik70 »

joe ha scritto:precompilati?
Sì,
e sono su archlinux.

Codice: Seleziona tutto

ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7.3.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-shared --enable-version3 --enable-omx
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

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3789
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e live streaming

Messaggio da joe »

Grazie delle info!
Confrontandola con le mie opzioni di configurazione di ffmpeg tu hai in più le seguenti:

Codice: Seleziona tutto

--disable-static	enable
--disable-stripping
--enable-avisynth
--enable-fontconfig
--enable-gmp
--enable-gnutls
--enable-ladspa
--enable-libbluray
--enable-libfreetype
--enable-libiec61883
--enable-libmodplug
--enable-libopenjpeg
--enable-libsoxr
--enable-libvidstab
--enable-libxcb
--enable-libxml2
--enable-libxvid
--enable-omx
Il mio ffmpeg contiene poi altre opzioni in più che al tuo mancano e altre ancora che hai anche tu.
Può essere che il problema che rilevo sia dovuto all'assenza di una delle librerie sopra che tu hai abilitate in ffmpeg, mentre nel mio risultano mancanti.
Noto anche che il compilatore usato per ottenere il tuo pacchetto è molto più recente del mio, ma quello forse non è rilevante, non so...

Magari poi provo ad aggiungere anche quella roba...
Non so quale di quelle librerie possa avere a che fare con lo streaming in questione.

Ad ogni modo ho provato anche i link che aveva messo Ponce: rai4_HD e rai3_HD.
Quelli funzionano così come già detto del link ad euronews.
Il problema lo rilevo quindi solo con le dirette su youtube.

Sto anche provando a compilare ffmpeg sempre con lo slackbuild di AlienBob, ma usandolo così:

Codice: Seleziona tutto

VERSION=HEAD ./ffmpeg.SlackBuild
Per come è fatto lo script, dovrebbe compilare la versione GIT di ffmpeg...
Mi da qualche problemino con una variabile..
Ma dovrebbe in qualche modo essere facilmente risolvibile.
Se qualcuno volesse provare...
L'operazione è facile:

Codice: Seleziona tutto

lftp -c 'open http://www.slackware.com/~alien/slackbuilds/ffmpeg/; mirror build'
cd build
chmod +x ffmpeg.SlackBuild
VERSION=HEAD ./ffmpeg.Slackbuild
Ok se qualcuno sul slackware, possibilmente versione stabile, ma anche no... volesse provare...
L'operazione sopra prende la directory di lavoro di AlienBob per la compilazione di ffmpeg e librerie varie. Però impostando la VERSION a "HEAD" viene scaricata la versione di sviluppo di ffmpeg e si lavora su quella. Alla fine si dovrebbe ottenere un pacchetto di ffmpeg versione "git" all'ultimo grido.

In un secondo tempo con quella si dovrebbe riuscire a compilare l'ultima versione di mpv, la 0.28 che pare abbia parecchie novità riguardo al demux ecc.

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e live streaming

Messaggio da rik70 »

Piuttosto che la configurazione di compilazione, non sarà la patch applicata su ffmpeg da quelli di archlinux?

Al di là della distribuzione in uso, il software quello è per tutti.

Prova a lanciare mpv in modalità verbose e vedi se salta fuori qualche errore di buffering legato a ffmpeg: nel caso, prova a ricompilarlo applicando la patch che trovi qui.

Altro non mi viene in mente - youtube-dl immagino sia aggiornato, giusto?

P.s.
O ancora: dai uno sguardo anche alla patch per mpv relativa al demuxer lavf. Anche qui, la modalità verbose dovrebbe aiutarti a capire se c'entra qualcosa.
Ultima modifica di rik70 il dom 15 apr 2018, 21:01, modificato 1 volta in totale.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3789
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e live streaming

Messaggio da joe »

Ho provato a ricompilare ffmpeg con la patch indicata, adattando lo slackbuild di AlienBob.

Codice: Seleziona tutto

make_ffmpeg()
{
echo -e "**\n**  ffmpeg ...\n**"

[...]

# Prova patch per streaming con buffer che si scarica subito
cat $SRCDIR/patches/fs56089.patch | patch -p1 --verbose \
2>&1 | tee $OUTPUT/patch-${PRGNAM}.log

[...]
La patch è relativa a ffmpeg, non a librerie terze, quindi l'ho inserita nella funzione "make_ffmpeg" che si occupa della compilazione di ffmpeg.
Quella funzione viene richiamata in coda ad altre simili funzoini che si occupano di compilare le varie librerie terze ad esempio x265, tanto per dirne una.
Vedo che anche in altri punti dello slackbuild le patch vengono applicate da Alien in quel modo lì:
- le patch sono contenute in una directory "SRCDIR/patches", in cui io ho aggiunto la patch "fs56089.patch" consigliata
- l'applicazione della patch viene "registrata" in un file di log, ne metto un pezzo di seguito.
Siccome la patch andava a modificare i tre files seguenti:

Codice: Seleziona tutto

diff -rupN ffmpeg-3.4.orig/libavformat/aviobuf.c ffmpeg-3.4/libavformat/aviobuf.c

diff -rupN ffmpeg-3.4.orig/libavformat/avio.h ffmpeg-3.4/libavformat/avio.h

diff -rupN ffmpeg-3.4.orig/libavformat/version.h ffmpeg-3.4/libavformat/version.h
E siccome nel log trovo:

Codice: Seleziona tutto

/tmp/patch-ffmpeg.log                       
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff -rupN ffmpeg-3.4.orig/libavformat/aviobuf.c ffmpeg-3.4/libavformat/aviobuf.c
|--- ffmpeg-3.4.orig/libavformat/aviobuf.c      2017-11-02 14:57:16.078834563 +0100
|+++ ffmpeg-3.4/libavformat/aviobuf.c   2017-11-02 15:02:52.549816990 +0100
--------------------------
patching file libavformat/aviobuf.c
Using Plan A...
Hunk #1 succeeded at 531.
Hunk #2 succeeded at 587.
Hunk #3 succeeded at 659.
Hunk #4 succeeded at 725.
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff -rupN ffmpeg-3.4.orig/libavformat/avio.h ffmpeg-3.4/libavformat/avio.h
|--- ffmpeg-3.4.orig/libavformat/avio.h 2017-11-02 14:57:16.078834563 +0100
|+++ ffmpeg-3.4/libavformat/avio.h      2017-11-02 14:59:15.602300896 +0100
--------------------------
patching file libavformat/avio.h
Using Plan A...
Hunk #1 succeeded at 452.
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff -rupN ffmpeg-3.4.orig/libavformat/version.h ffmpeg-3.4/libavformat/version.h
|--- ffmpeg-3.4.orig/libavformat/version.h      2017-11-02 14:57:16.082167807 +0100
|+++ ffmpeg-3.4/libavformat/version.h   2017-11-02 15:04:01.704627612 +0100
--------------------------
patching file libavformat/version.h
Using Plan A...
Hunk #1 succeeded at 97.
done
Direi che la patch è stata applicata correttamente.

Facendo il test del solito video da youtube, sembra tutto risolto!
Quindi il problema era proprio quello!
Anche senza ricompilare mpv, il test è superato senza problemi...

Probabilmente passando alla versione di sviluppo di ffmpeg quella patch o qualcosa di simile sarà già stata applicata... immagino ma non ne sono sicuro.

Adesso io proporrei una cosa...
Sarebbe il caso di farlo sapere almeno ad Eric (alienbob), cosa ne pensate?

Grazie di tutto! =D>

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3789
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e live streaming

Messaggio da joe »

Ok, ho fatto presente sul blog di alien, il mio messaggio risulta in coda per l'approvazione.
Grazie ancora! :)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e live streaming

Messaggio da rik70 »

joe ha scritto:Probabilmente passando alla versione di sviluppo di ffmpeg quella patch o qualcosa di simile sarà già stata applicata... immagino ma non ne sono sicuro.
Immagini giusto: nel branch master c'è.

Ciao.

P.s
A questo punto, anche vlc dovrebbe funzionare se linkato alle "nuove" librerie ffmpeg.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3789
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e live streaming

Messaggio da joe »

A me a dire il vero VLC funzionava anche prima, avevo provato ad installarlo, ma non presentava il problema descritto.
Ne presentava un altro a dire il vero: cioè che dopo un po', ma tipo dopo 20 secondi (non dopo 5 secondi come MPV) si chiudeva tutto, anche la finestra spariva...
Per curiosità ho provato adesso con ffmpeg patchato.
Vi riporto un pezzo alla fine dell'output lanciando

Codice: Seleziona tutto

cvlc 'https://www.youtube.com/watch?v=XOacA3RYrXk'

Codice: Seleziona tutto

[00007f4ed40017f0] ts demux error: libdvbpsi error (PSI decoder): TS duplicate (received 0, expected 1) for PID 0
[00007f4ed40017f0] ts demux error: libdvbpsi error (PSI decoder): TS duplicate (received 0, expected 1) for PID 4095
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
[00007f9e740554e0] adaptive stream error: Failed reading https://r2---sn-obppu-hm2s.googlevideo.com:443/videoplayback/id/XOacA3RYrXk.3/itag/96/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D137/hls_chunk_host/r2---sn-obppu-hm2s.googlevideo.com/ei/mLDTWpCoNpnogAfEgry4Cg/gcr/it/playlist_type/: HTTP/1.1 403 Forbidden
Aggiungo solo che il comando non mi ritorna il prompt, resta lì appeso anche se la finestra si è chiusa...
Se invece lancio a riga di comando "vlc ecc ecc", si apre con l'interfaccia "completa", ma non cmbia nulla, appaiono errori simili a terminale e dopo un po' smette di riprodurre il video, però lanciandolo con "vlc <URL>", l'interfaccia resta aperta, nera, ma non sparisce come nel caso di "cvlc".
Però nel caso di VLC, intervengono anche altri fattori, nello specifico la gestione di indirizzi youtube.
MPV usa youtube-dl, VLC non so come si interfaccia a youtube...
A riprova di questo ho provato ad aprire un altro video youtube, sta volta "statico", non in live streaming quindi... Dovrebbe anche essere meno problematico in termini di demux-cache e simili....
Ecco cosa succede (buon ascolto a chi vuole testare! ;) )

Codice: Seleziona tutto

$ cvlc 'https://www.youtube.com/watch?v=7oM3a_9_qZQ'
VLC media player 3.0.0 Vetinari (revision 3.0.0-30-gef4c265336)
[0000000000f6c4e0] dummy interface: using the dummy interface module...
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
[00007ff6940318b0] lua stream error: Couldn't process youtube video URL, please check for updates to this script
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
sh: kreadconfig5: comando non trovato
[00007ff694433600] access stream error: HTTP 403 error
[00007ff6980061d0] main input error: L'ingresso non può essere aperto
[00007ff6980061d0] main input error: VLC non è in grado di aprire il MRL 'https://r1---sn-obppu-hm2e.googlevideo.com/videoplayback?gcr=it&initcwndbps=396250&ipbits=0&itag=22&dur=273.089&lmt=1507871601105913&key=yt6&source=youtube&expire=1523845294&mime=video%2Fmp4&requiressl=yes&mm=31%2C29&mn=sn-obppu-hm2e%2Csn-hpa7zned&ei=TbTTWoWLN5bh1wL9jojwDA&ms=au%2Crdu&mt=1523823550&pl=23&mv=m&sparams=dur%2Cei%2Cgcr%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cexpire&ip=88.149.149.68&id=o-AAThFTeAQep-xGWugoyVMNKy5nvpwHEJ1lOup41rmzqc&c=WEB&fvip=3&ratebypass=yes&signature=330AAC06D2770E3405834F022C90E7AD10D8FC92292.4E0E2C422454A5606FCDBC105CAB9760AD7E57E2E2'. Controlla il registro per i dettagli.
Lo stesso URL con MPV viene riprodotto senza problemi...
Qualche altro dettaglio:

Codice: Seleziona tutto

$ vlc --version
VLC media player 3.0.0 Vetinari (revision 3.0.0-30-gef4c265336)
VLC versione 3.0.0 Vetinari (3.0.0-30-gef4c265336)
Compilato da root su virtslack64-142.dyn.barrier.lan (Feb 14 2018 10:00:37)
Compilatore: gcc version 5.5.0 (GCC)
Questo programma viene fornito SENZA GARANZIA, per quanto consentito dalla legge.
Può essere ridistribuito secondo i termini della licenza GNU GPL;
per ulteriori informazioni, leggere il file COPYING.
Scritto dalla squadra di VideoLAN; vedere il file AUTHORS.

$ ls /var/log/packages/|grep vlc
npapi-vlc-20180209-x86_64-1alien
vlc-3.0.0-x86_64-2alien

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3789
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e live streaming

Messaggio da joe »

Qua nel frattempo vedo che il mio post è stato pubblicato:
https://alien.slackbook.org/blog/your-feedback/

Non so se Eric sia più conservativo e prediliga applicare la patch alla versione stabile ffmpeg-3.4.2, o se coglierà l'occasione per pacchettizzare direttamente la versione GIT già aggiustata, come diceva il buon rik.
Staremo a vedere, c'è anche la possibilità che non faccia nulla eh, e attenda l'uscita della nuova release stabile di ffmpeg... 8)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e live streaming

Messaggio da rik70 »

joe ha scritto:dopo un po', ma tipo dopo 20 secondi (non dopo 5 secondi come MPV) si chiudeva tutto, anche la finestra spariva...
Sì, è così anche da me con l'ultima versione di vlc (3.0.1). Il problema è che i flussi delle dirette sono divisi in segmenti di tot secondi e VLC - quando gli dai in pasto direttamente l'URL - è in grado di leggere solo il primo.
[Edit]O meglio: oltre un certo numero non riesce ad andare e restituisce

Codice: Seleziona tutto

[00007f280454f8e0] adaptive demux debug:  Segment #596180 url=https://r2---sn-upnj5appu5-j5bl.googlevideo.com/videoplayback/id/XOacA3RYrXk.3/itag/96/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D137/hls_chunk_host/r2---sn-upnj5appu5-j5bl.googlevideo.com/gcr/it/playlist_type/DVR/ei/S2rUWvvsL5mN1gKLiraQCA/initcwndbps/4810/mm/32/mn/sn-upnj5appu5-j5bl/ms/lv/mv/m/pl/18/keepalive/yes/mt/1523870174/ip/78.15.246.99/ipbits/0/expire/1523891883/sparams/ip,ipbits,expire,id,itag,source,requiressl,ratebypass,live,cmbypass,goi,sgoap,sgovp,hl stime 1198500 duration 500
[00007f2800005fb0] main input debug: EOF reached
[00007f2800005fb0] main input debug: waiting decoder fifos to empty
[00007f2800005fb0] main input debug: waiting decoder fifos to empty
[00007f2800005fb0] main input debug: waiting decoder fifos to empty
[00007f2800005fb0] main input debug: waiting decoder fifos to empty
[00007f2800005fb0] main input debug: waiting decoder fifos to empt

Qui la versione di ffmpeg evidentemente non aiuta. Se invece fosse un problema di traduzione degli indirizzi youtube, basterebbe aggiornare lo script lua interessato prendendolo che so... ...dal ramo 'master'.
Ad esempio, scarichi 'https://github.com/videolan/vlc/raw/mas ... outube.lua', lo compili con luac

Codice: Seleziona tutto

luac -o youtube.luac youtube.lua
ti fai un backup dell'originale e lo installi:

Codice: Seleziona tutto

mv -iv /usr/lib64/vlc/lua/playlist/youtube.luac /usr/lib64/vlc/lua/playlist/youtube.luac.old

install -v -m 0644 youtube.luac /usr/lib64/vlc/lua/playlist/
Ma non serve a nulla, perché il problema sembra risiedere altrove(demuxer o ??).
Se infatti dai:

Codice: Seleziona tutto

cvlc $(youtube-dl -q -g https://www.youtube.com/watch?v=XOacA3RYrXk)
il risultato non cambia.

Se però scrivi:

Codice: Seleziona tutto

cvlc $(youtube-dl -q -g https://www.youtube.com/watch?v=XOacA3RYrXk) --demux avformat
noterai che la riproduzione non s'interrompe, ma come si passa da un segmento a quello successivo c'è un pausa, come se si trattasse di una playlist.

Un comportamento analogo lo ottieni con mplayer:

Codice: Seleziona tutto

mplayer $(youtube-dl -q -g https://www.youtube.com/watch?v=XOacA3RYrXk) -demuxer lavf
Morale della favola: gli sviluppatori di MPV sembrano aver risolto tutti i problemi legati allo streaming live via http(ffmpeg permettendo) e se non ricordo male ne avevamo già parlato qui sul forum - avevano creato una patch apposita, ma è passato tanto tempo perché mi ricordi esattamente.

Infine - e chiudo - vedo che usi il pacchetto vlc di alienbob: a questo punto è meglio stare con le librerie ffmpeg statiche scelte per compilare quella versione e lasciare le dirette a MPV.
Se però trovi un'opzione funzionante da passare a mplayer/vlc, fai un fischio :thumbright:

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3789
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e live streaming

Messaggio da joe »

Eventualmente fischierò...
Sinceramente però ormai da tempo mi sono abituato ad MPV e non credo di avere occasione di fare tante prove con altri player. Conta che VLC l'ho installato proprio giusto per fare la prova del nove non l'ho compilato in locale, l'ho installato con slackpkg+ dal repo di AlienBob (restricted). Come facevi notare FFmpeg non c'entra in quanto il pacchetto vlc è compilato contro ffmpeg scelto da Eric staticamente, non contro quelle di sistema cui ho applicato la patch.
Nello slackbuild di VLC vedo che mette anche l'opzione attivabile di compilazione con shared libs invece di statiche. Quindi volendo si potrebbe vedere cosa succede ricompilandolo contro ffmpeg di sistema patchato. Ma il mio vecchio PC mal digerisce queste compilazioni che vanno per le lunghe, quindi per il momento passo, visto che tanto alla fine uso MPV.

Rispondi