[FFmpeg-user] Extract audio from video and use one frame as cover image

Gyan Doshi ffmpeg at gyani.pro
Fri Jan 8 06:18:54 EET 2021



On 08-01-2021 06:37, Bernhard Döbler wrote:
> Hi,
>
> I saw, today, FFMpeg, finally, allows for embedding a single image as 
> cover image into an .M4A file using the "-disposition:v:1 
> attached_pic" argument as explained in an answer on StackOverflow: 
> https://stackoverflow.com/a/61015965/577052
>
> This works very well, when I convert a .FLAC file, that already has 
> one single frame embedded as cover, to .M4A using a command line like
> ffmpeg.exe -y -i "e:\01. Music.flac" -c:a aac -q:a 2 -c:v mjpeg -q:v 2 
> -disposition:v:0 attached_pic -movflags +faststart "e:\01. Music.m4a"
>
> I have video files. I want to extract the audio and use one single 
> frame from the video track as cover image.
> The command line looks like this
> ffmpeg.exe -y -i "e:\01. Video.mp4" -filter:v 
> "select=between(145\,prev_pts*TB\,pts*TB)" -frames:v 1 -c:a copy -c:v 
> mjpeg -q:v 2 -disposition:v:0 attached_pic "e:\01. Audio.m4a"
>
> This is supposed to embed a frame from around second 145 as cover image.
> The issue is that the whole processing of the file stops after the 
> single image was extracted and my resulting file has a length of 2:25 
> minutes. I want the audio file to be as long as the video.

`-frames` is set to terminate the output when fulfilled. Use trim within 
the filtergraph.

ffmpeg.exe -y -i "e:\01. Video.mp4" -filter:v 
"select=between(145\,prev_pts*TB\,pts*TB),trim=end_frame=1" -c:a copy 
-c:v mjpeg -q:v 2 -disposition:v:0 attached_pic "e:\01. Audio.m4a"

Regards,
Gyan


More information about the ffmpeg-user mailing list