avconv 명령줄은 HD 비디오를 SD로 다운샘플링하는 데 사용됩니다.

avconv 명령줄은 HD 비디오를 SD로 다운샘플링하는 데 사용됩니다.

다음 명령을 사용하여 TVheadend에서 녹화한 HD 비디오를 SD 크기로 다운샘플링하려고 합니다.

avconv -i infile.ts -map 0:v -map 0:a:0 -map 0:a:1 -c copy -c:v mpeg2video -r 25 -qscale:v 2 -s:v 720x576 -f mpeg outfile.mpeg

지금까지 avconv의 출력은 좋아 보입니다.

Input #0, mpegts, from 'infile.ts':
  Duration: 02:44:44.69, start: 68943.055278, bitrate: 7408 kb/s
  Program 9036 
    Metadata:
      service_provider: upc
    Stream #0.0[0x50]: Video: h264 (High), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    Stream #0.1[0x52](eng): Audio: mp2, 48000 Hz, stereo, s16p, 192 kb/s
    Stream #0.2[0x5b](ger): Audio: ac3, 48000 Hz, 5.1, fltp, 448 kb/s
  No Program
    Stream #0.3[0x6e]: Audio: mp1, 0 channels, s16p
[h264 @ 0x1bd9aa0] Ignoring NAL unit 9 during extradata parsing
[mpeg @ 0x1ab4d60] VBV buffer size not set, muxing may fail
Output #0, mpeg, to 'outfile.mpeg':
  Metadata:
    encoder         : Lavf54.20.4
    Stream #0.0: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
    Stream #0.1(eng): Audio: mp2, 48000 Hz, stereo, 192 kb/s
    Stream #0.2(ger): Audio: ac3, 48000 Hz, 5.1, 448 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mpeg2video)
  Stream #0:1 -> #0:1 (copy)
  Stream #0:2 -> #0:2 (copy)
Press ctrl-c to stop encoding

그리고 품질도 좋습니다. 하지만 VLC에서 재생하고 오디오 채널을 변경하려고 하면 트랙 목록이 계속 늘어나고 첫 번째 트랙만 사용할 수 있는 것을 볼 수 있습니다. 그리고 코드 정보에서 새 줄을 영구적으로 추가하는 목록을 볼 수 있으며 몇 초 후에 이미 다양한 형식(자막, 다양한 형식의 오디오 등)의 100개 이상의 스트림이 표시됩니다. VLC 코덱 정보 대화 상자

내가 어디로 잘못 가고 있는지 아는 사람이 있습니까?

버그로 인해 컨테이너 형식이 엉망이라고 말하고 싶지만 다른 버전에서 발생합니다. 우분투에서 ffmpeg 버전 2.7.6-0ubuntu0.15.10.1 및 avconv 버전 9.18-6:9.18-0ubuntu0.14.04를 사용해 보았습니다. 1 신뢰할 수 있습니다. 교묘하게 ffmpeg Invalid UE golomb code는 약 25프레임마다 추가로 인쇄합니다.

고쳐 쓰다:

다음은 테스트용 입력 파일의 간단한 시퀀스입니다.내부 file.ts

답변1

최신 옵션을 사용하여 더 간단한 명령을 사용해 보세요.

ffmpeg -i infile.ts -map v -map a -c:a copy -c:v libx264 -crf 18 -s 768x432 outfile.mkv

답변2

Xubuntu 16.04 xenial에서 다시 시도했는데 더 이상 문제가 발생하지 않았습니다.

최종 명령줄은 다음과 같습니다.

infile=something.ts
outfile=something.mpeg
quality=3.5  # best between small file and good quality
dims=720x576

ffmpeg -i "$infile" -map 0:v -map 0:a:0 -map 0:a:1 -f mpegts -s "$dims" -r 25 -vcodec mpeg2video -qscale:v $quality -acodec copy "$outfile"

결과 파일 크기는 원본 파일의 약 20%입니다. DVBcut은 열고 잘라낼 수 있습니다.

전체 스크립트를 게시했습니다.주요 요점

관련 정보