미디어 전환

Derek Herman
Derek Herman
Joe Medley
Joe Medley

이 기사에서는 변환과 변환에 사용되는 몇 가지 일반적인 명령을 배웁니다. 조작하는 것을 방지할 수 있습니다. 비록 우리가 모든 프로시저에 대해 동일한 연산을 표시함(모든 연산이 가능하지는 않음) 사용할 수 있습니다

대부분의 경우 표시되는 명령어는 하나의 명령어로 결합될 수 있습니다. 실제로 사용될 때 사용됩니다. 예를 들어 출력 파일의 비트 전송률을 파일 변환 등이 있습니다 이 도움말에서는 이러한 작업을 별도의 것으로 표시하는 경우가 많습니다. 명확하게 하기 위해 명령어를 사용합니다

변환은 다음 애플리케이션으로 수행됩니다.

디스플레이 특성

Shaka Packager와 FFmpeg를 모두 사용하여 미디어 콘텐츠를 검사할 수 있음 스트림의 특성을 디스플레이할 수 있습니다. 하지만 둘 다 동일한 미디어에 대해 다른 출력을 가져올 수 있습니다

Shaka Packager를 사용한 특성

packager input=glocken.mp4 --dump_stream_info

출력 형식은 다음과 같습니다.

File "glocken.mp4":
Found 2 stream(s).
Stream [0] type: Video
 codec_string: avc1.640028
 time_scale: 30000
 duration: 300300 (10.0 seconds)
 is_encrypted: false
 codec: H264
 width: 1920
 height: 1080
 pixel_aspect_ratio: 1:1
 trick_play_factor: 0
 nalu_length_size: 4

Stream [1] type: Audio
 codec_string: mp4a.40.2
 time_scale: 48000
 duration: 481280 (10.0 seconds)
 is_encrypted: false
 codec: AAC
 sample_bits: 16
 num_channels: 2
 sampling_frequency: 48000
 language: eng
 seek_preroll_ns: 20833

FFmpeg를 사용하는 특성

ffmpeg -i glocken.mp4

출력 형식은 다음과 같습니다.

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'glocken.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:00:10.03, start: 0.000000, bitrate: 8063 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080, 7939 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
At least one output file must be specified
드림

오디오 및 동영상 스트림 역다중화 (분리)

Shaka Packager는 파일을 변환할 때 역다중화가 필요합니다. 이 역시 필수 항목입니다. 몇 가지 권장사항이 있습니다

샤카 패키저 디멀티싱

MP4

packager input=myvideo.mp4,stream=video,output=myvideo_video.mp4
packager input=myvideo.mp4,stream=audio,output=myvideo_audio.m4a

또는

packager \
  input=myvideo.mp4,stream=video,output=myvideo_video.mp4 \
  input=myvideo.mp4,stream=audio,output=myvideo_audio.m4a

WebM

packager \
  input=myvideo.webm,stream=video,output=myvideo_video.webm \
  input=myvideo.webm,stream=audio,output=myvideo_audio.webm

FFmpeg 역다중화

MP4

ffmpeg -i myvideo.mp4 -vcodec copy -an myvideo_video.mp4
ffmpeg -i myvideo.mp4 -acodec copy -vn myvideo_audio.m4a

WebM

ffmpeg -i myvideo.webm -vcodec copy -an myvideo_video.webm
ffmpeg -i myvideo.webm -acodec copy -vn myvideo_audio.webm

오디오 및 동영상 스트림 리믹스 (결합)

경우에 따라 오디오와 동영상을 하나로 다시 결합해야 할 수 있습니다. 있습니다 특히 미디어 프레임워크를 사용하지 않을 때 유용합니다. FFmpeg에서 일어난 일이에요 Shaka Packager가 현재 지원하지 않는 기능입니다.

ffmpeg -i myvideo_video.webm -i myvideo_audio.webm -c copy myvideo.webm

특성 변경

비트 전송률

FFmpeg의 경우 .mp4 또는 .webm로 변환하는 동안 이 작업을 할 수 있습니다.

ffmpeg -i myvideo.mov -b:v 350K myvideo.mp4
ffmpeg -i myvideo.mov -vf setsar=1:1 -b:v 350K myvideo.webm

크기 (해상도)

ffmpeg -i myvideo.webm -s 1920x1080 myvideo_1920x1080.webm

파일 형식

Shaka Packager는 .mov 파일을 처리할 수 없으므로 변환에 사용할 수 없음 할 수 있습니다.

.mov에서 .mp4(으)로

ffmpeg -i myvideo.mov myvideo.mp4

.mov에서 .webm(으)로

ffmpeg -i myvideo.mov myvideo.webm

오디오와 동영상 동기화

재생 중에 오디오와 동영상이 동기화되도록 하려면 키프레임을 삽입하세요.

ffmpeg -i myvideo.mp4 -keyint_min 150 -g 150 -f webm -vf setsar=1:1 out.webm
드림

MP4/H.264

ffmpeg -i myvideo.mp4 -c:v libx264 -c:a copy myvideo.mp4

MP4용 오디오

ffmpeg -i myvideo.mp4 -c:v copy -c:a aac myvideo.mp4

WebM/VP9

ffmpeg -i myvideo.webm -v:c libvpx-vp9 -v:a copy myvideo.webm

WebM용 오디오

ffmpeg -i myvideo.webm -v:c copy -v:a libvorbis myvideo.webm
ffmpeg -i myvideo.webm -v:c copy -v:a libopus myvideo.webm

VOD 및 라이브 스트리밍

이번 시간에는 시연할 두 가지 유형의 스트리밍 프로토콜이 있습니다. 도움말을 참조하세요. 첫 번째는 동적 적응형 스트리밍 (DASH)으로, 적응형 비트 전송률 스트리밍 기술 및 웹 표준 기반 메서드 주문형 동영상도 제공합니다 두 번째는 HTTP 실시간 스트리밍 (HLS)이며 Apple의 표준: 웹용 라이브 스트리밍 및 VOD

DASH/MPD

이 예에서는 MPD (Media Presentation Description) 출력 파일을 생성합니다. 오디오 및 동영상 스트림에서 추출해야 합니다.

packager \
  input=myvideo.mp4,stream=audio,output=myvideo_audio.mp4 \
  input=myvideo.mp4,stream=video,output=myvideo_video.mp4 \
  --mpd_output myvideo_vod.mpd

HLS

이 예에서는 오디오 및 동영상 스트림에서 M3U8 출력 파일을 생성합니다. UTF-8로 인코딩된 멀티미디어 재생목록입니다.

ffmpeg -i myvideo.mp4 -c:a copy -b:v 8M -c:v copy -f hls \
  -hls_time 10 -hls_list_size 0 myvideo.m3u8

또는,

packager \
  'input=myvideo.mp4,stream=video,segment_template=output$Number$.ts,playlist_name=video_playlist.m3u8' \
  'input=myvideo.mp4,stream=audio,segment_template=output_audio$Number$.ts,playlist_name=audio_playlist.m3u8,hls_group_id=audio,hls_name=ENGLISH' \
  --hls_master_playlist_output="master_playlist.m3u8"

이제 파일 변환 방법을 잘 파악했으므로 이 글에서 배운 내용을 복습하고 다음은 미디어 암호화입니다.