实际上我有一个录制音频和视频的设备。当开始录制时,视频文件也开始保存到硬盘中。
但如果设备在录制过程中不幸关机,视频文件就会损坏并出现错误:该文件不包含可播放的流
我正在使用Ubuntu
系统并使用录制视频ffmpeg
任何人都可以帮助我..!!!
我使用网络摄像头录制视频,使用蓝牙麦克风录制音频,使用 ffmpeg。以下是我用来将音频和视频录制存储在其他设备(硬盘)上的命令:
ffmpeg -loglevel warning -y -i /home/prakash/../../output/2013-10-07T22-39-05/right_cam.mp4 -i /home/prakash/../.. output/2013-10-07T22-39-05/left_cam.mp4 -filter_complex '[1:0] pad=108:28:5:2:black [padvidleft]; [0:0] setpts=PTS+0.8786787543577881/TB [right_cam_pts]; [padvidleft][right_cam_pts] overlay=544:0 [mergedvid] ; [1:2] channelsplit [ll][lr]; [ll][lr] amix [leftmix];
[1:3] channelsplit [rl][rr]; [rl][rr] amix [rightmix];
[leftmix][rightmix] amix [cam_all];
[1:4] channelsplit [btl][btr] ; [btl][btr] amix [btmix] ;
[btmix][cam_all] join [bt_mixcam]' -f mp4 -crf 20 -r 24 -pix_fmt yuv420p -vcodec libx264 -vprofile baseline -map [mergedvid] -map [bt_mixcam] -map 1:2 -map 1:3 -map 1:4 /home/prakash/../../output/combos/combo-2013-10-07T22-39-05_dgrt6546533w471567f880abf287a855c_1088x288.mp4
如果录制开始后我们在中途关闭录制设备,录制的视频和音频会保留在硬盘上,但无法播放。当我们尝试播放此录制内容时,vlc 会给出错误this files contains no playable stream
答案1
您应该尝试不同的输出容器格式,例如 MKV。
您的-f mp4
做法似乎是多余的(除非这是输出名称所在的脚本的一部分或变量的一部分),但如果您想继续使用这个选项,请将其更改为-f matroska
并为输出提供 mkv 扩展名而不是 mp4。
MP4 要求将附加信息写入文件,但这只能在编码正确完成后才能发生。如果编码未正确完成,则信息可能不存在,从而导致无法播放输出。
答案2
我找到了另一个很棒的解决方案。它不会以任何方式损坏音频和视频文件。您可以在 ffmpeg 中使用-f mpegts
而不是-f mp4