Ffmpeg
DAV 到 AVI 轉換失敗
我想使用以下命令將 DAV 格式的影片剪輯從閉路電視錄像機轉換為 AVI(將測試 - 1.dav 轉換為測試 - 1.avi)
ffmpeg -y -i test\ -\ 1.dav -vcodec copy -movflags +faststart test\ -\ 1.avi
它在帶有 ffmpeg 2.4.13 版的 x86_64 Linux 和帶有 ffmpeg 2.0.2 版的 Synology 上正常工作。轉換後的文件可在 Windows、Android、iPad 和 Linux 上完全播放。但是當我嘗試在配備最新版本軟體的 Synology 上轉換它時,它會失敗(ffmpeg ver 2.7.1)。下面是轉換過程的輸出:
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.9.3 (crosstool-NG 1.20.0) 20150311 (prerelease) configuration: --prefix=/usr --incdir='${prefix}/include/ffmpeg' --arch=arm --target-os=linux --cross-prefix=/usr/local/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --enable-version3 --enable-nonfree --enable-libfaac --enable-encoders --enable-pthreads --disable-bzlib --disable-protocol=rtp --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffserver --disable-ffplay --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-vaapi --disable-decoder=amrnb --disable-encoder=zmbv --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-ccache-gcc libavutil 54. 27.100 / 54. 27.100 libavcodec 56. 41.100 / 56. 41.100 libavformat 56. 36.100 / 56. 36.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 16.101 / 5. 16.101 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.100 / 1. 2.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, h264, from 'test - 1.dav': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Main), yuv420p, 704x576, 25 fps, 25 tbr, 1200k tbn, 50 tbc Output #0, avi, to 'test - 1.avi': Metadata: ISFT : Lavf56.36.100 Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 704x576, q=2-31, 25 fps, 25 tbr, 50 tbn, 50 tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help [avi @ 0xb0ff0] H.264 bitstream malformed, no startcode found, use the video bitstream filter 'h264_mp4toannexb' to fix it ('-bsf:v h264_mp4toannexb' option with ffmpeg) av_interleaved_write_frame(): Invalid data found when processing input frame= 1 fps=0.0 q=-1.0 Lsize= 6kB time=00:00:00.02 bitrate=2300.0kbits/s video:40kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Conversion failed!
不得不提一下,在每種情況下,我都使用相同的輸入文件和相同的 ffmpeg 語法進行轉換。唯一的區別是 ffmpeg 的版本。最奇怪的是,最新版本執行錯誤。我在做什麼錯誤/錯誤?任何的想法?
較新的
ffmpeg
版本拒絕將沒有起始碼的 H.264 編碼影片復用到 AVI。您應該-bsf:v h264_mp4toannexb
按照ffmpeg
輸出中的說明使用。這不會重新編碼您的影片。