右击视频文件查看属性,在详细信息页查看视频时长,显示为空,推测进度条无法拖动的原因是时间轴损坏
于是采用了以下解决办法
-
将视频分离出来,命名为video.mp4
ffmpeg -i 视频名称.mp4 -map 0:v -vcodec copy -bsf:v h264_mp4toannexb video.mp4
-
将音频分离出来,命名为audio.wav
ffmpeg -i 视频名称.mp4 -vn audio.wav
-
重新混合视频和音频,输出为新的视频文件output.mp4
ffmpeg -i video.mp4 -i audio.wav -c copy output.mp4
第三步发生了以下报错:
Could not find tag for codec pcm_s16le in stream #1, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:1 --
这个错误表明将一个特定的编码格式pcm_s16le放入一个不支持该编码格式的容器格式中。
经过查询得知问题大概率在于MP4容器通常不支持pcm_s16le这种原始的PCM音频编码。
因此第三步更改为先将WAV音频转码为MP4容器支持的音频编码格式AAC再混合视频和音频
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
综上所述,依次运行以下语句,将生成一个进度条可以正常拖动的output.mp4文件
> ffmpeg -i 视频名称.mp4 -map 0:v -vcodec copy -bsf:v h264_mp4toannexb video.mp4
> ffmpeg -i 视频名称.mp4 -vn audio.wav
> ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
标签:ffmpeg,进度条,mp4,video,wav,视频文件,output,audio
From: https://www.cnblogs.com/spiropentadiene/p/18456553