J'ai Xubuntu 14.04. Le caméscope que j'utilise est le Sony CCD-TRV16 NTSC 180x Zoom numérique . J'utilise le Hauppauge 610 USB-Live 2 Analog Video Digitizer et Video Capture Device pour convertir des bandes 8 mm en mp4. J'utilise VLC pour convertir les vidéos.
Je vais convertir pas mal de cassettes. Ce serait bien d'avoir exactement les mêmes paramètres GUI VLC que j'utilise dans une commande ou un script. De plus, la possibilité de couper l'enregistrement après une certaine période serait formidable. Je me fiche du programme que j'utilise pour les convertir. Ce client a dit qu'il avait réussi à utiliser ffmpeg. Cependant, je suis d'accord avec l'utilisation de tout programme qui fonctionne. Merci d'avance!
Voici la sortie de ffmpeg -f v4l2 -i /dev/video0 -f alsa -i hw:2,0
.
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 8535.656468, bitrate: 165722 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 720x480, 165722 kb/s, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'hw:2,0':
Duration: N/A, start: 1450034548.361553, bitrate: 1536 kb/s
Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Lancez VLC avec vlc -vvv
. Cela active la verbosité sur 2 (debug)
. Cela peut également être vu dans l'interface graphique de VLC en allant à Tools> Messages. Suivez ensuite les étapes répertoriées ci-dessus dans les captures d'écran pour afficher les informations nécessaires pour la commande dans le journal de débogage. Ensuite, vous pouvez ajuster la syntaxe appropriée en consultant le script ci-dessous et en ligne. Vous pouvez également voir le code et la syntaxe en sélectionnant Afficher plus d'options. (La première capture d'écran de ma question ci-dessus.) Cependant, ce n'est que de cette façon que j'ai pu créer la commande cvlc ci-dessous. Vous pouvez simplement adapter le script ci-dessous à vos besoins.
Au départ, je n'ai pas réussi à faire fonctionner l'audio avec le seul port audio RCA de mon caméscope. J'ai corrigé cela en allant dans Outils> Préférences> Tous (bouton radio, en bas à gauche). Ensuite, je suis allé à Input/Codecs> Accéder aux modules> [~ # ~] alsa [~ # ~]. J'ai changé le Taux d'échantillonnage en 48000 Hz. Après avoir modifié ce paramètre, vous pourrez diffuser votre vidéo. Les autres taux d'échantillonnage provoquaient une erreur.
Allez dans Media> Open Capture Device. Sélectionnez Nom du périphérique vidéo et Nom du périphérique audio (notez que dans la capture d'écran ci-dessus, c'est par défaut parce que j'utilisais le port du microphone à la place. La vôtre sera différente si vous utilisez la connexion RCA sur votre appareil Hauppauge.) Sélectionnez NTSC (ou quel que soit le format de vos cassettes vidéo). Cliquez sur Lecture. Pendant la lecture, accédez à Outils> Informations sur le codec. Vous voudrez ajuster le script ci-dessous en fonction des informations qui y sont données. J'ai ajusté la fréquence d'images à 29,97 et la fréquence d'échantillonnage à 48000 Hz. dans mon script à cause des informations qui y sont données.
a. Vous êtes invité à saisir le nom de fichier et les métadonnées. Les fichiers sont configurés pour être enregistrés dans ~/Vidéos.
b. VLC (cvlc)
--foreground
Vous permet d'appuyer sur 'ctrl c', et elle arrêtera uniquement cette partie du script et passera à la partie suivante. (Certaines vidéos que j'ai sont plus courtes.)vcodec
et acodec
sont définis sur mpeg2
et mpga
. La page produit Amazon pour le Hauppauge 61 indique qu'il code pour MPEG-2.mux=ts
. Au départ, j'utilisais vcodec=h264
acodec=mpga
Et mux=mp4
. Cependant, il y avait des problèmes de synchronisation audio et le son tombait à certains endroits de la vidéo. Voir également la section mux =ici .samplerate=48000
Pour que cela fonctionne.mux=ts
Créera un fichier volumineux. Mes vidéos de deux heures font 5-7 Go.c. FFmpeg compresse davantage avec libx264 (d'environ 5 Go à environ 1,5 Go) et ajoute les métadonnées. Il y avait des notes manuscrites supplémentaires sur chaque bande de 8 mm et je voulais inclure ces informations supplémentaires dans le fichier. Dans la même commande, FFmpeg déplace le son du canal gauche de gauche uniquement vers les canaux gauche et droit en tant que copie de flux sans compression audio supplémentaire. Mon caméscope n'a qu'un seul port audio RCA. Cela corrige donc le problème d'un haut-parleur. Merci à mondaugen pour sa réponse sur le problème audio à un canal.
d. Enfin, vous êtes averti lorsque le script se termine. Pour mon script personnel, j'utilise en fait ce qui suit à la place.
Sur mon ordinateur:
exo-open --launch WebBrowser $HOME/Videos/video-finished.htm
Le fichier contient: <p style="font-size: 128px; color: green; font-family: sans; text-align: center; margin-top: 10%; font-weight: bold;">VIDEO FINISHED</p>
Sur mon téléphone: Vous pouvez installer gcalcli
pour recevoir une notification sur votre téléphone via Google Agenda lorsque le script est terminé. Ci-dessous, la date et l'heure de deux minutes dans le futur sont mises dans une variable. Ensuite, une entrée d'agenda est créée pour cette heure. Un rappel est défini pour le début de cet événement. Google Agenda a besoin d'un tampon de deux minutes. (J'ai essayé une minute.) Donc, vous seriez averti deux minutes après la fin de l'encodage.
new_date=`date --date="2min"`
gcalcli --calendar 'Name of Your Calendar' --title 'Video Finished' --where '' --when \'"$new_date"\' --duration 5 --description '' --reminder 0 add
Le résultat final produit le fichier .ts plus volumineux et un autre .mp4 compressé.
J'ai un processeur AMD A8-6500B. cvlc
fonctionne à environ 15% d'utilisation du processeur. Cependant, ffmpeg
fonctionnait à environ 97%. Par conséquent, dans mon script (pas dans celui ci-dessous), j'ai ajouté l'option -threads 3
Pour maintenir l'utilisation du processeur à 75%. Je peux le faire car mon processeur est quad core.
#!/bin/bash
# Name: Hauppauge 610 USB-Live 2 Analog Video Digitizer and Video Capture Device Conversion Script
# Author: jbrock
# Dependencies: VLC media player; ffmpeg, in Ubuntu you will need to add a ppa to install.
# License: GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
# Usage: Digitize analog tapes to .ts format. Then convert to mp4, add metadata, and make sound work on left and right channels.
# Enter the name of the file.
echo -n "Enter file name: "
read archivo
# This is for metadata. It will show up in the media player playlist or after clicking Properties (in OS X Info) on the file context.
echo -n "Enter a description: "
read comentarios
# Encode video and stop after 122 minutes. The foreground option allows you to hit 'ctrl c,' and it will only stop this portion of the script.
timeout --foreground 122m cvlc v4l2:///dev/video0 :input-slave=alsa://hw:2,0 :v4l2-standard=NTSC :live-caching=300 --sout '#transcode{vcodec=mpeg2,acodec=mpga,ab=128,channels=2,samplerate=48000,fps=29.97,deinterlace}:std{access=file{no-overwrite},mux=ts,dst='$HOME/Videos/$archivo.ts'}'
# Convert to H.264 to compress further, add in the metadata comments, and make output from the left speaker to both speakers.
ffmpeg -i $HOME/Videos/$archivo.ts -c:v libx264 -preset medium -crf 22 -metadata comment="$comentarios" -af "pan=mono|c0=FL" $HOME/Videos/$archivo.mp4
# Show the 'finished' message.
notify-send "VIDEO FINISHED"
ffmpeg
ffmpeg -f v4l2 -i /dev/video0 -f alsa -i default -t 02:02:00 \
-c:v libx264 -crf 23 -preset medium \
-c:a aac -strict experimental -ac 1 -b:a 96k \
-vf yadif,hqdn3d,format=yuv420p -movflags +faststart output.mp4
-t
est pour la durée. Cet exemple fera une sortie de 2 heures et 2 minutes.
Voir FFmpeg Wiki: H.264 Video Encoding Guide pour le x264 -crf
et -preset
Info.
yadif est un désentrelaceur. Vous devez tester les paramètres pour voir quel mode fonctionne le mieux pour votre contenu. Alternativement, vous pouvez essayer w3fdif .
hqdn3d est un débruiteur. Peut être utile si votre contenu est bruyant, mais trop de débruitage provoquera un flou évident et ce filtre peut être lent.
Le filtre format garantira un schéma de sous-échantillonnage chromatique largement compatible. Sinon, ffmpeg
supposera que vous voulez éviter ou minimiser le sous-échantillonnage de chrominance et la sortie risque de ne pas être lisible par des lecteurs non basés sur FFmpeg comme QuickTime.
-movflags +faststart
déplacera certaines données une fois l'encodage terminé de la fin du fichier au début. Cela permet à la lecture de commencer avant que le fichier ne soit complètement téléchargé si vos téléspectateurs regardent via un téléchargement progressif.
Vous pouvez ajouter -metadata title="Title"
et d'autres métadonnées si vous en avez envie.
Après avoir regardé la sortie et que vous souhaitez la couper, en vous débarrassant de toute vidéo vierge bleue ou noire par exemple, vous pouvez simplement recomposer sans recoder. Cela sautera les 10 premières secondes et fera une sortie de 600 secondes (10 minutes). Ce n'est peut-être pas l'image exacte, mais ce sera probablement assez proche.
ffmpeg -ss 10 -i input -c copy -t 600 output
J'utilisais également une variante de la méthode ffmpeg lorsque j'ai obtenu ce matériel pour la première fois, mais j'ai remarqué que le transcodage par défaut de vlc donnait de meilleurs résultats visuels sur mon système que ffmpeg, alors j'ai fait des gaffes avec la ligne de commande vlc (cvlc) et compris le ligne de commande pour demander ce que fait l'exemple GUI ci-dessus.
cvlc v4l2:///dev/video1:standard=NTSC :input-slave=alsa://hw:3,0 :live-caching=1000 --sout "#transcode{vcodec=h264,acodec=mpga,vb=3000,fps=29.97,ab=128,audio-sync,channels=2,deinterlace}:file{dst=rec122015.mp4,no-overwrite}" --sout-keep