流傳的TS格式的影片雖然都可能是通過H.264和AAC對影像和聲音壓縮,一般來說在正常播放器播放沒有大問題。然而,著名的VLC不知何故是不能快進(Fast forward)TS檔的,所以還是FFmpeg轉成通用的MP4比較方便。
影像是H.264,在-c:v
可以直接copy
解決。
但音頻的AAC,用-c:a copy
就會出現錯誤:
Malformed AAC bitstream detected: use the audio bitstream filter 'aac_adtstoasc' to fix it ('-bsf:a aac_adtstoasc' option with ffmpeg) av_interleaved_write_frame(): Operation not permitted
在大神林立、牆裡面的CSDN上找到解說:「音訊資料是AAC流,在解碼時需要ADTS(Audio Data Transport Stream)頭部,不管是容器封裝還是串流媒體,沒有這個,一般都是不能播放的。」
簡單說即是轉碼時出錯其實是FFmpeg根本讀不了那條音頻,複製個屁。
所以就要在直接複製copy後面這個-bsf:a aac_adtstoasc
,先讓FFmpeg去讀取那個音頻才複製。
正確的指令該是這樣:
ffmpeg -i Video-644.ts -c:v copy -c:a copy -bsf:a aac_adtstoasc Video-644.mp4
※解決方法出處:https://blog.csdn.net/qq_33349051/article/details/104061630