Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/03/2017, à 13:10

Jarodd

[Résolu] Couper une vidéo m2ts

Bonjour,

Je cherche une solution pour couper le début et la fin d'une vidéo au format m2ts (ubuntu 16.04).
J'ai essayé avec Avidemux, mais à chaque tentative de sauvegarde le programme crashe, je ne sais pas pourquoi.
C'est le seul programme "valable" que je connais pour faire ça. Quel autre conseillez-vous ? (pas trop compliqué à utiliser)

Merci pour vos conseils.

Edit : résolu, voir posts #3 et 4

Dernière modification par Jarodd (Le 15/03/2017, à 12:52)


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#2 Le 14/03/2017, à 15:10

Lulux3

Re : [Résolu] Couper une vidéo m2ts

As-tu essayé TSMuxer?

Hors ligne

#3 Le 14/03/2017, à 22:19

grigouille

Re : [Résolu] Couper une vidéo m2ts

Tu repères le début et la fin de ta vidéo avec vlc par exemple.
Supposons que tu veuilles garder la plage entre 12:23 et 01:31:02
Ensuite :

ffmpeg -i ta_video.m2ts -map 0 -ss 12:23 -to 01:31:02 -c copy output.m2ts 

Si tu veux un mkv à la fin, tu mets output.mkv au lieu de output.m2ts


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#4 Le 15/03/2017, à 09:53

Jarodd

Re : [Résolu] Couper une vidéo m2ts

@Lulux3 : je n'ai pas trouvé TSMuxer dans les dépôts. Il a un autre nom ?

@grigouille : mais c'est bien sûr ! Je n'avais pas pensé à la commande directe. Merci cela a fonctionné !

ffmpeg fait automatiquement la conversion si on indique un autre format de sortie ?

Par contre j'ai consulté le man et je n'ai pas compris l'option -map, tu peux l'expliquer stp ?

man ffmpeg a écrit :

-map
       [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]] |
       [linklabel] (output)
           Designate one or more input streams as a source for the output
           file. Each input stream is identified by the input file index
           input_file_id and the input stream index input_stream_id within the
           input file. Both indices start at 0. If specified,
           sync_file_id:stream_specifier sets which input stream is used as a
           presentation sync reference.

           The first "-map" option on the command line specifies the source
           for output stream 0, the second "-map" option specifies the source
           for output stream 1, etc.

           A "-" character before the stream identifier creates a "negative"
           mapping.  It disables matching streams from already created
           mappings.

Edit : je viens de voir qu'il y a aussi l'option -t pour exprimer la durée (et non le moment de fin de la vidéo). Ca peut être utile si on a plusieurs vidéos à couper et qu'elles ont toutes la même durée smile

Dans ton exemple cela donnerait (si mes calculs sont bons) :

ffmpeg -i ta_video.m2ts -map 0 -ss 12:23 -t 01:18:39 -c copy output.m2ts 

Dernière modification par Jarodd (Le 15/03/2017, à 10:02)


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#5 Le 15/03/2017, à 19:42

Lulux3

Re : [Résolu] Couper une vidéo m2ts

Bonsoir
pour TSMuxer: c'est ici: https://doc.ubuntu-fr.org/tsmuxer
Merci à grigouille: je pensais que le format m2ts n'était pas supporté par ffmpeg. C'est bon à savoir.
La conversion se fait automatiquement en fonction de l'extension du fichier de sortie, mais tu peux aussi la forcer en utilisant l'option "-f".
La fonction -map permet de sélectionner une ou plusieurs pistes, par exemple:
-map 0 selectionne toutes les pistes du premier fichier d'entrée
-map 0:a seléctionne toutes les pistes audio (v pourvidéo, s pour soustitres) du premier fichier d'entrée
-map 0:0 sélectionne la première piste du premier fichier d'entrée
plus d'infos: http://ffmpeg.org/ffmpeg.html#Advanced-options
Petite astuce pour les fonctions -ss, et -t : si tu les mets avant le fichier d'entrée (option -i), tu évites le décodage des parties coupées, ce qui peut faire gagner quelques secondes.
Bonne soirée

Hors ligne

#6 Le 15/03/2017, à 23:02

grigouille

Re : [Résolu] Couper une vidéo m2ts

Lulux3 a écrit :

Petite astuce pour les fonctions -ss, et -t : si tu les mets avant le fichier d'entrée (option -i), tu évites le décodage des parties coupées, ce qui peut faire gagner quelques secondes.

Merci pour l'explication. L'explication dans le man n'est pas aussi clair.

J'utilise cette commande pour couper les pubs big_smile.


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#7 Le 16/03/2017, à 10:36

Jarodd

Re : [Résolu] Couper une vidéo m2ts

Super, merci pour les explications !

J'ai un paquet de lignes rouges au début de la conversion. Même si le fichier obtenu est bon, je voudrais comprendre ce que cela signifie, si tu sais smile

$ ffmpeg -i 09.m2ts -vcodec copy -acodec copy -ss 00:03:32 -t 00:23:03 09.avi
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
  configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab --enable-libwavpack --enable-nvenc
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[aac @ 0x3187c00] element type mismatch 1 != 0
[aac @ 0x3186a40] Sample rate index in program config element does not match the sample rate index configured by the container.
[aac @ 0x3186a40] decode_pce: Input buffer exhausted before END element found
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[aac @ 0x3186a40] Assuming an incorrectly encoded 7.1 channel layout instead of a spec-compliant 7.1(wide) layout, use -strict 1 to decode according to the specification instead.
[aac @ 0x3186a40] channel element 3.2 is not allocated
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] SPS unavailable in decode_picture_timing
[h264 @ 0x31846c0] non-existing PPS 0 referenced
[h264 @ 0x31846c0] decode_slice_header error
[h264 @ 0x31846c0] no frame!
[aac @ 0x3186a40] Multiple frames in a packet.
[aac @ 0x3186a40] Sample rate index in program config element does not match the sample rate index configured by the container.
[aac @ 0x3186a40] Inconsistent channel configuration.
[aac @ 0x3186a40] get_buffer() failed
[mpegts @ 0x317fd80] PES packet size mismatch

Les lignes en rouge sont celles qui commencent par "[h264 @ 0x31846c0]"
Les lignes en jaune sont celles qui commencent par "[aac @ 0x3186a40]"

Merci :*


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#8 Le 16/03/2017, à 15:17

Lulux3

Re : [Résolu] Couper une vidéo m2ts

Salut
Les lignes rouges et jaunes sont sûrement dues à des erreurs dans le fichier d'entrée, ce qui arrive assez souvent avec les fichiers enregistrés à partir de la TNT ou de l'ADSL.
S'il y a trop d'erreurs, cela peut avoir pour conséquence un décalage son / image.
Dans ce cas, utilise plutôt TSMuxer, qui est capable de corriger en partie ces erreurs.

Hors ligne

#9 Le 16/03/2017, à 15:33

Jarodd

Re : [Résolu] Couper une vidéo m2ts

Ok, merci smile


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#10 Le 16/03/2017, à 18:09

Jarodd

Re : [Résolu] Couper une vidéo m2ts

J'ai essayé TSMuxer, mais je n'arrive pas à paramétrer le format de sortie. Je voudrais un avi (ou autre format lisible par la box). Or il n'y a comme choix que :
* TS Muxing (qui crée des fichiers avec extensions .track_320.264, .track_330.aac, .track_331.aac, .track_332.aac)
* m2ts muxing (format non géré par la box)
* Bluray ISO
* bluray folder
* AVCHD folder
* Demux

Il y a moyen d'obtenir un avi ? (c'est vrai que c'était pas dans les prérequis de départ)


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#11 Le 16/03/2017, à 23:06

grigouille

Re : [Résolu] Couper une vidéo m2ts

Demande à ffmpeg un fichier avi ! Il suffit de donner l'extension .avi à ton fichier de sortie.


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#12 Le 16/03/2017, à 23:53

Lulux3

Re : [Résolu] Couper une vidéo m2ts

Ou alors change de box big_smile
Juste pour un test, essaie de repasser ton nouveau m2ts issu de TSMuxer dans ffmpeg, pour voir si les erreurs sont toujours là, et accessoirement remuxer en avi ou mkv par exemple.

Hors ligne

#13 Le 17/03/2017, à 13:06

Jarodd

Re : [Résolu] Couper une vidéo m2ts

Non mais ffmpeg marche super (j'ai mis en résolu), c'est pas la question. Je voulais essayer TSMuxer pour enlever ces erreurs. Je n'ai pas encore essayé les fichiers de sortie sur plusieurs lecteurs, je voudrais être sûr que ça passe partout.

remuxer en avi ou mkv -> c'était ma question, je n'ai ces formats dans la fenêtre output.


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#14 Le 17/03/2017, à 17:07

Lulux3

Re : [Résolu] Couper une vidéo m2ts

Je confirme. TSMuxer, comme son nom l'indique ne fait que "muxer" ou "démuxer" les différentes variantes de conteneurs "TS".
Au passage, il semblerait qu'il corrige également certaines erreurs.
Donc si tu veux corriger les erreurs et obtenir un avi ou un mkv, il te faudra passer d'abord par TSMuxer (correction d'erreurs et coupe des pubs), puis repasser par ffmpeg (par exemple) pour obtenir le format souhaité.
Tu peux aussi essayer Handbrake (qui sort du mp4 et du mkv, mais pas d'avi), ou MKVToolNix, qui ne fait que du mkv. Les deux ont une interface graphique.
Handbrake gère les "cuttings", mais oblige à réencoder la vidéo (plus lent et risque de perte de qualité, mais devrait éliminer certaines erreurs)
MkvToolnix gère très bien les métadata des pistes, ainsi que les décalages temporels, mais le GUI ne permet pas le "cutting'.

Hors ligne

#15 Le 17/03/2017, à 17:08

Jarodd

Re : [Résolu] Couper une vidéo m2ts

Ok je comprends mieux. Merci smile


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#16 Le 31/03/2017, à 05:32

kykyou

Re : [Résolu] Couper une vidéo m2ts

grigouille a écrit :

Tu repères le début et la fin de ta vidéo avec vlc par exemple.
Supposons que tu veuilles garder la plage entre 12:23 et 01:31:02
Ensuite :

ffmpeg -i ta_video.m2ts -map 0 -ss 12:23 -to 01:31:02 -c copy output.m2ts 

Si tu veux un mkv à la fin, tu mets output.mkv au lieu de output.m2ts

merci gribouille ! grâce a toi j'ai trouvé la solution a mon probleme !!
avec

for f in *.mp4
do
    mencoder "$f" -ss 399 -endpos 93 -ovc copy -oac mp3lame -lameopts br=128:q=9:aq=9:cbr:mode=1 -o fredux."$f"
done

- Je voulais découper une tranche bien définie 1:39 min sur une vidéo en partant d'un endroit précis 6:35 min ... sauf que avidemux marche mal ..
- Alors que : rien de mieux qu'un bon vieux terminal
- Tout cela dans un fichier .sh auquel j'ai donner les droit d'exécution ....
- ensuite je le met là ou je veux découper mon (mes) fichier et clique deux fois dessus .. pratique pour découper plusieurs fichier
PS : dans mon script .sh ils se renomme :
fredux.<nom.du.fichier>.mp4 pour ne pas perdre les originaux

Dernière modification par kykyou (Le 31/03/2017, à 05:40)

Hors ligne

#17 Le 31/03/2017, à 16:13

Jarodd

Re : [Résolu] Couper une vidéo m2ts

Ah j'aurais bien eu besoin d'un tel script hier ! J'avais mes vidéos en m2ts mais elles ne passent pas sous ma vieille tablette, donc je les ai convervi en mp4... une par une big_smile


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#18 Le 02/04/2017, à 12:46

Jarodd

Re : [Résolu] Couper une vidéo m2ts

Hello,

J'ai encore une question pour ces histoires de format. Mes parents ont un lecteur DVD portable, qui ne veut pas lire les fichiers que j'ai coupés. On a essayé m2ts, avi, mp4.
Apparemment ils ont réussi à lire un fichier .mpg.
Or avec ffmpeg si je convertis mes fichiers en mpg, je n'ai pas le son, voici la commande que je lance :

ffmpeg -i fichier.m2ts -vcodec copy -acodec copy -ss 00:04:07.000 -t 00:23:02.280 fichier.mpg

Je ne comprends pas grand-chose avec tous ces formats vidéo, que faudrait-il que je fasse pour avoir un fichier mpg avec du son ?
Peut-être qu'il faudrait changer l'option de -vcodec ? Mais même avec le "man" je ne sais pas quoi faire...

Merci pour votre aide.


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#19 Le 02/04/2017, à 14:20

Lulux3

Re : [Résolu] Couper une vidéo m2ts

Bonjour
Le format mpg date de l'époque des DVD. Il s'agit d'un conteneur, mais il n'accepte que certains formats audio et vidéo relativement anciens.
Si ta piste audio est aac par exemple, il ne la reconnaîtra pas. Il faut donc réencoder le son avec un codec qu'il connaît par exemple mp2, ce qui donnerait donc:

ffmpeg -i fichier.m2ts -vcodec copy -acodec mp2 -ss 00:04:07.000 -t 00:23:02.280 fichier.mpg

Si tu as l'image, y compris sur le lecteur DVD, c'est que ton codec vidéo convient, donc inutile de modifier l'option -vcodec.
Sinon, il faudrait passer en mpeg2vidéo, et au besoin réduire la résolution à 720x576 maxi:

ffmpeg -i fichier.m2ts -vcodec mpeg2video [-dstw (maxi:720) -dsth (maxi:576)] -acodec mp2 -ss 00:04:07.000 -t 00:23:02.280 fichier.mpg

Mais rapelle-toi que les réencodages génèrent des pertes de qualité, donc le résultat risque d'être décevant...

Hors ligne

#20 Le 02/04/2017, à 15:09

Jarodd

Re : [Résolu] Couper une vidéo m2ts

Merci, avec le codec audio mp2 ça fonctionne, et ce n'est pas dégueu !
Y'a plus qu'à le tester sur le vieux lecteur smile


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne