Dans cet article, nous allons apprendre quelques commandes courantes pour convertir et de manipuler les caractéristiques spécifiques des fichiers multimédias. Bien que nous ayons essayé de présentent des opérations équivalentes pour toutes les procédures, mais pas toutes les opérations possibles dans les deux applications.
Dans de nombreux cas, les commandes que nous montrons peuvent être combinées dans une seule commande opération de ligne de commande et sont lorsqu'elles sont effectivement utilisées. Par exemple, il n'y a rien vous empêchant de définir le débit d'un fichier de sortie lors de la même opération que une conversion de fichier. Dans le cadre de cet article, ces opérations sont souvent présentées comme des opérations distinctes. commandes par souci de clarté.
La conversion est effectuée à l'aide des applications suivantes:
Caractéristiques d'affichage
Shaka Packager et FFmpeg peuvent tous deux être utilisés pour inspecter le contenu d'un contenu multimédia puis afficher les caractéristiques d'un flux. Cependant, les deux fournissent une sortie différente pour le même support.
Caractéristiques de Shaka Packager
packager input=glocken.mp4 --dump_stream_info
Le résultat ressemble à ceci:
File "glocken.mp4":
Found 2 stream(s).
Stream [0] type: Video
codec_string: avc1.640028
time_scale: 30000
duration: 300300 (10.0 seconds)
is_encrypted: false
codec: H264
width: 1920
height: 1080
pixel_aspect_ratio: 1:1
trick_play_factor: 0
nalu_length_size: 4
Stream [1] type: Audio
codec_string: mp4a.40.2
time_scale: 48000
duration: 481280 (10.0 seconds)
is_encrypted: false
codec: AAC
sample_bits: 16
num_channels: 2
sampling_frequency: 48000
language: eng
seek_preroll_ns: 20833
Caractéristiques utilisant FFmpeg
ffmpeg -i glocken.mp4
Le résultat ressemble à ceci:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'glocken.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.83.100
Duration: 00:00:10.03, start: 0.000000, bitrate: 8063 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080, 7939 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name : SoundHandler
At least one output file must be specified
Démux (séparer) les flux audio et vidéo
Shaka Packager nécessite un démuxation lors de la conversion des fichiers. Ce champ est également obligatoire d'utilisation des cadres multimédias.
Démuxation de Shaka Packager
MP4
packager input=myvideo.mp4,stream=video,output=myvideo_video.mp4
packager input=myvideo.mp4,stream=audio,output=myvideo_audio.m4a
soit :
packager \
input=myvideo.mp4,stream=video,output=myvideo_video.mp4 \
input=myvideo.mp4,stream=audio,output=myvideo_audio.m4a
WebM
packager \
input=myvideo.webm,stream=video,output=myvideo_video.webm \
input=myvideo.webm,stream=audio,output=myvideo_audio.webm
Démuxation FFmpeg
MP4
ffmpeg -i myvideo.mp4 -vcodec copy -an myvideo_video.mp4
ffmpeg -i myvideo.mp4 -acodec copy -vn myvideo_audio.m4a
WebM
ffmpeg -i myvideo.webm -vcodec copy -an myvideo_video.webm
ffmpeg -i myvideo.webm -acodec copy -vn myvideo_audio.webm
Remux (combiner) les flux audio et vidéo
Dans certains cas, vous devrez combiner à nouveau l'audio et la vidéo en un seul conteneur. en particulier lorsque vous n'utilisez pas de cadre multimédia. C'est quelque chose de FFmpeg peut très bien gérer et c'est quelque chose que Shaka Packager ne prend actuellement pas en charge.
ffmpeg -i myvideo_video.webm -i myvideo_audio.webm -c copy myvideo.webm
Modifier les caractéristiques
Débit
Pour FFmpeg, nous pouvons le faire lors de la conversion en .mp4
ou .webm
.
ffmpeg -i myvideo.mov -b:v 350K myvideo.mp4
ffmpeg -i myvideo.mov -vf setsar=1:1 -b:v 350K myvideo.webm
Dimensions (résolution)
ffmpeg -i myvideo.webm -s 1920x1080 myvideo_1920x1080.webm
File type
Shaka Packager ne peut pas traiter les fichiers .mov
et ne peut donc pas être utilisé pour convertir
de ce format.
De .mov
à .mp4
ffmpeg -i myvideo.mov myvideo.mp4
De .mov
à .webm
ffmpeg -i myvideo.mov myvideo.webm
Synchroniser l'audio et la vidéo
Pour vous assurer que l'audio et la vidéo sont synchronisés pendant la lecture, insérez des images clés.
ffmpeg -i myvideo.mp4 -keyint_min 150 -g 150 -f webm -vf setsar=1:1 out.webm
MP4/H.264
ffmpeg -i myvideo.mp4 -c:v libx264 -c:a copy myvideo.mp4
Audio pour MP4
ffmpeg -i myvideo.mp4 -c:v copy -c:a aac myvideo.mp4
WebM/VP9
ffmpeg -i myvideo.webm -v:c libvpx-vp9 -v:a copy myvideo.webm
Audio pour un WebM
ffmpeg -i myvideo.webm -v:c copy -v:a libvorbis myvideo.webm
ffmpeg -i myvideo.webm -v:c copy -v:a libopus myvideo.webm
Vidéo à la demande et diffusion en direct
Il existe deux types de protocoles de streaming que nous allons démontrer dans ce . La première est la diffusion adaptative dynamique sur HTTP (DASH), de streaming à débit adaptatif et une méthode basée sur des normes Web de la vidéo à la demande. Le protocole HTTP Live Streaming (HLS), La norme d'Apple pour le streaming en direct et la vidéo à la demande pour le Web
DASH/MPD
Cet exemple génère le fichier de sortie Media Presentation Description (MPD) à partir des flux audio et vidéo.
packager \
input=myvideo.mp4,stream=audio,output=myvideo_audio.mp4 \
input=myvideo.mp4,stream=video,output=myvideo_video.mp4 \
--mpd_output myvideo_vod.mpd
HLS
Ces exemples génèrent un fichier de sortie M3U8
à partir des flux audio et vidéo,
qui est une playlist multimédia
codée en UTF-8.
ffmpeg -i myvideo.mp4 -c:a copy -b:v 8M -c:v copy -f hls \
-hls_time 10 -hls_list_size 0 myvideo.m3u8
OU :
packager \
'input=myvideo.mp4,stream=video,segment_template=output$Number$.ts,playlist_name=video_playlist.m3u8' \
'input=myvideo.mp4,stream=audio,segment_template=output_audio$Number$.ts,playlist_name=audio_playlist.m3u8,hls_group_id=audio,hls_name=ENGLISH' \
--hls_master_playlist_output="master_playlist.m3u8"
Maintenant que nous avons bien compris comment convertir des fichiers, nous pouvons nous appuyer sur ce que nous avons appris dans cet article Ensuite, chiffrement multimédia.