미디어로 작업하려면 종종 미디어 파일의 특성을 변경해야 하는데, 더 높은 해상도를 제공합니다. 간단한 시작 방법을 찾으면 꽤 겁나기 때문입니다. 이 페이지에서는 사용되는 도구와 빠르게 설치할 수 있습니다
먼저 두 가지 일반적인 명령줄 미디어 유틸리티의 기본적인 사용법을 설명합니다. Shaka Packager와 FFmpeg를 활용하시면 도구를 빠르게 설치할 수 있도록 도와드립니다. 두 가지 애플리케이션을 다루는 이유 둘 다 그 자체로 강력하고 유용하지만, 웹용 미디어를 준비하는 데 필요한 모든 것을 제공하지는 않습니다. 또한 미디어 변환 및 미디어 암호화 이 두 가지 애플리케이션에 대한 더 일반적인 작업을 보여주는 페이지.
이러한 응용 프로그램이 파일 조작 작업에 사용할 수 있는 유일한 옵션은 아니며 가장 일반적이고 강력한 기능입니다. 다른 옵션으로는 GUI가 있습니다. 애플리케이션 Miro, HandBrake, VLC를 지원합니다. 또한 인코딩/트랜스코딩도 Zencoder, Amazon Elastic Encoder, Google Transcoder API와 같은 서비스에 적용됩니다.
샤카 패키지러
Shaka Packager는 무료 미디어 패키징 SDK입니다. 미디어 플레이어를 사용한 경우 파일을 준비할 때 Shaka Packager를 사용합니다. 그것은 가장 일반적인 두 가지 동영상 스트리밍 프로토콜인 동적 HTTP 적응형 스트리밍 (DASH) 또는 HTTP 라이브 스트리밍 (HLS) 샤카 Packager에서 주요 보안 기능 지원: 공통 암호화 및 Widevine 디지털 있습니다. 라이브 스트리밍과 VOD도 처리할 수 있습니다.
패키지에 명시된 내용에도 불구하고 이 유틸리티는 C++ 이상의 있습니다. 미디어 소프트웨어 빌드를 위한 라이브러리로도 사용할 수도 있고 웹 재생을 위한 미디어 파일을 준비하는 명령줄 유틸리티입니다. 바로 후자의 용량을 제공합니다 실제로 웹 미디어 제작자의 경우 Shaka Packager는 비용을 지불하지 않고 일부 작업을 수행할 수 있는 유일한 방법임 비싼 상용 애플리케이션입니다.
다음은 Shaka Packager 명령어의 기본 패턴입니다.
packager stream_descriptor [stream_descriptor-2 [stream_descriptor-n]] [flags]
packager -help
을 입력하면 제대로 표시되지 않습니다. 이 예는
보다 쉽게 추론할 수 있으며, 이는 인간의 머릿속에 있는
Shaka Packager 문서 여러 개의 stream_descriptor
가 있습니다.
인코더에 전달합니다. YouTube에서 보여주지는 않지만 동영상을 조작할 수 있습니다.
단일 명령으로 파일의 오디오 스트림을 개별적으로 관리합니다.
이 기본 패턴을 파일 특성을 표시하는 간단한 사용과 비교해 보세요. 예에서는 동일한 부분을 정렬했습니다.
packager stream_descriptor [stream_descriptor-n] [flags]
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
미디어 파일 기본사항에 설명된 특성을 찾아보세요. 몇 가지를 눈치채셨을 것입니다. 높이와 너비가 풀 HD의 경우 정확하며 오디오 및 동영상 코덱은 컨테이너 유형에 선호되는 코덱 중 하나입니다. 오디오용 AAC, 동영상용 H264입니다. 스트림은 있습니다. 이들은 오디오와 비디오를 조작하는 작업에 유용합니다. 별도로 관리할 수 있습니다
위 출력에는 비트 전송률이 표시되지 않습니다. 빠진 점에도 불구하고, 이 출력은 읽기가 더 쉬우므로 가능한 한 언제든지 사용합니다. 필요할 때 Shaka Packager가 얻을 수 없는 정보(예: 비트 전송률)에는 FFmpeg를 사용합니다.
FFmpeg
FFmpeg는 녹화, 변환, 스트리밍을 위한 무료 애플리케이션이기도 합니다. 미디어 파일마다 다를 수 있습니다. 그 성능은 Shaka Packager보다 더 좋거나 나쁘지 않습니다. 단지 다르기만 할 뿐입니다.
FFmpeg 명령어의 기본 패턴은 다음과 같습니다.
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
Shaka Packager와 마찬가지로 이 애플리케이션은 여러 스트림을 처리할 수 있습니다. 이 중 일부는 옵션은 여러 위치에서 사용되며 파일 출력을 다르게 조작합니다. 명령의 위치에 따라 달라집니다. 다음에 유의하세요 Stack Overflow에 대한 FFmpeg 질문 및 유사 사이트를 살펴보세요.
기본 패턴을 파일 표시 예제와 다시 비교해 보겠습니다. 특성에 따라 다릅니다
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
ffmpeg -i glocken.mp4
요청한 정보 외에도 오류 메시지도 출력됩니다. 아래 예와 같이 지정할 수 있습니다. 기술적으로 올바르지 않기 때문입니다. 있습니다. Google에서 중요한 정보를 표시하기 때문에 Google에서 이 정보를 사용합니다.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'glocken.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.17.100
Duration: 00:01:47.53, start: 0.000000, bitrate: 10715 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080, 10579 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, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
At least one output file must be specified
Docker로 애플리케이션 설치
우리의 명령을 따라 해보려면 필요한 도구를 수동으로 만들거나, 쉬운 방법으로 Docker를 사용할 수 있습니다. 이때 Docker를 사용하면 많은 시간을 절약할 수 있습니다. 그 외에도 에서 빠르게 설정할 수 있도록 도움말을 제공했습니다.
먼저 컴퓨터의 어딘가에
media-tools
이라는 새 디렉터리를 만듭니다. 원하는 이름을 사용할 수 있습니다. 다음 안내를 참고하세요.media-tools
을 디렉터리 이름으로 사용한다고 가정합니다.media-tools
내부에docker
및media
디렉터리를 만듭니다. 이렇게 하면media
디렉터리가 빌드 컨텍스트에서 제외됩니다. 중요한 일인데요.media
은 작업을 실행할 파일이 저장되는 곳입니다. 일부는 꽤 클 수 있습니다.Dockerfile
를 이미지를 다시 빌드하면media-tools
로 인해 이미지 빌드 속도가 느려집니다. 설치된 버전을 변경하기 위해서입니다./media-tools/docker/Dockerfile
를 만들고 다음 빌드 안내를 추가합니다.FROM google/shaka-packager:release-v2.4.3 as packager FROM jrottenberg/ffmpeg:4.3.2-alpine38 COPY --from=packager /usr/bin /usr/bin ENTRYPOINT ["sh"]
이미지를 빌드합니다.
docker build -t media-tools ./docker
이미지를 대화형 셸로 실행합니다. Linux의 경우:
docker run -w /media -v ${PWD}/media:/media -it --rm media-tools /media #
Windows:
docker run -w /media -v %cd%/media:/media -it --rm media-tools /media #
이미지를 실행하는 동안 FFmpeg 및 Shaka Packager의 버전을 모두 확인할 수 있습니다.
ffmpeg -version
를 실행하여 모든 것이 성공했는지 검증하고
packager --version
입니다. 출력은 다음과 같습니다.
/media # ffmpeg -version
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 6.4.0 (Alpine 6.4.0)
configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
/media # packager --version
packager version v2.4.3-dd9870075f-release
이제 Shaka Packager와 FFmpeg를 직접 사용해 보았으므로 기본 개념을 학습한 다음 미디어 스트리밍 기본사항으로 이동합니다.