使用ffmpeg修复本地视频文件(mp4)播放时进度条无法拖动的问题

右击视频文件查看属性,在详细信息页查看视频时长,显示为空,推测进度条无法拖动的原因是时间轴损坏

于是采用了以下解决办法

  1. 将视频分离出来,命名为video.mp4
    ffmpeg -i 视频名称.mp4 -map 0:v -vcodec copy -bsf:v h264_mp4toannexb video.mp4

  2. 将音频分离出来,命名为audio.wav
    ffmpeg -i 视频名称.mp4 -vn audio.wav

  3. 重新混合视频和音频,输出为新的视频文件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

posted on 2024-10-10 16:06  元悕  阅读(448)  评论(0编辑  收藏  举报

导航