
Il Trac FFmpeg Bug Tracker è la piattaforma web centrale utilizzata dal progetto FFmpeg per gestire le anomalie del software, coordinare lo sviluppo e mantenere la documentazione tecnica.
In sintesi, serve a cinque scopi fondamentali:
-
Segnalazione e tracciamento dei bug (Bug Tracking)
Consente agli utenti e agli sviluppatori di registrare problemi tecnici — come crash, errori di memoria, mancata sincronizzazione audio/video o artefatti visivi — fornendo i log e i campioni multimediali necessari a riprodurli.
-
Richiesta di nuove funzionalità (Feature Requests)
Fornisce un canale ufficiale per proporre l'aggiunta di nuovi codec, filtri multimediali, demuxer o nuove opzioni per la riga di comando (
ffmpegeffprobe). -
Isolamento delle regressioni
Aiuta a identificare i casi in cui un comando che funzionava nelle versioni precedenti smette di funzionare a causa di modifiche recenti al codice, facilitando la ricerca del commit responsabile.
-
Archivio storico e trasparenza
Mantiene uno storico pubblico dei problemi noti e risolti. Quando un bug viene corretto, il relativo ticket viene collegato al commit Git corrispondente, evitando che più sviluppatori lavorino sugli stessi problemi senza coordinamento.
-
Knowledge Base e Wiki ufficiale
Oltre alla gestione dei ticket, ospita la wiki con guide pratiche alla compilazione (su Linux, Windows e macOS), raccomandazioni per l'ottimizzazione dei codec (H.264, AV1, NVENC) ed esempi avanzati di filtri.
Ecco la differenza pratica tra un report destinato all'archiviazione immediata come invalid e un report valido e pronto per essere preso in carico dagli sviluppatori di FFmpeg.
❌ Esempio di Report INCOMPLETO (Invalido)
Un report di questo tipo viene solitamente chiuso senza essere analizzato:
Summary: FFmpeg crasha durante la conversione MP4
Description: Ho provato a convertire un video MP4 e si chiude da solo dando errore.
Comando usato:
ffmpeg -i video.mp4 output.mkvLog:
Segmentation fault (core dumped)
Perché è invalido?
-
Mancano le informazioni di build: Non si conosce la versione di FFmpeg, né i flag di configurazione né il sistema operativo.
-
Versione non verificata: Non c'è prova che il bug persista sull'ultima versione Git
master. -
Log incompleto: Manca l'intero output del terminale (il cosiddetto "banner" e la catena dei filtri/codec caricati).
-
Nessun file campione: Gli sviluppatori non hanno modo di riprodurre il problema.
✅ Esempio di Report COMPLETO (Valido)
Ecco la struttura corretta da inserire nel modulo di Trac:
Campi del Ticket:
-
Summary:
[ffmpeg/libavcodec] Crash (Segmentation Fault) in h264_decode_frame during decode on git-master -
Type:
defect -
Component:
avcodec -
Version:
git-master
Descrizione del Report:
Plaintext
### Descrizione del problema
Eseguendo la decodifica dell'allegato 'sample_crash.mp4', il processo fallisce
con Segmentation Fault durante l'inizializzazione del decoder H.264.
Il problema è riproducibile al 100% sull'ultimo commit git master (hash 3a1b2c4).
### Ambiente
- SO: Ubuntu 24.04 LTS (x86_64)
- CPU: AMD Ryzen 7 5800X
- Versione FFmpeg: git-master (compilato con simboli di debug `ffmpeg_g`)
### File di esempio
Il file 'sample_crash.mp4' (1.2 MB) è stato caricato direttamente in allegato al ticket.
### Comando esatto
ffmpeg -v 9 -loglevel 99 -i sample_crash.mp4 -f null -
### Output completo ed integro del terminale
ffmpeg version N-115000-g3a1b2c4 Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 13 (Ubuntu 13.2.0-23ubuntu4)
configuration: --enable-gpl --enable-libx264 --enable-nonfree --enable-debug=3
libavutil 59. 15.100 / 59. 15.100
libavcodec 61. 20.100 / 61. 20.100
libavformat 61. 10.100 / 61. 10.100
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.100 / 10. 2.100
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
Splitting the command line.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-i' ... matched as input url with argument 'sample_crash.mp4'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'null'.
Reading option '-' ... matched as output url with argument '-'.
...
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x555555e82000] Format mov,mp4,m4a,3gp,3g2,mj2 detected binary score 100
[h264 @ 0x555555e8a400] Reinit context to 1920x1080, pix_fmt: yuv420p
Segmentation fault (core dumped)
### Backtrace da GDB (eseguito con ffmpeg_g)
(gdb) run -i sample_crash.mp4 -f null -
Thread 1 "ffmpeg_g" received signal SIGSEGV, Segmentation fault.
0x0000000000401234 in h264_decode_frame (avctx=0x555555e8a400, data=0x7fffffffdf00, ...) at libavcodec/h264dec.c:1024
1024 slice_header->pps = pps_list[slice_header->pps_id];
(gdb) bt
#0 0x0000000000401234 in h264_decode_frame (avctx=0x555555e8a400, data=0x7fffffffdf00, ...) at libavcodec/h264dec.c:1024
#1 0x0000000000505678 in decode_simple_internal (...) at libavcodec/decode.c:450
#2 0x0000000000402111 in main (argc=6, argv=0x7fffffffe108) at fftools/ffmpeg.c:1200
Regole d'oro per evitare che il ticket venga rifiutato
-
Non tagliare MAI il log iniziale: Le righe che mostrano
configuration:e la versione esatta delle librerie (libavcodec,libavformat, ecc.) sono fondamentali. -
Usa
-f null -se isoli il problema: Se stai testando una decodifica, manda l'output a-f null -per escludere che il problema sia l'encoder o la scrittura sul disco. -
Usa
ffmpeg_gper i crash: Se stai compilando dai sorgenti, esegui il debugger sul binario non strippatoffmpeg_ganziché sul normaleffmpeg, altrimenti il backtrace non mostrerà le linee di codice sorgente.
Nessun commento:
Posta un commento
Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti.