web-dev-qa-db-fra.com

Comment couper un fichier audio avec avconv?

J'ai du mal à comprendre comment couper un fichier avec avconv. Voici la commande que j'utilise:

avconv -ss 52:13:49 -t 01:13:52 -i RR119Accessibility.wav RR119Accessibility-2.wav 

Mais ça ne marche pas. Je reçois le fichier entier à la suite. Eh bien, presque tout le fichier. D'une manière ou d'une autre, le fichier résultant a la durée 1:16:31 au lieu de 1:17:23. Je crois aussi que j'ai exécuté cette commande de toutes les manières possibles: avec -ss et -t après -i, avec -t en spécifiant le point de fin, avec des fichiers mp3, en spécifiant le codec audio, avec ffmpeg. Est-ce que je me trompe?

UPD Merci à bodhi.zazen cela fonctionne (j'ai corrigé le décalage et la durée signalés par mp3splt-gtk, ils se sont trompés pour une raison ou une autre, et l'objectif était de couper les mp3 fichier)

avconv -i RR119Accessibility.mp3 -ss 00:52:08 -t 00:01:08 RR119Accessibility-2.mp3

Mais cela ne veut pas:

avconv -ss 00:52:08 -t 00:01:08 -i RR119Accessibility.mp3 RR119Accessibility-2.mp3

Le fichier résultant commence à 00:52:08 et va jusqu'à la fin du fichier d'origine. Je pensais que -ss et -t étaient liés au fichier d'entrée si spécifié avant -i. Et pour produire le fichier autrement. Quelqu'un pourrait-il expliquer cela?

7
x-yuri

Je pense que le problème initial était avec la mise en forme de votre horodatage.

Le format est HH: MM: SS

Je ne suis pas sûr de comprendre votre question sur l’ordre des options. Je ne pense pas que cela soit important tant que -i est suivi du nom du fichier d'entrée et -ss HH: MM: SS suivi de -t HH: MM: SS

Le -ss HH: MM: SS est le point de départ et -t HH: MM: SS est la durée.

so -ss 00:01:00 -t 00:05:00 commencerait à la minute une minute et durerait 5 minutes.

Sur mon système, en utilisant ffmpeg, l'ordre n'a pas d'importance (vous pouvez spécifier l'heure ou le fichier d'entrée dans n'importe quel ordre tant que -ss est suivi de la durée (-t))

8
Panther

Le problème vient de la signification différente de -ss selon l'endroit où il se trouve dans la ligne de commande. C'est un report du temps où avconv faisait toujours partie du projet ffmpeg, et je crois qu'il est corrigé dans les versions les plus récentes.

Dans les temps anciens, si vous disiez quelque chose comme

 ffmpeg -ss 5 -i input

Ce que vous vouliez dire était "passez à la note 5 secondes du fichier et commencez à lire à cet endroit".

Mais si tu disais

ffmpeg -i input -ss 5

Vous vouliez dire "ouvrez le fichier d'entrée et sautez toutes les données jusqu'à la marque des cinq secondes".

Comme vous pouvez le comprendre, la première approche échouera assez souvent, car vous sautez un fichier sans le lire. Cela ne fonctionne bien que sur les fichiers contenant des horodatages, ce qui vous permet de lire le cadre et de savoir si vous êtes déjà allé trop loin ou non.

En gros, ffmpeg fonctionnait comme suit: "Devinez le débit binaire dès la première seconde, puis supposez que toutes les autres secondes sont identiques". Mais bien sûr, toutes les secondes ne sont pas identiques, et si nous parlons de 52 heures de "dérive", l’erreur peut être assez importante.

Donc, si vous utilisez la version post-split d’avconv, vous devez toujours mettre -ss après le fichier en cours de lecture. Mais dans les versions les plus récentes (à ma connaissance), ce bogue a été corrigé.

2
v010dya

Essayer:

avconv -i RR119Accessibility.wav -ss 52:13:49 -t 01:13:52 RR119Accessibility-2.wav

Les options de ffmpeg et avconv sont sensibles à la position.

Dans votre exemple, ffmpeg commence à lire le fichier et commence à sortir de timestamp -ss
(ce que ffmpeg fait bien sur mon système et qu'avconv ne fait pas, appelez ça une régression).

Dans l'exemple que j'ai donné ici, avconv (ou ffmpeg d'ailleurs) cherche d'abord le décalage correct, puis commence à lire et à afficher. Cela fonctionne pour les deux.

Vous pouvez trouver plus de documentation sur avconv sur http://libav.org Ces gars-là ont lancé ffmpeg et sont également responsables de la très ancienne version de ffmpeg dans Ubuntu.

Le REAL ffmpeg ne se trouve pas dans les référentiels d'ubuntu mais dans un PPA:
ppa: jon-severinsson/ffmpeg
Vous pouvez trouver plus de documentation sur ffmpeg sur http://ffmpeg.org

Considérez les pages de manuel obsolètes

0
thom