[英]Why ffmpeg can't convert this .ts to .mp4
我的 Synology NAS 上运行着 ffmpeg,我想用它来将 DVR-recorded.ts 视频转换成.mp4 格式。 我对这东西不是很了解,研究了也无济于事。
这是我运行的命令,结果是:
$ ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -i 'video.ts' -acodec -vcodec copy 'video.mp4'
ffmpeg version 4.1.8 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 8.5.0 (GCC)
configuration: --prefix=/usr --incdir='${prefix}/include/ffmpeg' --arch=i686 --target-os=linux --cross-prefix=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- --enable-cross-compile --enable-optimizations --enable-pic --enable-gpl --enable-shared --disable-static --disable-stripping --enable-version3 --enable-encoders --enable-pthreads --disable-protocols --disable-protocol=rtp --enable-protocol=file --enable-protocol=pipe --disable-muxer=image2 --disable-muxer=image2pipe --disable-swscale-alpha --disable-ffplay --disable-ffprobe --disable-doc --disable-devices --disable-bzlib --disable-altivec --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --disable-vaapi --disable-cuvid --disable-nvenc --disable-decoder=aac --disable-decoder=aac_fixed --disable-encoder=aac --disable-decoder=amrnb --disable-decoder=ac3 --disable-decoder=ac3_fixed --disable-encoder=zmbv --disable-encoder=dca --disable-decoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=eac3 --disable-decoder=eac3 --disable-encoder=truehd --disable-decoder=truehd --disable-encoder=hevc_vaapi --disable-decoder=hevc --disable-muxer=hevc --disable-demuxer=hevc --disable-parser=hevc --disable-bsf=hevc_mp4toannexb --x86asmexe=yasm --cc=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-wrap-gcc --enable-yasm --enable-libx264 --enable-encoder=libx264
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
[mpegts @ 0x5591c4feb4c0] Could not find codec parameters for stream 1 (Audio: aac ([15][0][0][0] / 0x000F), 0 channels, 199 kb/s): unspecified sample rate
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'video.ts':
Duration: 02:01:58.77, start: 1.405122, bitrate: 4094 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x101]: Audio: aac ([15][0][0][0] / 0x000F), 0 channels, 199 kb/s
[NULL @ 0x5591c6034980] Unable to find a suitable output format for 'copy'
copy: Invalid argument
这是 VLC 中显示的来自 video.ts 的信息:
可能我的 ffmpeg 包装中没有包含正确的编码器(从https://synocommunity.com/package/ffmpeg获得)。 这是我拥有的音频编码器。
A..... adpcm_adx SEGA CRI ADX ADPCM
A..... g722 G.722 ADPCM (codec adpcm_g722)
A..... g726 G.726 ADPCM (codec adpcm_g726)
A..... g726le G.726 little endian ADPCM ("right-justified") (codec adpcm_g726le)
A..... adpcm_ima_qt ADPCM IMA QuickTime
A..... adpcm_ima_wav ADPCM IMA WAV
A..... adpcm_ms ADPCM Microsoft
A..... adpcm_swf ADPCM Shockwave Flash
A..... adpcm_yamaha ADPCM Yamaha
A..... alac ALAC (Apple Lossless Audio Codec)
A..... libopencore_amrnb OpenCORE AMR-NB (Adaptive Multi-Rate Narrow-Band) (codec amr_nb)
A..... aptx aptX (Audio Processing Technology for Bluetooth)
A..... aptx_hd aptX HD (Audio Processing Technology for Bluetooth)
A..... comfortnoise RFC 3389 comfort noise generator
A..... flac FLAC (Free Lossless Audio Codec)
A..... g723_1 G.723.1
A..X.. mlp MLP (Meridian Lossless Packing)
A..... mp2 MP2 (MPEG audio layer 2)
A..... mp2fixed MP2 fixed point (MPEG audio layer 2) (codec mp2)
A..... libmp3lame libmp3lame MP3 (MPEG audio layer 3) (codec mp3)
A..... nellymoser Nellymoser Asao
A..X.. opus Opus
A..... pcm_alaw PCM A-law / G.711 A-law
A..... pcm_f32be PCM 32-bit floating point big-endian
A..... pcm_f32le PCM 32-bit floating point little-endian
A..... pcm_f64be PCM 64-bit floating point big-endian
A..... pcm_f64le PCM 64-bit floating point little-endian
A..... pcm_mulaw PCM mu-law / G.711 mu-law
A..... pcm_s16be PCM signed 16-bit big-endian
A..... pcm_s16be_planar PCM signed 16-bit big-endian planar
A..... pcm_s16le PCM signed 16-bit little-endian
A..... pcm_s16le_planar PCM signed 16-bit little-endian planar
A..... pcm_s24be PCM signed 24-bit big-endian
A..... pcm_s24daud PCM D-Cinema audio signed 24-bit
A..... pcm_s24le PCM signed 24-bit little-endian
A..... pcm_s24le_planar PCM signed 24-bit little-endian planar
A..... pcm_s32be PCM signed 32-bit big-endian
A..... pcm_s32le PCM signed 32-bit little-endian
A..... pcm_s32le_planar PCM signed 32-bit little-endian planar
A..... pcm_s64be PCM signed 64-bit big-endian
A..... pcm_s64le PCM signed 64-bit little-endian
A..... pcm_s8 PCM signed 8-bit
A..... pcm_s8_planar PCM signed 8-bit planar
A..... pcm_u16be PCM unsigned 16-bit big-endian
A..... pcm_u16le PCM unsigned 16-bit little-endian
A..... pcm_u24be PCM unsigned 24-bit big-endian
A..... pcm_u24le PCM unsigned 24-bit little-endian
A..... pcm_u32be PCM unsigned 32-bit big-endian
A..... pcm_u32le PCM unsigned 32-bit little-endian
A..... pcm_u8 PCM unsigned 8-bit
A..... pcm_vidc PCM Archimedes VIDC
A..... real_144 RealAudio 1.0 (14.4K) (codec ra_144)
A..... roq_dpcm id RoQ DPCM
A..X.. s302m SMPTE 302M
A..... sbc SBC (low-complexity subband codec)
A..X.. sonic Sonic
A..X.. sonicls Sonic lossless
A..... tta TTA (True Audio)
A..X.. vorbis Vorbis
A..... wavpack WavPack
A..... wmav1 Windows Media Audio 1
A..... wmav2 Windows Media Audio 2
我要回答我自己的问题,因为我终于想通了,并认为这可能对将来的其他人有用。
似乎来自https://synocommunity.com/package/ffmpeg的 Synology ffmpeg package 已使用以下标志编译:
--disable-decoder=aac_fixed --disable-encoder=aac
现在我不知道为什么它是这样编译的,但 .net 的结果是它似乎无法解码 AAC 音频,这是这个特定视频文件包含的内容。
我找到了一个 docker 图像并运行它,它工作正常。 docker 图像具有:
--enable-libfdk_aac
这似乎改变了世界!
您的命令不包含音频编解码器: -acodec -vcodec copy $outputfile
被解释为“使用 -vcodec 作为音频编解码器,并将 copy 和 $outputfile 用作 output 文件”。 你想使用-acodec copy -vcodec copy $outputfile
,所以它只将编解码器和输出复制到文件$outputfile
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.