Все протестировано на Sony PSP 3008 прошивка 6.20
FFMpeg
ffmpeg из RPMFusion собран без libfaac. Соотвественно нужно пересобрать пакет. Для нормальной пересборки в Fedora 14, кроме пакетов из BuildRequires нужно поставить пакет libstdc++-static. Команда для пересборки:
Код: Выделить всё
$ rpmbuild -ba ffmpeg.spec --with faac
Команда:
Код: Выделить всё
$ ffmpeg -i /path/to/InputVideo.avi -f psp -r 29.97 -b 564k -ar 24000 -ab 64k -s 368x208 OutputVideo.mp4
дает на выходе видео которое работает на PSP, кодированное Mpeg4 кодеком, с ограничением Ширина*Высота < 76800, иначе PSP пишет: "Не поддерживаемые данные".
Полноценный x264-файл можно сделать командой:
Код: Выделить всё
$ ffmpeg -i INPUTFILE -ac 2 -ar 48000 -acodec libfaac -ab 128k -r 25 -s 480x272 -vcodec libx264 -vpre slower -vpre main -level 30 -refs 3 -flags2 -bpyramid -b 512k -maxrate 10M -bufsize 10M -threads 0 -timestamp now -metadata title="TITLE OF MOVIE" -aspect 480:272 OUTPUT.mp4
двухпроходный вариант:
Код: Выделить всё
$ ffmpeg -i INPUTFILE -an -pass 1 -r 25 -s 480x272 -vcodec libx264 -vpre slower_firstpass -vpre main -level 30 -refs 3 -flags2 -bpyramid -b 512k -maxrate 10M -bufsize 10M -threads 0 -aspect 480:272 OUTPUT.mp4 && ffmpeg -i INPUTFILE -ac 2 -ar 48000 -acodec libfaac -ab 128k -pass 2 -r 25 -s 480x272 -vcodec libx264 -vpre slower -vpre main -level 30 -refs 3 -flags2 -bpyramid -b 512k -maxrate 10M -bufsize 10M -threads 0 -timestamp now -metadata title="TITLE OF MOVIE" -aspect 480:272 OUTPUT.mp4
Весь нюанс - в параметрах -refs 3 -flags2 -bpyramid которые не соотвествуют профилю H.264/MPEG-4 AVC Main Profile Level 3 заявленному Sony как поддерживаемый.
Допустимые разрешения - любые кратные 16-ти в плоть до 480x272. После 480x272 возможны только 3 разрешения: 720x480, 640x480 и 720x576 (предусмотрены для вывода на телевизор).
Необходимость параметра -f psp мной не выявлена.
HandBrake
HandBrake - http://handbrake.fr/
Пресет для HandBrake - PSP.plist (проверено на HandBrake-0.9.5):
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>AudioList</key>
<array>
<dict>
<key>AudioBitrate</key>
<string>128</string>
<key>AudioEncoder</key>
<string>AAC (faac)</string>
<key>AudioEncoderActual</key>
<string>faac</string>
<key>AudioMixdown</key>
<string>Stereo</string>
<key>AudioSamplerate</key>
<string>48</string>
<key>AudioTrack</key>
<integer>1</integer>
<key>AudioTrackDRCSlider</key>
<real>0</real>
<key>AudioTrackDescription</key>
<string>Unknown</string>
</dict>
</array>
<key>ChapterMarkers</key>
<false />
<key>Default</key>
<false />
<key>FileFormat</key>
<string>MP4 file</string>
<key>Folder</key>
<false />
<key>Mp4HttpOptimize</key>
<false />
<key>Mp4LargeFile</key>
<false />
<key>Mp4iPodCompatible</key>
<false />
<key>PictureAutoCrop</key>
<integer>1</integer>
<key>PictureBottomCrop</key>
<integer>0</integer>
<key>PictureDeblock</key>
<integer>4</integer>
<key>PictureDecomb</key>
<integer>0</integer>
<key>PictureDecombCustom</key>
<string></string>
<key>PictureDecombDeinterlace</key>
<true />
<key>PictureDeinterlace</key>
<integer>0</integer>
<key>PictureDeinterlaceCustom</key>
<string></string>
<key>PictureDenoise</key>
<integer>0</integer>
<key>PictureDenoiseCustom</key>
<string></string>
<key>PictureDetelecine</key>
<integer>0</integer>
<key>PictureDetelecineCustom</key>
<string></string>
<key>PictureHeight</key>
<integer>0</integer>
<key>PictureKeepRatio</key>
<true />
<key>PictureLeftCrop</key>
<integer>0</integer>
<key>PictureLooseCrop</key>
<true />
<key>PictureModulus</key>
<string>16</string>
<key>PicturePAR</key>
<string>0</string>
<key>PicturePARHeight</key>
<integer>1</integer>
<key>PicturePARWidth</key>
<integer>1</integer>
<key>PictureRightCrop</key>
<integer>0</integer>
<key>PictureTopCrop</key>
<integer>0</integer>
<key>PictureWidth</key>
<integer>480</integer>
<key>PresetBuildNumber</key>
<integer>2011010401</integer>
<key>PresetDescription</key>
<string>HandBrake's normal, full resolution settings for Sony PSP devices.</string>
<key>PresetName</key>
<string>Sony PSP</string>
<key>SubtitleList</key>
<array>
</array>
<key>Type</key>
<integer>1</integer>
<key>UsesPictureFilters</key>
<integer>1</integer>
<key>UsesPictureSettings</key>
<integer>1</integer>
<key>VideoAvgBitrate</key>
<integer>340</integer>
<key>VideoEncoder</key>
<string>H.264 (x264)</string>
<key>VideoFramerate</key>
<string>25 (PAL Film/Video)</string>
<key>VideoFrameratePFR</key>
<false />
<key>VideoGrayScale</key>
<false />
<key>VideoQualitySlider</key>
<real>20</real>
<key>VideoQualityType</key>
<integer>1</integer>
<key>VideoTargetSize</key>
<integer>300</integer>
<key>VideoTurboTwoPass</key>
<true />
<key>VideoTwoPass</key>
<true />
<key>anamorphic</key>
<true />
<key>par_height</key>
<integer>0</integer>
<key>par_width</key>
<integer>0</integer>
<key>x264Option</key>
<string>subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=2:me=umh:b-pyramid=none:partitions=none:direct=temporal:weightp=0:b-adapt=2</string>
</dict>
</array>
</plist>
Gstreamer
Gstreamer тоже кодирует проигрываемое на PSP-3000 видео. В этой связи пропатчил Arista (фронтэнд использующий Gstreamer, мультипоточный - кодирует очень быстро).
Thumbnail
Чтобы список файлов на PSP выглядел красиво и информативно, нужен Thumbnail. В списке видеофайлов, вместо белых квадратиков будут показаны картинки из фильма.
Ширина и высота картинки - 160x120, формат дефолтный JPEG, расширение .THM, название файла точно такое же как название видеофайла (пример: Sintel.mp4 Sintel.THM). Видеофайл и Thumbnail должны лежать в директории /VIDEO.
Самое удобное - это сделать скриншот с понравившегося стоп-кадра фильма. Отредактировать в Gimp (откадрировать и смасштабировать до 160x120). Затем переименовать NAMEOFFILE.jpg в NAMEOFFILE.THM
Заметки по ходу изучения вопроса:
Ограничение по времени воспроизведения: 6 часов и 30 минут:
(User's guide (System Software Version 6.10)) писал(а):You can play files of the following types on the PSP™ system.
Memory Stick™ Video Format
- MPEG-4 Simple Profile (AAC)
- H.264/MPEG-4 AVC Main Profile (CABAC) (AAC) and Baseline Profile (AAC)
MP4
- MPEG-4 Simple Profile (AAC)
- H.264/MPEG-4 AVC Main Profile (CABAC) (AAC) and Baseline Profile (AAC)
AVI
- Motion JPEG (Linear PCM)
- Motion JPEG (μ-Law)
Hints
Depending on the data type, some data items cannot be played.
The system cannot play video data containing video recorded for longer than approximately 6 hours and 30 minutes.
Some files distributed over the Internet may have playback limitations. For details, contact the content provider.
видео:
- - PSP-3001 Codec: H.264/MPEG-4 AVC Main Profile Level 3 [8 (PDF)], но имеющий свои особенности - ref=3, b-pyramid=none, weightp=0, weightb=no [6]
- x264 работает только на консолях с прошивкой выше 2.00 (до 2.00 работал только Mpeg-4)
- Отсутствие CAVLC (Context-adaptive variable-length coding) (the PSP is abble to read CAVLC h264 video stream but only for files coded in Level 1.3 and with a resolution of 320x240) [9].
- Битовый поток: <= 1500кбит/с для 3000-й серии и <= 768кбит/с для 1000-й серии
- Кадров в секунду: 14.985 и 29.97 [4] (Хотя файлы с торpентов имеют 25fps и нормально работают на 6.20)
- Ширина и высота видео должны быть кратны 16.
- Произведение ширина * высота <= 64000 [1] или <=76800 [2],[3],[4] или для новых прошивок (оффициальная 5.00 и выше [6]) ширина<=480, высота<=272. Оптимальные разрешения 320x240, 368x208, 400x192 [4], 480x240 [6]. Также возможны 640x480 и 720x480 [6].
Звук:
- - Частота дискретизации звука 24кГц для MPEG-4 или 48кГц для H.264.
- Профиль Low Complexity (LC-AAC /MPEG-4) [6]
- Битрейт: оптимальный 128kbps, максимальный 768kbps [6].
Ссылки по теме:
1. Mencoder: Кодирование в Sony PSP видео формат
2. Bug 583189 - [mp4mux] add PSP hack mode:Comment 9
3. ffmpeg: How do I encode videos which play on the PSP?
4. PQDVD:PSP Video Guide
5. libx264-98 Update: post #3
6. Robert Swain: PSP video guide
7. Install and use the latest FFmpeg and x264
8. Sony PSP-3001: Specifications (PDF)
9. CAVLC vs CABAC for IPOD vs PSP
10. HandBrake: PSP - Need Help With Settings
11. Robert Swain: x264 to FFmpeg option mapping
12. xucker.jp: ffmpeg commands: PSP
13. Corley Kinnane: psp-encode/