J'essaie d'extraire une petite partie d'une vidéo plus grande sans changer les codecs, la résolution ou autre chose. Par conséquent, j'utilise FFmpeg avec les paramètres suivants.
ffmpeg -vcodec copy -acodec copy -ss 01:00:00 -t 00:00:30 -metadata title="Custom title" -metadata artist="Artist Name" -metadata language="English" -i input_file_h264.mp4 output_file.mp4
Je traite la vidéo sur Ubuntu 10.10. avec FFmpeg version 0.6-4: 0.6-2ubuntu6.2.
Le fichier de sortie contient les mêmes informations de codec que le fichier d'entrée. Bien que, il ouvre dans VLC et autre lecteur multimédia comme si la résolution de la vidéo changeait . La source d'entrée est livrée avec une résolution de 720x576. Le codec utilisé est H264 - MPEG-4 AVC (partie 10) (avc1). Lorsque la sortie vidéo s'ouvre semble plus large (16: 9) bien que les paramètres vidéo ne soient pas modifiés.
Je n'ai rien trouvé de tel que le format d'image mal configuré dans VLC également.
Connaissez-vous un problème avec H264 sur Ubuntu? Autant que je sache, libx264 est utilisé. Mais est-ce pertinent lorsque je découpe une vidéo en tranches?
- Voici la fichier vidéo d'entrée (876MB).
- Voici la Sortie FFmpeg .
- Voici la fichier vidéo de sortie (1,4 Mo).
Comme suggéré par slhck, j'ai changé l'ordre des arguments.
ffmpeg -ss 01:00:00 -i 28c3-4906-en-lightning_talks_day_3_pecha_kucha_h264.mp4 -vcodec copy -acodec copy -t 00:00:30 output_file_slhck.mp4
- Voici le correspondant Sortie FFmpeg .
Réponses:
Vous ne copiez pas vraiment le flux vidéo.
Fournir le
acodec
etvcodec
options après lai
option. Pensez simplement à la façon dont vous les traiteriez. Commencez par lire le fichier, puis décidez comment encoder, puis affichez-le. Si vous ne le faites pas, les options seront analysées différemment 1 , ce qui expliquerait la différence entre entrée et sortie en fonction de votre journal:Notez la différence de format d'image (PAR)? Actuellement, vous essayez de décoder la vidéo avec le
copy
codec, qui n'existe évidemment pas. Le placement des options dans FFmpeg est parfois très important. 2C’est aussi ce que dit le manuel:
Donc, pour résumer - métadonnées laissées de côté pour la lisibilité
1 - Avec les versions plus récentes de FFmpeg, la commande aurait échoué car un
copy
le décodeur n'existe pas.2 - Placez également le
t
option après le processus de codage, et laisserss
au début. En mettantss
au début, veille à ce que le fichier soit lu jusqu'au moment voulu, puis commence à encoder. Si vous deviez placerss
aprèsi
, qui encoderait le fichier depuis le début, ce qui pourrait prendre beaucoup de temps.la source
vcodec
ouacodec
options avanti
résultats dans leUnknown decoder 'copy'
erreur parce qu'il essaie de décoder le fichier d'entrée avec cela, pas encoder le fichier de sortie. Veuillez mettre à jour votre version de FFmpeg et réessayer!-codec
option: & gt; Sélectionnez un encodeur (lorsqu'il est utilisé avant un fichier de sortie) ou un décodeur (lorsqu'il est utilisé avant un fichier d'entrée) pour un ou plusieurs flux .vcodec copy
à la bonne position, la vidéo (et son rapport de format) devrait rester intacte. Si vous avez toujours des problèmes, veuillez annexer le résultat de la nouvelle commande à votre question. Vous pouvez ajuster manuellement le rapport de format avec le-aspect
option (voir le manuel d'utilisation).